diff --git a/config/deployments/integration_test.toml b/config/deployments/integration_test.toml index a42a6a8c3230..738edcbda845 100644 --- a/config/deployments/integration_test.toml +++ b/config/deployments/integration_test.toml @@ -4,11 +4,12 @@ eps.adyen.banks = "bank_austria,bawag_psk_ag,dolomitenbank,easybank_ag,erste_ban eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria,bankhaus_carl_spangler,bankhaus_schelhammer_und_schattera_ag,bawag_psk_ag,bks_bank_ag,brull_kallmus_bank_ag,btv_vier_lander_bank,capital_bank_grawe_gruppe_ag,dolomitenbank,easybank_ag,erste_bank_und_sparkassen,hypo_alpeadriabank_international_ag,hypo_noe_lb_fur_niederosterreich_u_wien,hypo_oberosterreich_salzburg_steiermark,hypo_tirol_bank_ag,hypo_vorarlberg_bank_ag,hypo_bank_burgenland_aktiengesellschaft,marchfelder_bank,oberbank_ag,raiffeisen_bankengruppe_osterreich,schoellerbank_ag,sparda_bank_wien,volksbank_gruppe,volkskreditbank_ag,vr_bank_braunau" ideal.adyen.banks = "abn_amro,asn_bank,bunq,ing,knab,n26,nationale_nederlanden,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot,yoursafe" ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot" +ideal.multisafepay.banks = "abn_amro, asn_bank, bunq, handelsbanken, nationale_nederlanden, n26, ing, knab, rabobank, regiobank, revolut, sns_bank,triodos_bank, van_lanschot, yoursafe" online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza" online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank" online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24" online_banking_slovakia.adyen.banks = "e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo" -online_banking_thailand.adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank" +online_banking_thailand.adyen.banks = "bangkok_bank,krungsrgiri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank" open_banking_uk.adyen.banks = "aib,bank_of_scotland,danske_bank,first_direct,first_trust,halifax,lloyds,monzo,nat_west,nationwide_bank,royal_bank_of_scotland,starling,tsb_bank,tesco_bank,ulster_bank,barclays,hsbc_bank,revolut,santander_przelew24,open_bank_success,open_bank_failure,open_bank_cancelled" przelewy24.stripe.banks = "alior_bank,bank_millennium,bank_nowy_bfg_sa,bank_pekao_sa,banki_spbdzielcze,blik,bnp_paribas,boz,citi,credit_agricole,e_transfer_pocztowy24,getin_bank,idea_bank,inteligo,mbank_mtransfer,nest_przelew,noble_pay,pbac_z_ipko,plus_bank,santander_przelew24,toyota_bank,volkswagen_bank" @@ -137,10 +138,9 @@ pay_later.klarna.connector_list = "adyen" # Mandate suppor wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.google_pay.connector_list = "stripe,adyen,cybersource,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.paypal.connector_list = "adyen" # Mandate supported payment method type and connector for wallets -bank_redirect.ideal.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect +bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect bank_redirect.sofort.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect -bank_redirect.giropay.connector_list = "adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect - +bank_redirect.giropay.connector_list = "adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect [mandates.update_mandate_supported] card.credit = { connector_list = "cybersource" } # Update Mandate supported payment method type and connector for card diff --git a/config/deployments/production.toml b/config/deployments/production.toml index 0cc740673376..b4e02172dfcc 100644 --- a/config/deployments/production.toml +++ b/config/deployments/production.toml @@ -4,6 +4,7 @@ eps.adyen.banks = "bank_austria,bawag_psk_ag,dolomitenbank,easybank_ag,erste_ban eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria,bankhaus_carl_spangler,bankhaus_schelhammer_und_schattera_ag,bawag_psk_ag,bks_bank_ag,brull_kallmus_bank_ag,btv_vier_lander_bank,capital_bank_grawe_gruppe_ag,dolomitenbank,easybank_ag,erste_bank_und_sparkassen,hypo_alpeadriabank_international_ag,hypo_noe_lb_fur_niederosterreich_u_wien,hypo_oberosterreich_salzburg_steiermark,hypo_tirol_bank_ag,hypo_vorarlberg_bank_ag,hypo_bank_burgenland_aktiengesellschaft,marchfelder_bank,oberbank_ag,raiffeisen_bankengruppe_osterreich,schoellerbank_ag,sparda_bank_wien,volksbank_gruppe,volkskreditbank_ag,vr_bank_braunau" ideal.adyen.banks = "abn_amro,asn_bank,bunq,ing,knab,n26,nationale_nederlanden,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot,yoursafe" ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot" +ideal.multisafepay.banks = "abn_amro, asn_bank, bunq, handelsbanken, nationale_nederlanden, n26, ing, knab, rabobank, regiobank, revolut, sns_bank,triodos_bank, van_lanschot, yoursafe" online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza" online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank" online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24" @@ -137,9 +138,9 @@ pay_later.klarna.connector_list = "adyen" # Mandate suppor wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.google_pay.connector_list = "stripe,adyen,cybersource,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.paypal.connector_list = "adyen" # Mandate supported payment method type and connector for wallets -bank_redirect.ideal.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect +bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect bank_redirect.sofort.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect -bank_redirect.giropay.connector_list = "adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect +bank_redirect.giropay.connector_list = "adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect [mandates.update_mandate_supported] card.credit = { connector_list = "cybersource" } # Update Mandate supported payment method type and connector for card diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml index a61ad70eccf6..180cf56db4d1 100644 --- a/config/deployments/sandbox.toml +++ b/config/deployments/sandbox.toml @@ -4,6 +4,7 @@ eps.adyen.banks = "bank_austria,bawag_psk_ag,dolomitenbank,easybank_ag,erste_ban eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria,bankhaus_carl_spangler,bankhaus_schelhammer_und_schattera_ag,bawag_psk_ag,bks_bank_ag,brull_kallmus_bank_ag,btv_vier_lander_bank,capital_bank_grawe_gruppe_ag,dolomitenbank,easybank_ag,erste_bank_und_sparkassen,hypo_alpeadriabank_international_ag,hypo_noe_lb_fur_niederosterreich_u_wien,hypo_oberosterreich_salzburg_steiermark,hypo_tirol_bank_ag,hypo_vorarlberg_bank_ag,hypo_bank_burgenland_aktiengesellschaft,marchfelder_bank,oberbank_ag,raiffeisen_bankengruppe_osterreich,schoellerbank_ag,sparda_bank_wien,volksbank_gruppe,volkskreditbank_ag,vr_bank_braunau" ideal.adyen.banks = "abn_amro,asn_bank,bunq,ing,knab,n26,nationale_nederlanden,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot,yoursafe" ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot" +ideal.multisafepay.banks = "abn_amro, asn_bank, bunq, handelsbanken, nationale_nederlanden, n26, ing, knab, rabobank, regiobank, revolut, sns_bank,triodos_bank, van_lanschot, yoursafe" online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza" online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank" online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24" @@ -137,9 +138,9 @@ pay_later.klarna.connector_list = "adyen" # Mandate suppor wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.google_pay.connector_list = "stripe,adyen,cybersource,bankofamerica" # Mandate supported payment method type and connector for wallets wallet.paypal.connector_list = "adyen" # Mandate supported payment method type and connector for wallets -bank_redirect.ideal.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect +bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect bank_redirect.sofort.connector_list = "stripe,adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect -bank_redirect.giropay.connector_list = "adyen,globalpay" # Mandate supported payment method type and connector for bank_redirect +bank_redirect.giropay.connector_list = "adyen,globalpay,multisafepay" # Mandate supported payment method type and connector for bank_redirect [mandates.update_mandate_supported] card.credit = { connector_list = "cybersource" } # Update Mandate supported payment method type and connector for card diff --git a/config/development.toml b/config/development.toml index 95cadf56617c..a742edcf7275 100644 --- a/config/development.toml +++ b/config/development.toml @@ -281,6 +281,7 @@ adyen = { banks = "bank_austria,bawag_psk_ag,dolomitenbank,easybank_ag,erste_ban [bank_config.ideal] stripe = { banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot" } adyen = { banks = "abn_amro,asn_bank,bunq,ing,knab,n26,nationale_nederlanden,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot, yoursafe" } +multisafepay = { banks="abn_amro, asn_bank, bunq, handelsbanken, nationale_nederlanden, n26, ing, knab, rabobank, regiobank, revolut, sns_bank,triodos_bank, van_lanschot, yoursafe" } [bank_config.online_banking_czech_republic] adyen = { banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza" } @@ -533,9 +534,9 @@ card.debit = { connector_list = "stripe,adyen,authorizedotnet,cybersource,global bank_debit.ach = { connector_list = "gocardless" } bank_debit.becs = { connector_list = "gocardless" } bank_debit.sepa = { connector_list = "gocardless" } -bank_redirect.ideal = { connector_list = "stripe,adyen,globalpay" } +bank_redirect.ideal = { connector_list = "stripe,adyen,globalpay,multisafepay" } bank_redirect.sofort = { connector_list = "stripe,adyen,globalpay" } -bank_redirect.giropay = { connector_list = "adyen,globalpay" } +bank_redirect.giropay = { connector_list = "adyen,globalpay,multisafepay" } [mandates.update_mandate_supported] card.credit = { connector_list = "cybersource" } diff --git a/crates/router/src/connector/multisafepay/transformers.rs b/crates/router/src/connector/multisafepay/transformers.rs index d3aadcd06070..49e4c5162654 100644 --- a/crates/router/src/connector/multisafepay/transformers.rs +++ b/crates/router/src/connector/multisafepay/transformers.rs @@ -1,3 +1,4 @@ +use api_models::enums::BankNames; use common_enums::AttemptStatus; use common_utils::pii::{Email, IpAddress}; use masking::ExposeInterface; @@ -52,6 +53,8 @@ pub enum Gateway { Klarna, Googlepay, Paypal, + Ideal, + Giropay, } #[serde_with::skip_serializing_none] @@ -162,6 +165,7 @@ pub enum GatewayInfo { Card(CardInfo), Wallet(WalletInfo), PayLater(PayLaterInfo), + BankRedirect(BankRedirectInfo), } #[derive(Clone, Debug, Eq, PartialEq, Serialize)] @@ -170,6 +174,207 @@ pub enum WalletInfo { GooglePay(GpayInfo), } +#[derive(Clone, Debug, Eq, PartialEq, Serialize)] +#[serde(untagged)] +pub enum BankRedirectInfo { + Ideal(IdealInfo), +} + +#[derive(Debug, Clone, Serialize, Eq, PartialEq)] +pub struct IdealInfo { + pub issuer_id: MultisafepayBankNames, +} + +#[derive(Debug, Clone, Serialize, Eq, PartialEq)] +pub enum MultisafepayBankNames { + #[serde(rename = "0031")] + AbnAmro, + #[serde(rename = "0761")] + AsnBank, + #[serde(rename = "4371")] + Bunq, + #[serde(rename = "0721")] + Ing, + #[serde(rename = "0801")] + Knab, + #[serde(rename = "9926")] + N26, + #[serde(rename = "9927")] + NationaleNederlanden, + #[serde(rename = "0021")] + Rabobank, + #[serde(rename = "0771")] + Regiobank, + #[serde(rename = "1099")] + Revolut, + #[serde(rename = "0751")] + SnsBank, + #[serde(rename = "0511")] + TriodosBank, + #[serde(rename = "0161")] + VanLanschot, + #[serde(rename = "0806")] + Yoursafe, + #[serde(rename = "1235")] + Handelsbanken, +} + +impl TryFrom<&BankNames> for MultisafepayBankNames { + type Error = error_stack::Report; + fn try_from(bank: &BankNames) -> Result { + match bank { + BankNames::AbnAmro => Ok(Self::AbnAmro), + BankNames::AsnBank => Ok(Self::AsnBank), + BankNames::Bunq => Ok(Self::Bunq), + BankNames::Ing => Ok(Self::Ing), + BankNames::Knab => Ok(Self::Knab), + BankNames::N26 => Ok(Self::N26), + BankNames::NationaleNederlanden => Ok(Self::NationaleNederlanden), + BankNames::Rabobank => Ok(Self::Rabobank), + BankNames::Regiobank => Ok(Self::Regiobank), + BankNames::Revolut => Ok(Self::Revolut), + BankNames::SnsBank => Ok(Self::SnsBank), + BankNames::TriodosBank => Ok(Self::TriodosBank), + BankNames::VanLanschot => Ok(Self::VanLanschot), + BankNames::Yoursafe => Ok(Self::Yoursafe), + BankNames::Handelsbanken => Ok(Self::Handelsbanken), + BankNames::AmericanExpress + | BankNames::AffinBank + | BankNames::AgroBank + | BankNames::AllianceBank + | BankNames::AmBank + | BankNames::BankOfAmerica + | BankNames::BankIslam + | BankNames::BankMuamalat + | BankNames::BankRakyat + | BankNames::BankSimpananNasional + | BankNames::Barclays + | BankNames::BlikPSP + | BankNames::CapitalOne + | BankNames::Chase + | BankNames::Citi + | BankNames::CimbBank + | BankNames::Discover + | BankNames::NavyFederalCreditUnion + | BankNames::PentagonFederalCreditUnion + | BankNames::SynchronyBank + | BankNames::WellsFargo + | BankNames::HongLeongBank + | BankNames::HsbcBank + | BankNames::KuwaitFinanceHouse + | BankNames::Moneyou + | BankNames::ArzteUndApothekerBank + | BankNames::AustrianAnadiBankAg + | BankNames::BankAustria + | BankNames::Bank99Ag + | BankNames::BankhausCarlSpangler + | BankNames::BankhausSchelhammerUndSchatteraAg + | BankNames::BankMillennium + | BankNames::BankPEKAOSA + | BankNames::BawagPskAg + | BankNames::BksBankAg + | BankNames::BrullKallmusBankAg + | BankNames::BtvVierLanderBank + | BankNames::CapitalBankGraweGruppeAg + | BankNames::CeskaSporitelna + | BankNames::Dolomitenbank + | BankNames::EasybankAg + | BankNames::EPlatbyVUB + | BankNames::ErsteBankUndSparkassen + | BankNames::FrieslandBank + | BankNames::HypoAlpeadriabankInternationalAg + | BankNames::HypoNoeLbFurNiederosterreichUWien + | BankNames::HypoOberosterreichSalzburgSteiermark + | BankNames::HypoTirolBankAg + | BankNames::HypoVorarlbergBankAg + | BankNames::HypoBankBurgenlandAktiengesellschaft + | BankNames::KomercniBanka + | BankNames::MBank + | BankNames::MarchfelderBank + | BankNames::Maybank + | BankNames::OberbankAg + | BankNames::OsterreichischeArzteUndApothekerbank + | BankNames::OcbcBank + | BankNames::PayWithING + | BankNames::PlaceZIPKO + | BankNames::PlatnoscOnlineKartaPlatnicza + | BankNames::PosojilnicaBankEGen + | BankNames::PostovaBanka + | BankNames::PublicBank + | BankNames::RaiffeisenBankengruppeOsterreich + | BankNames::RhbBank + | BankNames::SchelhammerCapitalBankAg + | BankNames::StandardCharteredBank + | BankNames::SchoellerbankAg + | BankNames::SpardaBankWien + | BankNames::SporoPay + | BankNames::SantanderPrzelew24 + | BankNames::TatraPay + | BankNames::Viamo + | BankNames::VolksbankGruppe + | BankNames::VolkskreditbankAg + | BankNames::VrBankBraunau + | BankNames::UobBank + | BankNames::PayWithAliorBank + | BankNames::BankiSpoldzielcze + | BankNames::PayWithInteligo + | BankNames::BNPParibasPoland + | BankNames::BankNowySA + | BankNames::CreditAgricole + | BankNames::PayWithBOS + | BankNames::PayWithCitiHandlowy + | BankNames::PayWithPlusBank + | BankNames::ToyotaBank + | BankNames::VeloBank + | BankNames::ETransferPocztowy24 + | BankNames::PlusBank + | BankNames::EtransferPocztowy24 + | BankNames::BankiSpbdzielcze + | BankNames::BankNowyBfgSa + | BankNames::GetinBank + | BankNames::Blik + | BankNames::NoblePay + | BankNames::IdeaBank + | BankNames::EnveloBank + | BankNames::NestPrzelew + | BankNames::MbankMtransfer + | BankNames::Inteligo + | BankNames::PbacZIpko + | BankNames::BnpParibas + | BankNames::BankPekaoSa + | BankNames::VolkswagenBank + | BankNames::AliorBank + | BankNames::Boz + | BankNames::BangkokBank + | BankNames::KrungsriBank + | BankNames::KrungThaiBank + | BankNames::TheSiamCommercialBank + | BankNames::KasikornBank + | BankNames::OpenBankSuccess + | BankNames::OpenBankFailure + | BankNames::OpenBankCancelled + | BankNames::Aib + | BankNames::BankOfScotland + | BankNames::DanskeBank + | BankNames::FirstDirect + | BankNames::FirstTrust + | BankNames::Halifax + | BankNames::Lloyds + | BankNames::Monzo + | BankNames::NatWest + | BankNames::NationwideBank + | BankNames::RoyalBankOfScotland + | BankNames::Starling + | BankNames::TsbBank + | BankNames::TescoBank + | BankNames::UlsterBank => Err(Into::into(errors::ConnectorError::NotSupported { + message: String::from("BankRedirect"), + connector: "Multisafepay", + })), + } + } +} + #[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)] pub struct DeliveryObject { first_name: Secret, @@ -300,6 +505,29 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }, + domain::PaymentMethodData::BankRedirect(ref bank_data) => match bank_data { + domain::BankRedirectData::Giropay { .. } => Type::Redirect, + domain::BankRedirectData::Ideal { .. } => Type::Direct, + domain::BankRedirectData::BancontactCard { .. } + | domain::BankRedirectData::Bizum { .. } + | domain::BankRedirectData::Blik { .. } + | domain::BankRedirectData::Eps { .. } + | domain::BankRedirectData::Interac { .. } + | domain::BankRedirectData::OnlineBankingCzechRepublic { .. } + | domain::BankRedirectData::OnlineBankingFinland { .. } + | domain::BankRedirectData::OnlineBankingPoland { .. } + | domain::BankRedirectData::OnlineBankingSlovakia { .. } + | domain::BankRedirectData::OpenBankingUk { .. } + | domain::BankRedirectData::Przelewy24 { .. } + | domain::BankRedirectData::Sofort { .. } + | domain::BankRedirectData::Trustly { .. } + | domain::BankRedirectData::OnlineBankingFpx { .. } + | domain::BankRedirectData::OnlineBankingThailand { .. } => { + Err(errors::ConnectorError::NotImplemented( + utils::get_unimplemented_payment_method_error_message("multisafepay"), + ))? + } + }, domain::PaymentMethodData::PayLater(ref _paylater) => Type::Redirect, _ => Type::Redirect, }; @@ -339,13 +567,35 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }), + domain::PaymentMethodData::BankRedirect(ref bank_data) => Some(match bank_data { + domain::BankRedirectData::Giropay { .. } => Gateway::Giropay, + domain::BankRedirectData::Ideal { .. } => Gateway::Ideal, + domain::BankRedirectData::BancontactCard { .. } + | domain::BankRedirectData::Bizum { .. } + | domain::BankRedirectData::Blik { .. } + | domain::BankRedirectData::Eps { .. } + | domain::BankRedirectData::Interac { .. } + | domain::BankRedirectData::OnlineBankingCzechRepublic { .. } + | domain::BankRedirectData::OnlineBankingFinland { .. } + | domain::BankRedirectData::OnlineBankingPoland { .. } + | domain::BankRedirectData::OnlineBankingSlovakia { .. } + | domain::BankRedirectData::OpenBankingUk { .. } + | domain::BankRedirectData::Przelewy24 { .. } + | domain::BankRedirectData::Sofort { .. } + | domain::BankRedirectData::Trustly { .. } + | domain::BankRedirectData::OnlineBankingFpx { .. } + | domain::BankRedirectData::OnlineBankingThailand { .. } => { + Err(errors::ConnectorError::NotImplemented( + utils::get_unimplemented_payment_method_error_message("multisafepay"), + ))? + } + }), domain::PaymentMethodData::PayLater(domain::PayLaterData::KlarnaRedirect {}) => { Some(Gateway::Klarna) } domain::PaymentMethodData::MandatePayment => None, domain::PaymentMethodData::CardRedirect(_) | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) | domain::PaymentMethodData::BankDebit(_) | domain::PaymentMethodData::BankTransfer(_) | domain::PaymentMethodData::Crypto(_) @@ -493,9 +743,37 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> }), })) } + domain::PaymentMethodData::BankRedirect(ref bank_redirect_data) => { + match bank_redirect_data { + domain::BankRedirectData::Ideal { bank_name, .. } => Some( + GatewayInfo::BankRedirect(BankRedirectInfo::Ideal(IdealInfo { + issuer_id: MultisafepayBankNames::try_from(&bank_name.ok_or( + errors::ConnectorError::MissingRequiredField { + field_name: "ideal.bank_name", + }, + )?)?, + })), + ), + domain::BankRedirectData::BancontactCard { .. } + | domain::BankRedirectData::Bizum { .. } + | domain::BankRedirectData::Blik { .. } + | domain::BankRedirectData::Eps { .. } + | domain::BankRedirectData::Giropay { .. } + | domain::BankRedirectData::Interac { .. } + | domain::BankRedirectData::OnlineBankingCzechRepublic { .. } + | domain::BankRedirectData::OnlineBankingFinland { .. } + | domain::BankRedirectData::OnlineBankingPoland { .. } + | domain::BankRedirectData::OnlineBankingSlovakia { .. } + | domain::BankRedirectData::OpenBankingUk { .. } + | domain::BankRedirectData::Przelewy24 { .. } + | domain::BankRedirectData::Sofort { .. } + | domain::BankRedirectData::Trustly { .. } + | domain::BankRedirectData::OnlineBankingFpx { .. } + | domain::BankRedirectData::OnlineBankingThailand { .. } => None, + } + } domain::PaymentMethodData::MandatePayment => None, domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::BankRedirect(_) | domain::PaymentMethodData::BankDebit(_) | domain::PaymentMethodData::BankTransfer(_) | domain::PaymentMethodData::Crypto(_)