MyGit

v1.108.0

juspay/hyperswitch

版本发布时间: 2024-05-06 18:14:11

juspay/hyperswitch最新发布版本:v1.111.0(2024-08-22 23:24:38)

1.108.0 (2024-05-03)

Docker Release

v1.108.0 (with KMS)

v1.108.0-standalone (without KMS)

Features

Refactors/Bug Fixes

Compatibility

This version of the Hyperswitch App server is compatible with the following versions of other components:

Database Migrations

Click to view database migrations
-- DB Difference BETWEEN v1.107.0 AND v1.108.0
CREATE TABLE IF NOT EXISTS authentication (
    authentication_id VARCHAR(64) NOT NULL,
    merchant_id VARCHAR(64) NOT NULL,
    authentication_connector VARCHAR(64) NOT NULL,
    connector_authentication_id VARCHAR(64),
    authentication_data JSONB,
    payment_method_id VARCHAR(64) NOT NULL,
    authentication_type VARCHAR(64),
    authentication_status VARCHAR(64) NOT NULL,
    authentication_lifecycle_status VARCHAR(64) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT now()::TIMESTAMP,
    modified_at TIMESTAMP NOT NULL DEFAULT now()::TIMESTAMP,
    error_message VARCHAR(64),
    error_code VARCHAR(64),
    PRIMARY KEY (authentication_id)
);

-- Your SQL goes here ALTER TABLE payment_attempt ADD COLUMN IF NOT EXISTS external_three_ds_authentication_attempted BOOLEAN DEFAULT FALSE, ADD COLUMN IF NOT EXISTS authentication_connector VARCHAR(64), ADD COLUMN IF NOT EXISTS authentication_id VARCHAR(64);

-- Your SQL goes here ALTER TABLE payment_intent ADD COLUMN IF NOT EXISTS request_external_three_ds_authentication BOOLEAN;

-- Your SQL goes here ALTER TYPE "ConnectorType" ADD VALUE IF NOT EXISTS 'authentication_processor';

-- Your SQL goes here ALTER TABLE authentication ADD COLUMN IF NOT EXISTS connector_metadata JSONB DEFAULT NULL;

-- Your SQL goes here ALTER TABLE payment_attempt ADD COLUMN IF NOT EXISTS payment_method_billing_address_id VARCHAR(64);

-- Your SQL goes here ALTER TYPE "PaymentSource" ADD VALUE 'webhook';

ALTER TYPE "PaymentSource" ADD VALUE 'external_authenticator';

ALTER TABLE PAYOUTS ADD COLUMN profile_id VARCHAR(64);

UPDATE PAYOUTS AS PO SET profile_id = POA.profile_id FROM PAYOUT_ATTEMPT AS POA WHERE PO.payout_id = POA.payout_id;

ALTER TABLE PAYOUTS ALTER COLUMN profile_id SET NOT NULL;

ALTER TABLE PAYOUTS ADD COLUMN status "PayoutStatus";

UPDATE PAYOUTS AS PO SET status = POA.status FROM PAYOUT_ATTEMPT AS POA WHERE PO.payout_id = POA.payout_id;

ALTER TABLE PAYOUTS ALTER COLUMN status SET NOT NULL;

-- Your SQL goes here ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS authentication_connector_details JSONB NULL;

-- The following queries must be run before the newer version of the application is deployed. ALTER TABLE events ADD COLUMN merchant_id VARCHAR(64) DEFAULT NULL, ADD COLUMN business_profile_id VARCHAR(64) DEFAULT NULL, ADD COLUMN primary_object_created_at TIMESTAMP DEFAULT NULL, ADD COLUMN idempotent_event_id VARCHAR(64) DEFAULT NULL, ADD COLUMN initial_attempt_id VARCHAR(64) DEFAULT NULL, ADD COLUMN request BYTEA DEFAULT NULL, ADD COLUMN response BYTEA DEFAULT NULL;

UPDATE events SET idempotent_event_id = event_id WHERE idempotent_event_id IS NULL;

UPDATE events SET initial_attempt_id = event_id WHERE initial_attempt_id IS NULL;

ALTER TABLE events ADD CONSTRAINT idempotent_event_id_unique UNIQUE (idempotent_event_id);

-- Your SQL goes here ALTER TABLE payment_methods ADD COLUMN network_transaction_id VARCHAR(255) DEFAULT NULL;

