From b9f12708e108c3ac691314d32b7976d7e381eee7 Mon Sep 17 00:00:00 2001 From: Sakil Mostak <73734619+Sakilmostak@users.noreply.github.com> Date: Tue, 8 Aug 2023 17:12:36 +0530 Subject: [PATCH] feat(connector): [Adyen] Implement Open Banking Uk in Bank Redirects (#1802) Co-authored-by: Arjun Karthik --- config/config.example.toml | 5 + config/development.toml | 4 + config/docker_compose.toml | 4 + crates/api_models/src/enums.rs | 18 +++ crates/api_models/src/payments.rs | 8 ++ crates/common_enums/src/enums.rs | 1 + crates/common_enums/src/transformers.rs | 1 + crates/diesel_models/src/enums.rs | 18 +++ .../src/connector/adyen/transformers.rs | 126 ++++++++++++++++-- .../src/connector/nuvei/transformers.rs | 3 +- .../src/connector/stripe/transformers.rs | 5 +- crates/router/src/core/payments/helpers.rs | 1 + crates/router/src/types/transformers.rs | 1 + openapi/openapi_spec.json | 44 +++++- 14 files changed, 223 insertions(+), 16 deletions(-) diff --git a/config/config.example.toml b/config/config.example.toml index 6e005dcb5a..0daece8a0a 100644 --- a/config/config.example.toml +++ b/config/config.example.toml @@ -217,6 +217,10 @@ adyen = { banks = "e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo" } [bank_config.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"} +# Bank redirect configs for allowed banks through open_banking_uk payment method +[bank_config.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"} + # Bank redirect configs for allowed banks through przelewy24 payment method [bank_config.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" } @@ -349,6 +353,7 @@ danamon_va = {country = "ID", currency = "IDR"} mandiri_va = {country = "ID", currency = "IDR"} alfamart = {country = "ID", currency = "IDR"} indomaret = {country = "ID", currency = "IDR"} +open_banking_uk = {country = "GB", currency = "GBP"} oxxo = {country = "MX", currency = "MXN"} pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"} diff --git a/config/development.toml b/config/development.toml index 03cdc10bc3..920ad46804 100644 --- a/config/development.toml +++ b/config/development.toml @@ -204,6 +204,9 @@ adyen = { banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24, [bank_config.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" } +[bank_config.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"} + [bank_config.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,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank" @@ -281,6 +284,7 @@ danamon_va = {country = "ID", currency = "IDR"} mandiri_va = {country = "ID", currency = "IDR"} alfamart = {country = "ID", currency = "IDR"} indomaret = {country = "ID", currency = "IDR"} +open_banking_uk = {country = "GB", currency = "GBP"} oxxo = {country = "MX", currency = "MXN"} pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"} diff --git a/config/docker_compose.toml b/config/docker_compose.toml index c58ced9902..b5f23f5015 100644 --- a/config/docker_compose.toml +++ b/config/docker_compose.toml @@ -232,6 +232,7 @@ danamon_va = {country = "ID", currency = "IDR"} mandiri_va = {country = "ID", currency = "IDR"} alfamart = {country = "ID", currency = "IDR"} indomaret = {country = "ID", currency = "IDR"} +open_banking_uk = {country = "GB", currency = "GBP"} oxxo = {country = "MX", currency = "MXN"} pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"} @@ -261,6 +262,9 @@ adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamal [bank_config.online_banking_thailand] adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank" +[bank_config.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"} + [mandates.supported_payment_methods] pay_later.klarna = {connector_list = "adyen"} wallet.google_pay = {connector_list = "stripe,adyen"} diff --git a/crates/api_models/src/enums.rs b/crates/api_models/src/enums.rs index ba69da857f..ec1d77aa6b 100644 --- a/crates/api_models/src/enums.rs +++ b/crates/api_models/src/enums.rs @@ -405,6 +405,24 @@ pub enum BankNames { KrungThaiBank, TheSiamCommercialBank, KasikornBank, + OpenBankSuccess, + OpenBankFailure, + OpenBankCancelled, + Aib, + BankOfScotland, + DanskeBank, + FirstDirect, + FirstTrust, + Halifax, + Lloyds, + Monzo, + NatWest, + NationwideBank, + RoyalBankOfScotland, + Starling, + TsbBank, + TescoBank, + UlsterBank, } #[derive( diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index b32a398b88..18e7200571 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -882,6 +882,14 @@ pub enum BankRedirectData { #[schema(value_type = BankNames)] issuer: api_enums::BankNames, }, + OpenBankingUk { + // Issuer banks + #[schema(value_type = BankNames)] + issuer: api_enums::BankNames, + /// The country for bank payment + #[schema(value_type = CountryAlpha2, example = "US")] + country: api_enums::CountryAlpha2, + }, Przelewy24 { //Issuer banks #[schema(value_type = Option)] diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs index 8ca1dd8b9a..b23840f713 100644 --- a/crates/common_enums/src/enums.rs +++ b/crates/common_enums/src/enums.rs @@ -922,6 +922,7 @@ pub enum PaymentMethodType { Oxxo, PagoEfectivo, PermataBankTransfer, + OpenBankingUk, PayBright, Paypal, Pix, diff --git a/crates/common_enums/src/transformers.rs b/crates/common_enums/src/transformers.rs index 3f689f5c2f..adfbc45606 100644 --- a/crates/common_enums/src/transformers.rs +++ b/crates/common_enums/src/transformers.rs @@ -1609,6 +1609,7 @@ impl From for PaymentMethod { PaymentMethodType::Cashapp => Self::Wallet, PaymentMethodType::Givex => Self::GiftCard, PaymentMethodType::Oxxo => Self::Voucher, + PaymentMethodType::OpenBankingUk => Self::BankRedirect, } } } diff --git a/crates/diesel_models/src/enums.rs b/crates/diesel_models/src/enums.rs index fb6dd585c1..22e226a18a 100644 --- a/crates/diesel_models/src/enums.rs +++ b/crates/diesel_models/src/enums.rs @@ -312,6 +312,24 @@ pub enum BankNames { KrungThaiBank, TheSiamCommercialBank, KasikornBank, + OpenBankSuccess, + OpenBankFailure, + OpenBankCancelled, + Aib, + BankOfScotland, + DanskeBank, + FirstDirect, + FirstTrust, + Halifax, + Lloyds, + Monzo, + NatWest, + NationwideBank, + RoyalBankOfScotland, + Starling, + TsbBank, + TescoBank, + UlsterBank, } #[derive( diff --git a/crates/router/src/connector/adyen/transformers.rs b/crates/router/src/connector/adyen/transformers.rs index d74f203630..6b64c67931 100644 --- a/crates/router/src/connector/adyen/transformers.rs +++ b/crates/router/src/connector/adyen/transformers.rs @@ -408,6 +408,8 @@ pub enum AdyenPaymentMethod<'a> { OnlineBankingFpx(Box), #[serde(rename = "molpay_ebanking_TH")] OnlineBankingThailand(Box), + #[serde(rename = "paybybank")] + OpenBankingUK(Box), #[serde(rename = "oxxo")] Oxxo, #[serde(rename = "paysafecard")] @@ -697,6 +699,11 @@ pub struct OnlineBankingThailandData { issuer: OnlineBankingThailandIssuer, } +#[derive(Debug, Clone, Serialize)] +pub struct OpenBankingUKData { + issuer: OpenBankingUKIssuer, +} + #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "lowercase")] pub enum OnlineBankingSlovakiaBanks { @@ -774,6 +781,41 @@ impl TryFrom<&api_enums::BankNames> for OnlineBankingThailandIssuer { } } +impl TryFrom<&api_enums::BankNames> for OpenBankingUKIssuer { + type Error = Error; + fn try_from(bank_name: &api_enums::BankNames) -> Result { + match bank_name { + api::enums::BankNames::OpenBankSuccess => Ok(Self::RedirectSuccess), + api::enums::BankNames::OpenBankFailure => Ok(Self::RedirectFailure), + api::enums::BankNames::OpenBankCancelled => Ok(Self::RedirectCancelled), + api::enums::BankNames::Aib => Ok(Self::Aib), + api::enums::BankNames::BankOfScotland => Ok(Self::BankOfScotland), + api::enums::BankNames::Barclays => Ok(Self::Barclays), + api::enums::BankNames::DanskeBank => Ok(Self::DanskeBank), + api::enums::BankNames::FirstDirect => Ok(Self::FirstDirect), + api::enums::BankNames::FirstTrust => Ok(Self::FirstTrust), + api::enums::BankNames::HsbcBank => Ok(Self::HsbcBank), + api::enums::BankNames::Halifax => Ok(Self::Halifax), + api::enums::BankNames::Lloyds => Ok(Self::Lloyds), + api::enums::BankNames::Monzo => Ok(Self::Monzo), + api::enums::BankNames::NatWest => Ok(Self::NatWest), + api::enums::BankNames::NationwideBank => Ok(Self::NationwideBank), + api::enums::BankNames::Revolut => Ok(Self::Revolut), + api::enums::BankNames::RoyalBankOfScotland => Ok(Self::RoyalBankOfScotland), + api::enums::BankNames::SantanderPrzelew24 => Ok(Self::SantanderPrzelew24), + api::enums::BankNames::Starling => Ok(Self::Starling), + api::enums::BankNames::TsbBank => Ok(Self::TsbBank), + api::enums::BankNames::TescoBank => Ok(Self::TescoBank), + api::enums::BankNames::UlsterBank => Ok(Self::UlsterBank), + _ => Err(errors::ConnectorError::NotSupported { + message: String::from("BankRedirect"), + connector: "Adyen", + payment_experience: api_enums::PaymentExperience::RedirectToUrl.to_string(), + })?, + } + } +} + #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "camelCase")] pub struct BlikRedirectionData { @@ -981,6 +1023,8 @@ pub enum PaymentType { OnlineBankingFpx, #[serde(rename = "molpay_ebanking_TH")] OnlineBankingThailand, + #[serde(rename = "paybybank")] + OpenBankingUK, #[serde(rename = "oxxo")] Oxxo, #[serde(rename = "paysafecard")] @@ -1071,6 +1115,54 @@ pub enum OnlineBankingThailandIssuer { Kbank, } +#[derive(Debug, Eq, PartialEq, Serialize, Clone)] +pub enum OpenBankingUKIssuer { + #[serde(rename = "uk-test-open-banking-redirect")] + RedirectSuccess, + #[serde(rename = "uk-test-open-banking-redirect-failed")] + RedirectFailure, + #[serde(rename = "uk-test-open-banking-redirect-cancelled")] + RedirectCancelled, + #[serde(rename = "uk-aib-oauth2")] + Aib, + #[serde(rename = "uk-bankofscotland-oauth2")] + BankOfScotland, + #[serde(rename = "uk-barclays-oauth2")] + Barclays, + #[serde(rename = "uk-danskebank-oauth2")] + DanskeBank, + #[serde(rename = "uk-firstdirect-oauth2")] + FirstDirect, + #[serde(rename = "uk-firsttrust-oauth2")] + FirstTrust, + #[serde(rename = "uk-hsbc-oauth2")] + HsbcBank, + #[serde(rename = "uk-halifax-oauth2")] + Halifax, + #[serde(rename = "uk-lloyds-oauth2")] + Lloyds, + #[serde(rename = "uk-monzo-oauth2")] + Monzo, + #[serde(rename = "uk-natwest-oauth2")] + NatWest, + #[serde(rename = "uk-nationwide-oauth2")] + NationwideBank, + #[serde(rename = "uk-revolut-oauth2")] + Revolut, + #[serde(rename = "uk-rbs-oauth2")] + RoyalBankOfScotland, + #[serde(rename = "uk-santander-oauth2")] + SantanderPrzelew24, + #[serde(rename = "uk-starling-oauth2")] + Starling, + #[serde(rename = "uk-tsb-oauth2")] + TsbBank, + #[serde(rename = "uk-tesco-oauth2")] + TescoBank, + #[serde(rename = "uk-ulster-oauth2")] + UlsterBank, +} + pub struct AdyenTestBankNames<'a>(&'a str); impl<'a> TryFrom<&api_enums::BankNames> for AdyenTestBankNames<'a> { @@ -1862,6 +1954,11 @@ impl<'a> TryFrom<&api_models::payments::BankRedirectData> for AdyenPaymentMethod issuer: OnlineBankingThailandIssuer::try_from(issuer)?, })), ), + api_models::payments::BankRedirectData::OpenBankingUk { issuer, .. } => Ok( + AdyenPaymentMethod::OpenBankingUK(Box::new(OpenBankingUKData { + issuer: OpenBankingUKIssuer::try_from(issuer)?, + })), + ), api_models::payments::BankRedirectData::Sofort { .. } => Ok(AdyenPaymentMethod::Sofort), api_models::payments::BankRedirectData::Trustly { .. } => { Ok(AdyenPaymentMethod::Trustly) @@ -2301,7 +2398,7 @@ impl<'a> let additional_data = get_additional_data(item); let return_url = item.request.get_return_url()?; let payment_method = AdyenPaymentMethod::try_from(bank_redirect_data)?; - let (shopper_locale, country) = get_sofort_extra_details(item); + let (shopper_locale, country) = get_redirect_extra_details(item); let line_items = Some(get_line_items(item)); Ok(AdyenPaymentRequest { @@ -2330,23 +2427,24 @@ impl<'a> } } -fn get_sofort_extra_details( +fn get_redirect_extra_details( item: &types::PaymentsAuthorizeRouterData, ) -> (Option, Option) { match item.request.payment_method_data { - api_models::payments::PaymentMethodData::BankRedirect(ref b) => { - if let api_models::payments::BankRedirectData::Sofort { - country, - preferred_language, - .. - } = b - { - ( + api_models::payments::PaymentMethodData::BankRedirect(ref redirect_data) => { + match redirect_data { + api_models::payments::BankRedirectData::Sofort { + country, + preferred_language, + .. + } => ( Some(preferred_language.to_string()), Some(country.to_owned()), - ) - } else { - (None, None) + ), + api_models::payments::BankRedirectData::OpenBankingUk { country, .. } => { + (None, Some(country.to_owned())) + } + _ => (None, None), } } _ => (None, None), @@ -2904,6 +3002,7 @@ pub fn get_wait_screen_metadata( | PaymentType::OnlineBankingSlovakia | PaymentType::OnlineBankingFpx | PaymentType::OnlineBankingThailand + | PaymentType::OpenBankingUK | PaymentType::PayBright | PaymentType::Paypal | PaymentType::Scheme @@ -3008,6 +3107,7 @@ pub fn get_present_to_shopper_metadata( | PaymentType::OnlineBankingSlovakia | PaymentType::OnlineBankingFpx | PaymentType::OnlineBankingThailand + | PaymentType::OpenBankingUK | PaymentType::PayBright | PaymentType::Paypal | PaymentType::Scheme diff --git a/crates/router/src/connector/nuvei/transformers.rs b/crates/router/src/connector/nuvei/transformers.rs index aafab295e5..e378632922 100644 --- a/crates/router/src/connector/nuvei/transformers.rs +++ b/crates/router/src/connector/nuvei/transformers.rs @@ -691,7 +691,8 @@ impl | payments::BankRedirectData::Przelewy24 { .. } | payments::BankRedirectData::Trustly { .. } | payments::BankRedirectData::OnlineBankingFpx { .. } - | payments::BankRedirectData::OnlineBankingThailand { .. } => { + | payments::BankRedirectData::OnlineBankingThailand { .. } + | payments::BankRedirectData::OpenBankingUk { .. } => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("nuvei"), ) diff --git a/crates/router/src/connector/stripe/transformers.rs b/crates/router/src/connector/stripe/transformers.rs index f510e57f43..e8757527a9 100644 --- a/crates/router/src/connector/stripe/transformers.rs +++ b/crates/router/src/connector/stripe/transformers.rs @@ -585,6 +585,7 @@ impl TryFrom for StripePaymentMethodType { | enums::PaymentMethodType::OnlineBankingFpx | enums::PaymentMethodType::OnlineBankingPoland | enums::PaymentMethodType::OnlineBankingSlovakia + | enums::PaymentMethodType::OpenBankingUk | enums::PaymentMethodType::PagoEfectivo | enums::PaymentMethodType::PayBright | enums::PaymentMethodType::Paypal @@ -882,6 +883,7 @@ fn infer_stripe_pay_later_type( | enums::PaymentMethodType::OnlineBankingFpx | enums::PaymentMethodType::OnlineBankingPoland | enums::PaymentMethodType::OnlineBankingSlovakia + | enums::PaymentMethodType::OpenBankingUk | enums::PaymentMethodType::PagoEfectivo | enums::PaymentMethodType::PayBright | enums::PaymentMethodType::Paypal @@ -1099,7 +1101,8 @@ impl TryFrom<&payments::BankRedirectData> for StripeBillingAddress { | payments::BankRedirectData::OnlineBankingSlovakia { .. } | payments::BankRedirectData::Trustly { .. } | payments::BankRedirectData::OnlineBankingFpx { .. } - | payments::BankRedirectData::OnlineBankingThailand { .. } => Ok(Self::default()), + | payments::BankRedirectData::OnlineBankingThailand { .. } + | payments::BankRedirectData::OpenBankingUk { .. } => Ok(Self::default()), } } } diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs index 3f941f303a..7d5a190fe8 100644 --- a/crates/router/src/core/payments/helpers.rs +++ b/crates/router/src/core/payments/helpers.rs @@ -1526,6 +1526,7 @@ pub fn validate_payment_method_type_against_payment_method( | api_enums::PaymentMethodType::Trustly | api_enums::PaymentMethodType::Bizum | api_enums::PaymentMethodType::Interac + | api_enums::PaymentMethodType::OpenBankingUk ), api_enums::PaymentMethod::BankTransfer => matches!( payment_method_type, diff --git a/crates/router/src/types/transformers.rs b/crates/router/src/types/transformers.rs index e19429571a..aff0556bcc 100644 --- a/crates/router/src/types/transformers.rs +++ b/crates/router/src/types/transformers.rs @@ -204,6 +204,7 @@ impl ForeignFrom for api_enums::PaymentMethod { | api_enums::PaymentMethodType::OnlineBankingFpx | api_enums::PaymentMethodType::OnlineBankingPoland | api_enums::PaymentMethodType::OnlineBankingSlovakia + | api_enums::PaymentMethodType::OpenBankingUk | api_enums::PaymentMethodType::Przelewy24 | api_enums::PaymentMethodType::Trustly | api_enums::PaymentMethodType::Bizum diff --git a/openapi/openapi_spec.json b/openapi/openapi_spec.json index 79131df656..2e738dd538 100644 --- a/openapi/openapi_spec.json +++ b/openapi/openapi_spec.json @@ -2741,7 +2741,25 @@ "krungsri_bank", "krung_thai_bank", "the_siam_commercial_bank", - "kasikorn_bank" + "kasikorn_bank", + "open_bank_success", + "open_bank_failure", + "open_bank_cancelled", + "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" ] }, "BankRedirectBilling": { @@ -3027,6 +3045,29 @@ } } }, + { + "type": "object", + "required": [ + "open_banking_uk" + ], + "properties": { + "open_banking_uk": { + "type": "object", + "required": [ + "issuer", + "country" + ], + "properties": { + "issuer": { + "$ref": "#/components/schemas/BankNames" + }, + "country": { + "$ref": "#/components/schemas/CountryAlpha2" + } + } + } + } + }, { "type": "object", "required": [ @@ -7778,6 +7819,7 @@ "oxxo", "pago_efectivo", "permata_bank_transfer", + "open_banking_uk", "pay_bright", "paypal", "pix",