From b3d47b650d0aea271419bb083a475e0286887b46 Mon Sep 17 00:00:00 2001 From: Nithin N <57832822+Nithin1506200@users.noreply.github.com> Date: Tue, 27 May 2025 12:07:44 +0530 Subject: [PATCH] feat(connector): Stripe revolut pay wallet integration (#8066) --- api-reference-v2/openapi_spec.json | 17 ++++++++++++++++- api-reference/openapi_spec.json | 17 ++++++++++++++++- config/deployments/production.toml | 1 + config/deployments/sandbox.toml | 1 + config/development.toml | 1 + crates/api_models/src/payments.rs | 9 ++++++++- crates/common_enums/src/enums.rs | 2 ++ crates/common_enums/src/transformers.rs | 1 + crates/connector_configs/toml/development.toml | 2 ++ crates/connector_configs/toml/production.toml | 2 ++ crates/connector_configs/toml/sandbox.toml | 2 ++ crates/euclid/src/frontend/dir/enums.rs | 1 + crates/euclid/src/frontend/dir/lowering.rs | 1 + crates/euclid/src/frontend/dir/transformers.rs | 1 + .../src/connectors/aci/transformers.rs | 3 ++- .../src/connectors/adyen.rs | 3 ++- .../src/connectors/adyen/transformers.rs | 3 ++- .../src/connectors/airwallex/transformers.rs | 3 ++- .../connectors/authorizedotnet/transformers.rs | 6 ++++-- .../connectors/bankofamerica/transformers.rs | 6 ++++-- .../src/connectors/bluesnap/transformers.rs | 3 ++- .../src/connectors/boku/transformers.rs | 3 ++- .../src/connectors/checkout/transformers.rs | 6 ++++-- .../src/connectors/cybersource/transformers.rs | 6 ++++-- .../src/connectors/fiuu/transformers.rs | 3 ++- .../src/connectors/globepay/transformers.rs | 3 ++- .../src/connectors/klarna.rs | 12 ++++++++---- .../src/connectors/mifinity/transformers.rs | 3 ++- .../src/connectors/multisafepay/transformers.rs | 9 ++++++--- .../src/connectors/nexinets/transformers.rs | 3 ++- .../src/connectors/nmi/transformers.rs | 3 ++- .../src/connectors/noon/transformers.rs | 3 ++- .../src/connectors/novalnet/transformers.rs | 6 ++++-- .../src/connectors/nuvei/transformers.rs | 1 + .../src/connectors/payme/transformers.rs | 3 ++- .../src/connectors/paypal/transformers.rs | 4 +++- .../src/connectors/shift4/transformers.rs | 3 ++- .../src/connectors/square/transformers.rs | 3 ++- .../src/connectors/stripe/transformers.rs | 17 +++++++++++++++++ .../src/connectors/wellsfargo/transformers.rs | 6 ++++-- .../src/connectors/worldpay/transformers.rs | 3 ++- .../src/connectors/zen/transformers.rs | 3 ++- crates/hyperswitch_connectors/src/utils.rs | 2 ++ .../src/payment_method_data.rs | 5 +++++ crates/kgraph_utils/src/mca.rs | 1 + crates/kgraph_utils/src/transformers.rs | 1 + crates/openapi/src/openapi.rs | 1 + crates/openapi/src/openapi_v2.rs | 1 + crates/payment_methods/src/helpers.rs | 1 + crates/router/src/connector/utils.rs | 2 ++ crates/router/src/types/domain/payments.rs | 2 +- crates/router/src/types/transformers.rs | 3 ++- 52 files changed, 165 insertions(+), 42 deletions(-) diff --git a/api-reference-v2/openapi_spec.json b/api-reference-v2/openapi_spec.json index 461f76f8a3..f3e9eeb56c 100644 --- a/api-reference-v2/openapi_spec.json +++ b/api-reference-v2/openapi_spec.json @@ -16973,7 +16973,8 @@ "mifinity", "open_banking_pis", "direct_carrier_billing", - "instant_bank_transfer" + "instant_bank_transfer", + "revolut_pay" ] }, "PaymentMethodUpdate": { @@ -21657,6 +21658,9 @@ } } }, + "RevolutPayData": { + "type": "object" + }, "RewardData": { "type": "object", "required": [ @@ -24421,6 +24425,17 @@ "$ref": "#/components/schemas/MifinityData" } } + }, + { + "type": "object", + "required": [ + "revolut_pay" + ], + "properties": { + "revolut_pay": { + "$ref": "#/components/schemas/RevolutPayData" + } + } } ] }, diff --git a/api-reference/openapi_spec.json b/api-reference/openapi_spec.json index ed5757c187..c192ef38b7 100644 --- a/api-reference/openapi_spec.json +++ b/api-reference/openapi_spec.json @@ -18948,7 +18948,8 @@ "mifinity", "open_banking_pis", "direct_carrier_billing", - "instant_bank_transfer" + "instant_bank_transfer", + "revolut_pay" ] }, "PaymentMethodUpdate": { @@ -25910,6 +25911,9 @@ } } }, + "RevolutPayData": { + "type": "object" + }, "RewardData": { "type": "object", "required": [ @@ -28679,6 +28683,17 @@ "$ref": "#/components/schemas/MifinityData" } } + }, + { + "type": "object", + "required": [ + "revolut_pay" + ], + "properties": { + "revolut_pay": { + "$ref": "#/components/schemas/RevolutPayData" + } + } } ] }, diff --git a/config/deployments/production.toml b/config/deployments/production.toml index ea2c520a9d..63cb675467 100644 --- a/config/deployments/production.toml +++ b/config/deployments/production.toml @@ -551,6 +551,7 @@ ideal = { country = "NL", currency = "EUR" } klarna = { country = "AU,AT,BE,CA,CZ,DK,FI,FR,DE,GR,IE,IT,NL,NZ,NO,PL,PT,ES,SE,CH,GB,US", currency = "AUD,CAD,CHF,CZK,DKK,EUR,GBP,NOK,NZD,PLN,SEK,USD" } multibanco = { country = "PT", currency = "EUR" } ach = { country = "US", currency = "USD" } +revolut_pay = { currency = "EUR,GBP" } [pm_filters.volt] open_banking_uk = {country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "EUR,GBP,DKK,NOK,PLN,SEK,AUD,BRL"} diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml index 8b0575f462..f13435cbc5 100644 --- a/config/deployments/sandbox.toml +++ b/config/deployments/sandbox.toml @@ -559,6 +559,7 @@ ideal = { country = "NL", currency = "EUR" } klarna = { country = "AU,AT,BE,CA,CZ,DK,FI,FR,DE,GR,IE,IT,NL,NZ,NO,PL,PT,ES,SE,CH,GB,US", currency = "AUD,CAD,CHF,CZK,DKK,EUR,GBP,NOK,NZD,PLN,SEK,USD" } multibanco = { country = "PT", currency = "EUR" } ach = { country = "US", currency = "USD" } +revolut_pay = { currency = "EUR,GBP" } [pm_filters.volt] open_banking_uk = { country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "EUR,GBP,DKK,NOK,PLN,SEK,AUD,BRL" } diff --git a/config/development.toml b/config/development.toml index 66c5158515..73822068c7 100644 --- a/config/development.toml +++ b/config/development.toml @@ -422,6 +422,7 @@ ideal = { country = "NL", currency = "EUR" } cashapp = { country = "US", currency = "USD" } multibanco = { country = "PT", currency = "EUR" } ach = { country = "US", currency = "USD" } +revolut_pay = { currency = "EUR,GBP" } [pm_filters.volt] open_banking_uk = { country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "EUR,GBP,DKK,NOK,PLN,SEK,AUD,BRL" } diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index 4b17d1e3ca..7ab8bc1936 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -2685,6 +2685,7 @@ impl GetPaymentMethodType for WalletData { Self::CashappQr(_) => api_enums::PaymentMethodType::Cashapp, Self::SwishQr(_) => api_enums::PaymentMethodType::Swish, Self::Mifinity(_) => api_enums::PaymentMethodType::Mifinity, + Self::RevolutPay(_) => api_enums::PaymentMethodType::RevolutPay, } } } @@ -3609,6 +3610,8 @@ pub enum WalletData { SwishQr(SwishQrData), // The wallet data for Mifinity Ewallet Mifinity(MifinityData), + // The wallet data for RevolutPay + RevolutPay(RevolutPayData), } impl GetAddressFromPaymentMethodData for WalletData { @@ -3660,7 +3663,8 @@ impl GetAddressFromPaymentMethodData for WalletData { | Self::WeChatPayRedirect(_) | Self::WeChatPayQr(_) | Self::CashappQr(_) - | Self::SwishQr(_) => None, + | Self::SwishQr(_) + | Self::RevolutPay(_) => None, } } } @@ -3895,6 +3899,9 @@ pub struct TouchNGoRedirection {} #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)] pub struct SwishQrData {} +#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)] +pub struct RevolutPayData {} + #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)] pub struct MifinityData { #[schema(value_type = Date)] diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs index 0f0064414c..55eab7935b 100644 --- a/crates/common_enums/src/enums.rs +++ b/crates/common_enums/src/enums.rs @@ -1922,6 +1922,7 @@ pub enum PaymentMethodType { OpenBankingPIS, DirectCarrierBilling, InstantBankTransfer, + RevolutPay, } impl PaymentMethodType { @@ -2034,6 +2035,7 @@ impl PaymentMethodType { Self::Mifinity => "MiFinity", Self::OpenBankingPIS => "Open Banking PIS", Self::DirectCarrierBilling => "Direct Carrier Billing", + Self::RevolutPay => "RevolutPay", }; display_name.to_string() } diff --git a/crates/common_enums/src/transformers.rs b/crates/common_enums/src/transformers.rs index 2a130edbd8..5a14e5056a 100644 --- a/crates/common_enums/src/transformers.rs +++ b/crates/common_enums/src/transformers.rs @@ -1894,6 +1894,7 @@ impl From for PaymentMethod { PaymentMethodType::PayEasy => Self::Voucher, PaymentMethodType::OpenBankingPIS => Self::OpenBanking, PaymentMethodType::DirectCarrierBilling => Self::MobilePayment, + PaymentMethodType::RevolutPay => Self::Wallet, } } } diff --git a/crates/connector_configs/toml/development.toml b/crates/connector_configs/toml/development.toml index b912505dd2..55d469c463 100644 --- a/crates/connector_configs/toml/development.toml +++ b/crates/connector_configs/toml/development.toml @@ -4006,6 +4006,8 @@ merchant_secret="Source verification key" [[stripe.wallet]] payment_method_type = "cashapp" payment_experience = "display_qr_code" +[[stripe.wallet]] + payment_method_type = "revolut_pay" is_verifiable = true [stripe.connector_auth.HeaderKey] api_key="Secret Key" diff --git a/crates/connector_configs/toml/production.toml b/crates/connector_configs/toml/production.toml index 02aeb3fca5..4d4456cf71 100644 --- a/crates/connector_configs/toml/production.toml +++ b/crates/connector_configs/toml/production.toml @@ -2846,6 +2846,8 @@ merchant_secret="Source verification key" payment_method_type = "apple_pay" [[stripe.wallet]] payment_method_type = "google_pay" +[[stripe.wallet]] + payment_method_type = "revolut_pay" is_verifiable = true [stripe.connector_auth.HeaderKey] api_key="Secret Key" diff --git a/crates/connector_configs/toml/sandbox.toml b/crates/connector_configs/toml/sandbox.toml index 8532765ee4..28227a7255 100644 --- a/crates/connector_configs/toml/sandbox.toml +++ b/crates/connector_configs/toml/sandbox.toml @@ -3967,6 +3967,8 @@ merchant_secret="Source verification key" payment_method_type = "ali_pay" [[stripe.wallet]] payment_method_type = "cashapp" +[[stripe.wallet]] + payment_method_type = "revolut_pay" is_verifiable = true [stripe.connector_auth.HeaderKey] api_key="Secret Key" diff --git a/crates/euclid/src/frontend/dir/enums.rs b/crates/euclid/src/frontend/dir/enums.rs index 9fbb86fa0c..3ea17b93c3 100644 --- a/crates/euclid/src/frontend/dir/enums.rs +++ b/crates/euclid/src/frontend/dir/enums.rs @@ -96,6 +96,7 @@ pub enum WalletType { Venmo, Mifinity, Paze, + RevolutPay, } #[derive( diff --git a/crates/euclid/src/frontend/dir/lowering.rs b/crates/euclid/src/frontend/dir/lowering.rs index ea5a8cd7c4..c84aa83d48 100644 --- a/crates/euclid/src/frontend/dir/lowering.rs +++ b/crates/euclid/src/frontend/dir/lowering.rs @@ -62,6 +62,7 @@ impl From for global_enums::PaymentMethodType { enums::WalletType::Venmo => Self::Venmo, enums::WalletType::Mifinity => Self::Mifinity, enums::WalletType::Paze => Self::Paze, + enums::WalletType::RevolutPay => Self::RevolutPay, } } } diff --git a/crates/euclid/src/frontend/dir/transformers.rs b/crates/euclid/src/frontend/dir/transformers.rs index b4b512b523..d326bb24e4 100644 --- a/crates/euclid/src/frontend/dir/transformers.rs +++ b/crates/euclid/src/frontend/dir/transformers.rs @@ -25,6 +25,7 @@ impl IntoDirValue for (global_enums::PaymentMethodType, global_enums::PaymentMet global_enums::PaymentMethodType::GooglePay => Ok(dirval!(WalletType = GooglePay)), global_enums::PaymentMethodType::ApplePay => Ok(dirval!(WalletType = ApplePay)), global_enums::PaymentMethodType::Paypal => Ok(dirval!(WalletType = Paypal)), + global_enums::PaymentMethodType::RevolutPay => Ok(dirval!(WalletType = RevolutPay)), global_enums::PaymentMethodType::CryptoCurrency => { Ok(dirval!(CryptoType = CryptoCurrency)) } diff --git a/crates/hyperswitch_connectors/src/connectors/aci/transformers.rs b/crates/hyperswitch_connectors/src/connectors/aci/transformers.rs index 3e4ac8d80a..e5f7ec19b5 100644 --- a/crates/hyperswitch_connectors/src/connectors/aci/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/aci/transformers.rs @@ -140,7 +140,8 @@ impl TryFrom<(&WalletData, &PaymentsAuthorizeRouterData)> for PaymentDetails { | WalletData::AliPayQr(_) | WalletData::ApplePayRedirect(_) | WalletData::GooglePayRedirect(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( "Payment method".to_string(), ))?, }; diff --git a/crates/hyperswitch_connectors/src/connectors/adyen.rs b/crates/hyperswitch_connectors/src/connectors/adyen.rs index a2a8b3dabd..23fd0e5c5b 100644 --- a/crates/hyperswitch_connectors/src/connectors/adyen.rs +++ b/crates/hyperswitch_connectors/src/connectors/adyen.rs @@ -327,7 +327,8 @@ impl ConnectorValidation for Adyen { | PaymentMethodType::LocalBankRedirect | PaymentMethodType::OpenBankingPIS | PaymentMethodType::InstantBankTransfer - | PaymentMethodType::SepaBankTransfer => { + | PaymentMethodType::SepaBankTransfer + | PaymentMethodType::RevolutPay => { capture_method_not_supported!(connector, capture_method, payment_method_type) } }, diff --git a/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs b/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs index 26ba1cbe52..a9b68b86a5 100644 --- a/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs @@ -2268,7 +2268,8 @@ impl TryFrom<(&WalletData, &PaymentsAuthorizeRouterData)> for AdyenPaymentMethod | WalletData::PaypalSdk(_) | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Adyen"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/airwallex/transformers.rs b/crates/hyperswitch_connectors/src/connectors/airwallex/transformers.rs index 9f154103c6..78e8fd318b 100644 --- a/crates/hyperswitch_connectors/src/connectors/airwallex/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/airwallex/transformers.rs @@ -361,7 +361,8 @@ fn get_wallet_details( | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("airwallex"), ))?, }; diff --git a/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs b/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs index 9bd809c124..62e483395e 100644 --- a/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs @@ -466,7 +466,8 @@ impl TryFrom<&SetupMandateRouterData> for CreateCustomerProfileRequest { | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("authorizedotnet"), ))?, }, @@ -1925,7 +1926,8 @@ fn get_wallet_data( | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("authorizedotnet"), ))?, } diff --git a/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs b/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs index 7aed189fbd..5c1d70317a 100644 --- a/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs @@ -327,7 +327,8 @@ impl TryFrom<&SetupMandateRouterData> for BankOfAmericaPaymentsRequest { | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("BankOfAmerica"), ))?, }, @@ -1109,7 +1110,8 @@ impl TryFrom<&BankOfAmericaRouterData<&PaymentsAuthorizeRouterData>> | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message( "Bank of America", ), diff --git a/crates/hyperswitch_connectors/src/connectors/bluesnap/transformers.rs b/crates/hyperswitch_connectors/src/connectors/bluesnap/transformers.rs index b8ebe76e5d..1aa3c450e5 100644 --- a/crates/hyperswitch_connectors/src/connectors/bluesnap/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/bluesnap/transformers.rs @@ -391,7 +391,8 @@ impl TryFrom<&BluesnapRouterData<&types::PaymentsAuthorizeRouterData>> for Blues | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("bluesnap"), )), }, diff --git a/crates/hyperswitch_connectors/src/connectors/boku/transformers.rs b/crates/hyperswitch_connectors/src/connectors/boku/transformers.rs index 1565b959a9..6884974aa6 100644 --- a/crates/hyperswitch_connectors/src/connectors/boku/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/boku/transformers.rs @@ -200,7 +200,8 @@ fn get_wallet_type(wallet_data: &WalletData) -> Result Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("boku"), )), } diff --git a/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs b/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs index d3150a3b04..ec8368f0ab 100644 --- a/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs @@ -131,7 +131,8 @@ impl TryFrom<&TokenizationRouterData> for TokenRequest { | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), ) .into()), @@ -385,7 +386,8 @@ impl TryFrom<&CheckoutRouterData<&PaymentsAuthorizeRouterData>> for PaymentsRequ | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), )), }, diff --git a/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs b/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs index 7f920f0e46..6b4101a15d 100644 --- a/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs @@ -295,7 +295,8 @@ impl TryFrom<&SetupMandateRouterData> for CybersourceZeroMandateRequest { | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Cybersource"), ))?, }, @@ -2188,7 +2189,8 @@ impl TryFrom<&CybersourceRouterData<&PaymentsAuthorizeRouterData>> for Cybersour | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Cybersource"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/fiuu/transformers.rs b/crates/hyperswitch_connectors/src/connectors/fiuu/transformers.rs index d05654265f..52a26f9d39 100644 --- a/crates/hyperswitch_connectors/src/connectors/fiuu/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/fiuu/transformers.rs @@ -587,7 +587,8 @@ impl TryFrom<&FiuuRouterData<&PaymentsAuthorizeRouterData>> for FiuuPaymentReque | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("fiuu"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/globepay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/globepay/transformers.rs index cd87eed6d2..0b6823ab9c 100644 --- a/crates/hyperswitch_connectors/src/connectors/globepay/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/globepay/transformers.rs @@ -83,7 +83,8 @@ impl TryFrom<&GlobepayRouterData<&types::PaymentsAuthorizeRouterData>> for Globe | WalletData::WeChatPayRedirect(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( get_unimplemented_payment_method_error_message("globepay"), ))?, }, diff --git a/crates/hyperswitch_connectors/src/connectors/klarna.rs b/crates/hyperswitch_connectors/src/connectors/klarna.rs index 03ef376fbb..38077ef874 100644 --- a/crates/hyperswitch_connectors/src/connectors/klarna.rs +++ b/crates/hyperswitch_connectors/src/connectors/klarna.rs @@ -640,7 +640,8 @@ impl ConnectorIntegration Err(error_stack::report!(errors::ConnectorError::NotSupported { message: payment_method_type.to_string(), connector: "klarna", @@ -754,7 +755,8 @@ impl ConnectorIntegration Err(error_stack::report!(errors::ConnectorError::NotSupported { message: payment_method_type.to_string(), connector: "klarna", @@ -875,7 +877,8 @@ impl ConnectorIntegration Err(error_stack::report!(errors::ConnectorError::NotSupported { message: payment_method_type.to_string(), connector: "klarna", @@ -989,7 +992,8 @@ impl ConnectorIntegration Err(error_stack::report!(errors::ConnectorError::NotSupported { message: payment_method_type.to_string(), connector: "klarna", diff --git a/crates/hyperswitch_connectors/src/connectors/mifinity/transformers.rs b/crates/hyperswitch_connectors/src/connectors/mifinity/transformers.rs index ba2fbc4c30..0a9df16eb6 100644 --- a/crates/hyperswitch_connectors/src/connectors/mifinity/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/mifinity/transformers.rs @@ -185,7 +185,8 @@ impl TryFrom<&MifinityRouterData<&types::PaymentsAuthorizeRouterData>> for Mifin | WalletData::WeChatPayRedirect(_) | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) - | WalletData::SwishQr(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::SwishQr(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Mifinity"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/multisafepay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/multisafepay/transformers.rs index 9dda361088..c7cc7967c4 100644 --- a/crates/hyperswitch_connectors/src/connectors/multisafepay/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/multisafepay/transformers.rs @@ -516,7 +516,8 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }, @@ -582,7 +583,8 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }), @@ -743,7 +745,8 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }, diff --git a/crates/hyperswitch_connectors/src/connectors/nexinets/transformers.rs b/crates/hyperswitch_connectors/src/connectors/nexinets/transformers.rs index 8e4b999504..9548c903c1 100644 --- a/crates/hyperswitch_connectors/src/connectors/nexinets/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/nexinets/transformers.rs @@ -729,7 +729,8 @@ fn get_wallet_details( | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("nexinets"), ))?, } diff --git a/crates/hyperswitch_connectors/src/connectors/nmi/transformers.rs b/crates/hyperswitch_connectors/src/connectors/nmi/transformers.rs index e789cb637c..99f3d3aac8 100644 --- a/crates/hyperswitch_connectors/src/connectors/nmi/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/nmi/transformers.rs @@ -568,7 +568,8 @@ impl TryFrom<(&PaymentMethodData, Option<&PaymentsAuthorizeRouterData>)> for Pay | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(report!(ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(report!(ConnectorError::NotImplemented( get_unimplemented_payment_method_error_message("nmi"), ))), }, diff --git a/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs b/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs index 109c53fbde..faa566adb0 100644 --- a/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs @@ -342,7 +342,8 @@ impl TryFrom<&NoonRouterData<&PaymentsAuthorizeRouterData>> for NoonPaymentsRequ | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Noon"), )), }, diff --git a/crates/hyperswitch_connectors/src/connectors/novalnet/transformers.rs b/crates/hyperswitch_connectors/src/connectors/novalnet/transformers.rs index 7eb6398f1b..8d257a3e57 100644 --- a/crates/hyperswitch_connectors/src/connectors/novalnet/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/novalnet/transformers.rs @@ -354,7 +354,8 @@ impl TryFrom<&NovalnetRouterData<&PaymentsAuthorizeRouterData>> for NovalnetPaym | WalletDataPaymentMethod::GooglePayRedirect(_) | WalletDataPaymentMethod::GooglePayThirdPartySdk(_) | WalletDataPaymentMethod::MbWayRedirect(_) - | WalletDataPaymentMethod::MobilePayRedirect(_) => { + | WalletDataPaymentMethod::MobilePayRedirect(_) + | WalletDataPaymentMethod::RevolutPay(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("novalnet"), ) @@ -1605,7 +1606,8 @@ impl TryFrom<&SetupMandateRouterData> for NovalnetPaymentsRequest { | WalletDataPaymentMethod::GooglePayRedirect(_) | WalletDataPaymentMethod::GooglePayThirdPartySdk(_) | WalletDataPaymentMethod::MbWayRedirect(_) - | WalletDataPaymentMethod::MobilePayRedirect(_) => { + | WalletDataPaymentMethod::MobilePayRedirect(_) + | WalletDataPaymentMethod::RevolutPay(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("novalnet"), ))? diff --git a/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs b/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs index e2f106f2cb..a569b7d38e 100644 --- a/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs @@ -948,6 +948,7 @@ where | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) + | WalletData::RevolutPay(_) | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("nuvei"), ) diff --git a/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs b/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs index 06be676ab6..375020907a 100644 --- a/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs @@ -425,7 +425,8 @@ impl TryFrom<&PaymentMethodData> for SalePaymentMethod { | WalletData::CashappQr(_) | WalletData::ApplePay(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotSupported { + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotSupported { message: "Wallet".to_string(), connector: "payme", } diff --git a/crates/hyperswitch_connectors/src/connectors/paypal/transformers.rs b/crates/hyperswitch_connectors/src/connectors/paypal/transformers.rs index fdee202257..8639689430 100644 --- a/crates/hyperswitch_connectors/src/connectors/paypal/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/paypal/transformers.rs @@ -1068,6 +1068,7 @@ impl TryFrom<&PaypalRouterData<&PaymentsAuthorizeRouterData>> for PaypalPayments | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) | WalletData::Paze(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Paypal"), ))?, @@ -1231,7 +1232,8 @@ impl TryFrom<&PaypalRouterData<&PaymentsAuthorizeRouterData>> for PaypalPayments | enums::PaymentMethodType::LocalBankTransfer | enums::PaymentMethodType::InstantBankTransfer | enums::PaymentMethodType::Mifinity - | enums::PaymentMethodType::Paze => { + | enums::PaymentMethodType::Paze + | enums::PaymentMethodType::RevolutPay => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("paypal"), )) diff --git a/crates/hyperswitch_connectors/src/connectors/shift4/transformers.rs b/crates/hyperswitch_connectors/src/connectors/shift4/transformers.rs index 63d77912ef..9052c5fa4a 100644 --- a/crates/hyperswitch_connectors/src/connectors/shift4/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/shift4/transformers.rs @@ -313,7 +313,8 @@ impl TryFrom<&WalletData> for Shift4PaymentMethod { | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Shift4"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/square/transformers.rs b/crates/hyperswitch_connectors/src/connectors/square/transformers.rs index b843b4d0c3..5ff7888f18 100644 --- a/crates/hyperswitch_connectors/src/connectors/square/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/square/transformers.rs @@ -129,7 +129,8 @@ impl TryFrom<(&types::TokenizationRouterData, WalletData)> for SquareTokenReques | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Square"), ))?, } diff --git a/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs b/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs index 73d9007706..f0e73f5a7a 100644 --- a/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs @@ -562,6 +562,7 @@ pub enum StripeWallet { WechatpayPayment(WechatpayPayment), AlipayPayment(AlipayPayment), Cashapp(CashappPayment), + RevolutPay(RevolutpayPayment), ApplePayPredecryptToken(Box), } @@ -611,6 +612,11 @@ pub struct AmazonpayPayment { pub payment_method_types: StripePaymentMethodType, } +#[derive(Debug, Eq, PartialEq, Serialize)] +pub struct RevolutpayPayment { + #[serde(rename = "payment_method_data[type]")] + pub payment_method_types: StripePaymentMethodType, +} #[derive(Debug, Eq, PartialEq, Serialize)] pub struct AlipayPayment { #[serde(rename = "payment_method_data[type]")] @@ -679,6 +685,7 @@ pub enum StripePaymentMethodType { Wechatpay, #[serde(rename = "cashapp")] Cashapp, + RevolutPay, } #[derive(Debug, Eq, PartialEq, Serialize)] @@ -717,6 +724,7 @@ impl TryFrom for StripePaymentMethodType { enums::PaymentMethodType::Blik => Ok(Self::Blik), enums::PaymentMethodType::AliPay => Ok(Self::Alipay), enums::PaymentMethodType::Przelewy24 => Ok(Self::Przelewy24), + enums::PaymentMethodType::RevolutPay => Ok(Self::RevolutPay), // Stripe expects PMT as Card for Recurring Mandates Payments enums::PaymentMethodType::GooglePay => Ok(Self::Card), enums::PaymentMethodType::Boleto @@ -1082,6 +1090,7 @@ fn get_stripe_payment_method_type_from_wallet_data( WalletData::WeChatPayQr(_) => Ok(Some(StripePaymentMethodType::Wechatpay)), WalletData::CashappQr(_) => Ok(Some(StripePaymentMethodType::Cashapp)), WalletData::AmazonPayRedirect(_) => Ok(Some(StripePaymentMethodType::AmazonPay)), + WalletData::RevolutPay(_) => Ok(Some(StripePaymentMethodType::RevolutPay)), WalletData::MobilePayRedirect(_) => Err(ConnectorError::NotImplemented( get_unimplemented_payment_method_error_message("stripe"), )), @@ -1491,6 +1500,11 @@ impl TryFrom<(&WalletData, Option)> for StripePaymentMethodD payment_method_types: StripePaymentMethodType::AmazonPay, }, ))), + WalletData::RevolutPay(_) => { + Ok(Self::Wallet(StripeWallet::RevolutPay(RevolutpayPayment { + payment_method_types: StripePaymentMethodType::RevolutPay, + }))) + } WalletData::GooglePay(gpay_data) => Ok(Self::try_from(gpay_data)?), WalletData::PaypalRedirect(_) | WalletData::MobilePayRedirect(_) => Err( ConnectorError::NotImplemented(get_unimplemented_payment_method_error_message( @@ -2320,6 +2334,7 @@ pub enum StripePaymentMethodDetailsResponse { Wechatpay, Alipay, CustomerBalance, + RevolutPay, } pub struct AdditionalPaymentMethodDetails { @@ -2364,6 +2379,7 @@ impl StripePaymentMethodDetailsResponse { | Self::Wechatpay | Self::Alipay | Self::CustomerBalance + | Self::RevolutPay | Self::Cashapp { .. } => None, } } @@ -2704,6 +2720,7 @@ pub fn get_payment_method_id( | Some(StripePaymentMethodDetailsResponse::Alipay) | Some(StripePaymentMethodDetailsResponse::CustomerBalance) | Some(StripePaymentMethodDetailsResponse::Cashapp { .. }) + | Some(StripePaymentMethodDetailsResponse::RevolutPay) | None => payment_method_id_from_intent_root.expose(), }, Some(StripeChargeEnum::ChargeId(_)) | None => payment_method_id_from_intent_root.expose(), diff --git a/crates/hyperswitch_connectors/src/connectors/wellsfargo/transformers.rs b/crates/hyperswitch_connectors/src/connectors/wellsfargo/transformers.rs index c0474535f5..705a86a05d 100644 --- a/crates/hyperswitch_connectors/src/connectors/wellsfargo/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/wellsfargo/transformers.rs @@ -210,7 +210,8 @@ impl TryFrom<&SetupMandateRouterData> for WellsfargoZeroMandateRequest { | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Wellsfargo"), ))?, }, @@ -1272,7 +1273,8 @@ impl TryFrom<&WellsfargoRouterData<&PaymentsAuthorizeRouterData>> for Wellsfargo | WalletData::WeChatPayQr(_) | WalletData::CashappQr(_) | WalletData::SwishQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Wellsfargo"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/worldpay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/worldpay/transformers.rs index adee7fb289..20b21be770 100644 --- a/crates/hyperswitch_connectors/src/connectors/worldpay/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/worldpay/transformers.rs @@ -175,7 +175,8 @@ fn fetch_payment_instrument( | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("worldpay"), ) .into()), diff --git a/crates/hyperswitch_connectors/src/connectors/zen/transformers.rs b/crates/hyperswitch_connectors/src/connectors/zen/transformers.rs index d5ebe6d695..bcc9aaf3fd 100644 --- a/crates/hyperswitch_connectors/src/connectors/zen/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/zen/transformers.rs @@ -507,7 +507,8 @@ impl | WalletData::CashappQr(_) | WalletData::SwishQr(_) | WalletData::WeChatPayQr(_) - | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + | WalletData::Mifinity(_) + | WalletData::RevolutPay(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Zen"), ))?, }; diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs index 80c9f63ca4..7a210717fd 100644 --- a/crates/hyperswitch_connectors/src/utils.rs +++ b/crates/hyperswitch_connectors/src/utils.rs @@ -5492,6 +5492,7 @@ pub enum PaymentMethodDataType { NetworkTransactionIdAndCardDetails, DirectCarrierBilling, InstantBankTransfer, + RevolutPay, } impl From for PaymentMethodDataType { @@ -5542,6 +5543,7 @@ impl From for PaymentMethodDataType { payment_method_data::WalletData::CashappQr(_) => Self::CashappQr, payment_method_data::WalletData::SwishQr(_) => Self::SwishQr, payment_method_data::WalletData::Mifinity(_) => Self::Mifinity, + payment_method_data::WalletData::RevolutPay(_) => Self::RevolutPay, }, PaymentMethodData::PayLater(pay_later_data) => match pay_later_data { payment_method_data::PayLaterData::KlarnaRedirect { .. } => Self::KlarnaRedirect, diff --git a/crates/hyperswitch_domain_models/src/payment_method_data.rs b/crates/hyperswitch_domain_models/src/payment_method_data.rs index 950f358ad5..0abc626bd1 100644 --- a/crates/hyperswitch_domain_models/src/payment_method_data.rs +++ b/crates/hyperswitch_domain_models/src/payment_method_data.rs @@ -245,6 +245,7 @@ pub enum WalletData { CashappQr(Box), SwishQr(SwishQrData), Mifinity(MifinityData), + RevolutPay(RevolutPayData), } #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)] @@ -301,6 +302,8 @@ pub struct GooglePayWalletData { #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)] pub struct ApplePayRedirectData {} +#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct RevolutPayData {} #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)] pub struct GooglePayRedirectData {} @@ -946,6 +949,7 @@ impl From for WalletData { language_preference: mifinity_data.language_preference, }) } + api_models::payments::WalletData::RevolutPay(_) => Self::RevolutPay(RevolutPayData {}), } } } @@ -1709,6 +1713,7 @@ impl GetPaymentMethodType for WalletData { Self::CashappQr(_) => api_enums::PaymentMethodType::Cashapp, Self::SwishQr(_) => api_enums::PaymentMethodType::Swish, Self::Mifinity(_) => api_enums::PaymentMethodType::Mifinity, + Self::RevolutPay(_) => api_enums::PaymentMethodType::RevolutPay, } } } diff --git a/crates/kgraph_utils/src/mca.rs b/crates/kgraph_utils/src/mca.rs index 64b79d1563..9b06e05b99 100644 --- a/crates/kgraph_utils/src/mca.rs +++ b/crates/kgraph_utils/src/mca.rs @@ -161,6 +161,7 @@ fn get_dir_value_payment_method( api_enums::PaymentMethodType::DirectCarrierBilling => { Ok(dirval!(MobilePaymentType = DirectCarrierBilling)) } + api_enums::PaymentMethodType::RevolutPay => Ok(dirval!(WalletType = RevolutPay)), } } diff --git a/crates/kgraph_utils/src/transformers.rs b/crates/kgraph_utils/src/transformers.rs index 1b5d3392aa..ecfb179a83 100644 --- a/crates/kgraph_utils/src/transformers.rs +++ b/crates/kgraph_utils/src/transformers.rs @@ -151,6 +151,7 @@ impl IntoDirValue for (api_enums::PaymentMethodType, api_enums::PaymentMethod) { api_enums::PaymentMethodType::CryptoCurrency => { Ok(dirval!(CryptoType = CryptoCurrency)) } + api_enums::PaymentMethodType::RevolutPay => Ok(dirval!(WalletType = RevolutPay)), api_enums::PaymentMethodType::Ach => match self.1 { api_enums::PaymentMethod::BankDebit => Ok(dirval!(BankDebitType = Ach)), api_enums::PaymentMethod::BankTransfer => Ok(dirval!(BankTransferType = Ach)), diff --git a/crates/openapi/src/openapi.rs b/crates/openapi/src/openapi.rs index b042d2bdbd..cec1b463a8 100644 --- a/crates/openapi/src/openapi.rs +++ b/crates/openapi/src/openapi.rs @@ -410,6 +410,7 @@ Never share your secret api keys. Keep them guarded and secure. api_models::payments::PaylaterResponse, api_models::payments::KlarnaSdkPaymentMethodResponse, api_models::payments::SwishQrData, + api_models::payments::RevolutPayData, api_models::payments::AirwallexData, api_models::payments::BraintreeData, api_models::payments::NoonData, diff --git a/crates/openapi/src/openapi_v2.rs b/crates/openapi/src/openapi_v2.rs index 45f8e87798..d9f506aab4 100644 --- a/crates/openapi/src/openapi_v2.rs +++ b/crates/openapi/src/openapi_v2.rs @@ -389,6 +389,7 @@ Never share your secret api keys. Keep them guarded and secure. api_models::payments::PaylaterResponse, api_models::payments::KlarnaSdkPaymentMethodResponse, api_models::payments::SwishQrData, + api_models::payments::RevolutPayData, api_models::payments::AirwallexData, api_models::payments::BraintreeData, api_models::payments::NoonData, diff --git a/crates/payment_methods/src/helpers.rs b/crates/payment_methods/src/helpers.rs index 1e483b12d7..7a885b5f05 100644 --- a/crates/payment_methods/src/helpers.rs +++ b/crates/payment_methods/src/helpers.rs @@ -124,6 +124,7 @@ pub fn validate_payment_method_type_against_payment_method( | api_enums::PaymentMethodType::Cashapp | api_enums::PaymentMethodType::Mifinity | api_enums::PaymentMethodType::Paze + | api_enums::PaymentMethodType::RevolutPay ), api_enums::PaymentMethod::BankRedirect => matches!( payment_method_type, diff --git a/crates/router/src/connector/utils.rs b/crates/router/src/connector/utils.rs index e2db6a379c..ad537f2496 100644 --- a/crates/router/src/connector/utils.rs +++ b/crates/router/src/connector/utils.rs @@ -2533,6 +2533,7 @@ pub enum PaymentMethodDataType { NetworkToken, DirectCarrierBilling, InstantBankTransfer, + RevolutPay, } impl From for PaymentMethodDataType { @@ -2583,6 +2584,7 @@ impl From for PaymentMethodDataType { domain::payments::WalletData::CashappQr(_) => Self::CashappQr, domain::payments::WalletData::SwishQr(_) => Self::SwishQr, domain::payments::WalletData::Mifinity(_) => Self::Mifinity, + domain::payments::WalletData::RevolutPay(_) => Self::RevolutPay, }, domain::payments::PaymentMethodData::PayLater(pay_later_data) => match pay_later_data { domain::payments::PayLaterData::KlarnaRedirect { .. } => Self::KlarnaRedirect, diff --git a/crates/router/src/types/domain/payments.rs b/crates/router/src/types/domain/payments.rs index 3f7849ae0f..af715bdbb4 100644 --- a/crates/router/src/types/domain/payments.rs +++ b/crates/router/src/types/domain/payments.rs @@ -5,7 +5,7 @@ pub use hyperswitch_domain_models::payment_method_data::{ GiftCardDetails, GoPayRedirection, GooglePayPaymentMethodInfo, GooglePayRedirectData, GooglePayThirdPartySdkData, GooglePayWalletData, GpayTokenizationData, IndomaretVoucherData, KakaoPayRedirection, MbWayRedirection, MifinityData, NetworkTokenData, OpenBankingData, - PayLaterData, PaymentMethodData, RealTimePaymentData, SamsungPayWalletData, + PayLaterData, PaymentMethodData, RealTimePaymentData, RevolutPayData, SamsungPayWalletData, SepaAndBacsBillingDetails, SwishQrData, TokenizedBankDebitValue1, TokenizedBankDebitValue2, TokenizedBankRedirectValue1, TokenizedBankRedirectValue2, TokenizedBankTransferValue1, TokenizedBankTransferValue2, TokenizedCardValue1, TokenizedCardValue2, TokenizedWalletValue1, diff --git a/crates/router/src/types/transformers.rs b/crates/router/src/types/transformers.rs index 911cacf604..daa3eacbe4 100644 --- a/crates/router/src/types/transformers.rs +++ b/crates/router/src/types/transformers.rs @@ -508,7 +508,8 @@ impl ForeignFrom for api_enums::PaymentMethod { | api_enums::PaymentMethodType::Cashapp | api_enums::PaymentMethodType::KakaoPay | api_enums::PaymentMethodType::Venmo - | api_enums::PaymentMethodType::Mifinity => Self::Wallet, + | api_enums::PaymentMethodType::Mifinity + | api_enums::PaymentMethodType::RevolutPay => Self::Wallet, api_enums::PaymentMethodType::Affirm | api_enums::PaymentMethodType::Alma | api_enums::PaymentMethodType::AfterpayClearpay