-- Your SQL goes here ALTER TABLE authentication ADD COLUMN IF NOT EXISTS maximum_supported_version JSONB, ADD COLUMN IF NOT EXISTS threeds_server_transaction_id VARCHAR(64), ADD COLUMN IF NOT EXISTS cavv VARCHAR(64), ADD COLUMN IF NOT EXISTS authentication_flow_type VARCHAR(64), ADD COLUMN IF NOT EXISTS message_version JSONB, ADD COLUMN IF NOT EXISTS eci VARCHAR(64), ADD COLUMN IF NOT EXISTS trans_status VARCHAR(64), ADD COLUMN IF NOT EXISTS acquirer_bin VARCHAR(64), ADD COLUMN IF NOT EXISTS acquirer_merchant_id VARCHAR(64), ADD COLUMN IF NOT EXISTS three_ds_method_data VARCHAR, ADD COLUMN IF NOT EXISTS three_ds_method_url VARCHAR, ADD COLUMN IF NOT EXISTS acs_url VARCHAR, ADD COLUMN IF NOT EXISTS challenge_request VARCHAR, ADD COLUMN IF NOT EXISTS acs_reference_number VARCHAR, ADD COLUMN IF NOT EXISTS acs_trans_id VARCHAR, ADD COLUMN IF NOT EXISTS three_dsserver_trans_id VARCHAR, ADD COLUMN IF NOT EXISTS acs_signed_content VARCHAR, ADD COLUMN IF NOT EXISTS connector_metadata JSONB;

-- Your SQL goes here ALTER TABLE payment_methods ADD COLUMN IF NOT EXISTS client_secret VARCHAR(128) DEFAULT NULL;

ALTER TABLE payment_methods ALTER COLUMN payment_method DROP NOT NULL;

CREATE UNIQUE INDEX events_merchant_id_event_id_index ON events (merchant_id, event_id);

CREATE INDEX events_merchant_id_initial_attempt_id_index ON events (merchant_id, initial_attempt_id);

CREATE INDEX events_merchant_id_initial_events_index ON events (merchant_id, (event_id = initial_attempt_id));

CREATE INDEX events_business_profile_id_initial_attempt_id_index ON events (business_profile_id, initial_attempt_id);

CREATE INDEX events_business_profile_id_initial_events_index ON events ( business_profile_id, (event_id = initial_attempt_id) );

CREATE TYPE "WebhookDeliveryAttempt" AS ENUM ( 'initial_attempt', 'automatic_retry', 'manual_retry' );

ALTER TABLE events ADD COLUMN delivery_attempt "WebhookDeliveryAttempt" DEFAULT NULL;

-- Your SQL goes here ALTER TABLE authentication ADD COLUMN profile_id VARCHAR(64) NOT NULL;

-- Your SQL goes here ALTER TABLE authentication ADD COLUMN payment_id VARCHAR(255);

-- Your SQL goes here ALTER TYPE "DashboardMetadata" ADD VALUE IF NOT EXISTS 'onboarding_survey';

-- Your SQL goes here ALTER TABLE authentication ADD COLUMN merchant_connector_id VARCHAR(128) NOT NULL;

[!CAUTION] Proceed with caution when running the following migrations as they are destructive.

Click here to view database migrations to be run after the newer version is deployed
-- Running these queries can even be deferred for some time (a couple of weeks or even a month) until the
-- new version being deployed is considered stable.
-- Make `event_id` primary key instead of `id`
ALTER TABLE events DROP CONSTRAINT events_pkey;

ALTER TABLE events ADD PRIMARY KEY (event_id);

ALTER TABLE events DROP CONSTRAINT event_id_unique;

-- Dropping unused columns ALTER TABLE events DROP COLUMN id, DROP COLUMN intent_reference_id;

Configuration Changes

Diff of configuration changes between v1.107.0 and v1.108.0

diff --git a/config/deployments/production.toml b/config/deployments/production.toml
index 4be067dade24..1bc4319b2d37 100644
--- a/config/deployments/production.toml
+++ b/config/deployments/production.toml
@@ -17,13 +17,15 @@ payout_connector_list = "wise"
 
 [connectors]
 aci.base_url = "https://eu-test.oppwa.com/"
-adyen.base_url = "https://{{merchant_endpoint_prefix}}-checkout-live.adyenpayments.com/"
+adyen.base_url = "https://{{merchant_endpoint_prefix}}-checkout-live.adyenpayments.com/checkout/"
 adyen.secondary_base_url = "https://{{merchant_endpoint_prefix}}-pal-live.adyenpayments.com/"
 airwallex.base_url = "https://api-demo.airwallex.com/"
 applepay.base_url = "https://apple-pay-gateway.apple.com/"
