fix(eps_bank_name): send eps supported bank names inside the structs for sdk. (#8779)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
Nithin N
2025-08-11 12:43:23 +05:30
committed by GitHub
parent b46a838d0e
commit d4d8236e31
5 changed files with 50 additions and 87 deletions

View File

@ -29440,7 +29440,8 @@
"items": {
"$ref": "#/components/schemas/BankCodeResponse"
},
"description": "The list of banks enabled, if applicable for a payment method type",
"description": "The list of banks enabled, if applicable for a payment method type . To be deprecated soon.",
"deprecated": true,
"nullable": true
},
"bank_debits": {

View File

@ -1442,7 +1442,8 @@ pub struct ResponsePaymentMethodTypes {
/// The list of card networks enabled, if applicable for a payment method type
pub card_networks: Option<Vec<CardNetworkTypes>>,
/// The list of banks enabled, if applicable for a payment method type
#[schema(deprecated)]
/// The list of banks enabled, if applicable for a payment method type . To be deprecated soon.
pub bank_names: Option<Vec<BankCodeResponse>>,
/// The Bank debit payment method information, if applicable for a payment method type.

View File

@ -6,8 +6,9 @@ use api_models::{
};
use crate::configs::settings::{
ConnectorFields, Mandates, RequiredFieldFinal, SupportedConnectorsForMandate,
SupportedPaymentMethodTypesForMandate, SupportedPaymentMethodsForMandate, ZeroMandates,
BankRedirectConfig, ConnectorFields, Mandates, RequiredFieldFinal,
SupportedConnectorsForMandate, SupportedPaymentMethodTypesForMandate,
SupportedPaymentMethodsForMandate, ZeroMandates,
};
#[cfg(feature = "v1")]
use crate::configs::settings::{PaymentMethodType, RequiredFields};
@ -1001,8 +1002,8 @@ pub fn get_shipping_required_fields() -> HashMap<String, RequiredFieldInfo> {
}
#[cfg(feature = "v1")]
impl Default for RequiredFields {
fn default() -> Self {
impl RequiredFields {
pub fn new(bank_config: &BankRedirectConfig) -> Self {
let cards_required_fields = get_cards_required_fields();
let mut debit_required_fields = cards_required_fields.clone();
debit_required_fields.extend(HashMap::from([
@ -1043,7 +1044,7 @@ impl Default for RequiredFields {
),
(
enums::PaymentMethod::BankRedirect,
PaymentMethodType(get_bank_redirect_required_fields()),
PaymentMethodType(get_bank_redirect_required_fields(bank_config)),
),
(
enums::PaymentMethod::Wallet,
@ -1229,6 +1230,13 @@ impl Default for RequiredFields {
}
}
#[cfg(feature = "v1")]
impl Default for RequiredFields {
fn default() -> Self {
Self::new(&BankRedirectConfig::default())
}
}
#[cfg(feature = "v1")]
fn get_cards_required_fields() -> HashMap<Connector, RequiredFieldFinal> {
HashMap::from([
@ -1598,7 +1606,9 @@ fn get_cards_required_fields() -> HashMap<Connector, RequiredFieldFinal> {
}
#[cfg(feature = "v1")]
fn get_bank_redirect_required_fields() -> HashMap<enums::PaymentMethodType, ConnectorFields> {
fn get_bank_redirect_required_fields(
bank_config: &BankRedirectConfig,
) -> HashMap<enums::PaymentMethodType, ConnectorFields> {
HashMap::from([
(
enums::PaymentMethodType::OpenBankingUk,
@ -2077,69 +2087,14 @@ fn get_bank_redirect_required_fields() -> HashMap<enums::PaymentMethodType, Conn
FieldType::UserFullName,
),
RequiredField::EpsBankOptions(
vec![
enums::BankNames::AbnAmro,
enums::BankNames::ArzteUndApothekerBank,
enums::BankNames::AsnBank,
enums::BankNames::AustrianAnadiBankAg,
enums::BankNames::BankAustria,
enums::BankNames::BankhausCarlSpangler,
enums::BankNames::BankhausSchelhammerUndSchatteraAg,
enums::BankNames::BawagPskAg,
enums::BankNames::BksBankAg,
enums::BankNames::BrullKallmusBankAg,
enums::BankNames::BtvVierLanderBank,
enums::BankNames::Bunq,
enums::BankNames::CapitalBankGraweGruppeAg,
enums::BankNames::Citi,
enums::BankNames::Dolomitenbank,
enums::BankNames::EasybankAg,
enums::BankNames::ErsteBankUndSparkassen,
enums::BankNames::Handelsbanken,
enums::BankNames::HypoAlpeadriabankInternationalAg,
enums::BankNames::HypoNoeLbFurNiederosterreichUWien,
enums::BankNames::HypoOberosterreichSalzburgSteiermark,
enums::BankNames::HypoTirolBankAg,
enums::BankNames::HypoVorarlbergBankAg,
enums::BankNames::HypoBankBurgenlandAktiengesellschaft,
enums::BankNames::Ing,
enums::BankNames::Knab,
enums::BankNames::MarchfelderBank,
enums::BankNames::OberbankAg,
enums::BankNames::RaiffeisenBankengruppeOsterreich,
enums::BankNames::Rabobank,
enums::BankNames::Regiobank,
enums::BankNames::Revolut,
enums::BankNames::SnsBank,
enums::BankNames::TriodosBank,
enums::BankNames::VanLanschot,
enums::BankNames::Moneyou,
enums::BankNames::SchoellerbankAg,
enums::BankNames::SpardaBankWien,
enums::BankNames::VolksbankGruppe,
enums::BankNames::VolkskreditbankAg,
enums::BankNames::VrBankBraunau,
enums::BankNames::PlusBank,
enums::BankNames::EtransferPocztowy24,
enums::BankNames::BankiSpbdzielcze,
enums::BankNames::BankNowyBfgSa,
enums::BankNames::GetinBank,
enums::BankNames::Blik,
enums::BankNames::NoblePay,
enums::BankNames::IdeaBank,
enums::BankNames::EnveloBank,
enums::BankNames::NestPrzelew,
enums::BankNames::MbankMtransfer,
enums::BankNames::Inteligo,
enums::BankNames::PbacZIpko,
enums::BankNames::BnpParibas,
enums::BankNames::BankPekaoSa,
enums::BankNames::VolkswagenBank,
enums::BankNames::AliorBank,
enums::BankNames::Boz,
]
.into_iter()
.collect(),
bank_config
.0
.get(&enums::PaymentMethodType::Eps)
.and_then(|connector_bank_names| {
connector_bank_names.0.get("stripe")
})
.map(|bank_names| bank_names.banks.clone())
.unwrap_or_default(),
),
RequiredField::BillingLastName("billing_name", FieldType::UserFullName),
],

View File

@ -22,6 +22,17 @@ pub struct ConnectorFields {
pub fields: HashMap<enums::Connector, RequiredFieldFinal>,
}
#[derive(Debug, Deserialize, Clone, Default)]
pub struct BankRedirectConfig(pub HashMap<enums::PaymentMethodType, ConnectorBankNames>);
#[derive(Debug, Deserialize, Clone)]
pub struct ConnectorBankNames(pub HashMap<String, BanksVector>);
#[derive(Debug, Deserialize, Clone)]
pub struct BanksVector {
#[serde(deserialize_with = "deserialize_hashset")]
pub banks: HashSet<common_enums::enums::BankNames>,
}
#[cfg(feature = "v1")]
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct RequiredFieldFinal {

View File

@ -30,9 +30,10 @@ use hyperswitch_interfaces::{
};
use masking::Secret;
pub use payment_methods::configs::settings::{
ConnectorFields, EligiblePaymentMethods, Mandates, PaymentMethodAuth, PaymentMethodType,
RequiredFieldFinal, RequiredFields, SupportedConnectorsForMandate,
SupportedPaymentMethodTypesForMandate, SupportedPaymentMethodsForMandate, ZeroMandates,
BankRedirectConfig, BanksVector, ConnectorBankNames, ConnectorFields, EligiblePaymentMethods,
Mandates, PaymentMethodAuth, PaymentMethodType, RequiredFieldFinal, RequiredFields,
SupportedConnectorsForMandate, SupportedPaymentMethodTypesForMandate,
SupportedPaymentMethodsForMandate, ZeroMandates,
};
use redis_interface::RedisSettings;
pub use router_env::config::{Log, LogConsole, LogFile, LogTelemetry};
@ -675,17 +676,6 @@ pub enum PaymentMethodTypeTokenFilter {
AllAccepted,
}
#[derive(Debug, Deserialize, Clone, Default)]
pub struct BankRedirectConfig(pub HashMap<enums::PaymentMethodType, ConnectorBankNames>);
#[derive(Debug, Deserialize, Clone)]
pub struct ConnectorBankNames(pub HashMap<String, BanksVector>);
#[derive(Debug, Deserialize, Clone)]
pub struct BanksVector {
#[serde(deserialize_with = "deserialize_hashset")]
pub banks: HashSet<common_enums::enums::BankNames>,
}
#[derive(Debug, Deserialize, Clone, Default)]
#[serde(transparent)]
pub struct ConnectorFilters(pub HashMap<String, PaymentMethodFilters>);
@ -1015,9 +1005,14 @@ impl Settings<SecuredSecret> {
.build()
.change_context(ApplicationError::ConfigurationError)?;
serde_path_to_error::deserialize(config)
let mut settings: Self = serde_path_to_error::deserialize(config)
.attach_printable("Unable to deserialize application configuration")
.change_context(ApplicationError::ConfigurationError)
.change_context(ApplicationError::ConfigurationError)?;
#[cfg(feature = "v1")]
{
settings.required_fields = RequiredFields::new(&settings.bank_config);
}
Ok(settings)
}
pub fn validate(&self) -> ApplicationResult<()> {