-authorizedotnet.base_url = "https://apitest.authorize.net/xml/v1/request.api"
+authorizedotnet.base_url = "https://api.authorize.net/xml/v1/request.api"
 bambora.base_url = "https://api.na.bambora.com"
 bankofamerica.base_url = "https://api.merchant-services.bankofamerica.com/"
+billwerk.base_url = "https://api.reepay.com/"
+billwerk.secondary_base_url = "https://card.reepay.com/"
 bitpay.base_url = "https://bitpay.com"
 bluesnap.base_url = "https://ws.bluesnap.com/"
 bluesnap.secondary_base_url = "https://pay.bluesnap.com/"
@@ -37,6 +39,7 @@ cryptopay.base_url = "https://business.cryptopay.me/"
 cybersource.base_url = "https://api.cybersource.com/"
 dlocal.base_url = "https://sandbox.dlocal.com/"
 dummyconnector.base_url = "http://localhost:8080/dummy-connector"
+ebanx.base_url = "https://sandbox.ebanxpay.com/"
 fiserv.base_url = "https://cert.api.fiservapps.com/"
 forte.base_url = "https://sandbox.forte.net/api/v3"
 globalpay.base_url = "https://apis.sandbox.globalpay.com/ucp/"
@@ -80,6 +83,9 @@ worldline.base_url = "https://eu.sandbox.api-ingenico.com/"
 worldpay.base_url = "https://try.access.worldpay.com/"
 zen.base_url = "https://api.zen.com/"
 zen.secondary_base_url = "https://secure.zen.com/"
+zsl.base_url = "https://api.sitoffalb.net/"
+threedsecureio.base_url = "https://service.3dsecure.io"
+netcetera.base_url = "https://{{merchant_endpoint_prefix}}.3ds-server.prev.netcetera-cloud-payment.ch"
 
 [delayed_session_response]
 connectors_with_delayed_session_response = "trustpay,payme"
@@ -102,7 +108,7 @@ refund_retrieve_duration = 500
 refund_retrieve_tolerance = 100
 refund_tolerance = 100
 refund_ttl = 172800
-slack_invite_url = "https://join.slack.com/t/hyperswitch-io/shared_invite/zt-1k6cz4lee-SAJzhz6bjmpp4jZCDOtOIg"
+slack_invite_url = "https://join.slack.com/t/hyperswitch-io/shared_invite/zt-2awm23agh-p_G5xNpziv6yAiedTkkqLg"
 
 [frm]
 enabled = false
@@ -111,11 +117,11 @@ enabled = false
 bank_debit.ach.connector_list = "gocardless"
 bank_debit.becs.connector_list = "gocardless"
 bank_debit.sepa.connector_list = "gocardless"
-card.credit.connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon"
-card.debit.connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon"
+card.credit.connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica"
+card.debit.connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica"
 pay_later.klarna.connector_list = "adyen"
-wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon"
-wallet.google_pay.connector_list = "stripe,adyen,cybersource"
+wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon,bankofamerica"
+wallet.google_pay.connector_list = "stripe,adyen,cybersource,bankofamerica"
 wallet.paypal.connector_list = "adyen"
 bank_redirect.ideal.connector_list = "stripe,adyen,globalpay"
 bank_redirect.sofort.connector_list = "stripe,adyen,globalpay"
@@ -285,6 +291,9 @@ pse = { country = "CO", currency = "COP" }
 red_compra = { country = "CL", currency = "CLP" }
 red_pagos = { country = "UY", currency = "UYU" }
 
+[pm_filters.zsl]
+local_bank_transfer = { country = "CN", currency = "CNY" }
+
 [temp_locker_enable_config]
 bluesnap.payment_method = "card"
 nuvei.payment_method = "card"
@@ -304,9 +313,13 @@ payme = { long_lived_token = false, payment_method = "card" }
 square = { long_lived_token = false, payment_method = "card" }
 stax = { long_lived_token = true, payment_method = "card,bank_debit" }
 stripe = { long_lived_token = false, payment_method = "wallet", payment_method_type = { list = "google_pay", type = "disable_only" } }
+billwerk = {long_lived_token = false, payment_method = "card"}
 
 [webhooks]
 outgoing_enabled = true
 
 [webhook_source_verification_call]
 connectors_with_webhook_source_verification_call = "paypal"
+
+[unmasked_headers]
+keys = "user-agent"

Full Changelog: v1.107.0...v1.108.0

相关地址:原始地址 下载(tar) 下载(zip)

查看:2024-05-06发行的版本