Bug: chore(stripe:EPS): enable bank_name as required field for eps stripe.



bank_name should be mandatory for stripe/EPS for sdk changes
diff --git a/crates/api_models/src/enums.rs b/crates/api_models/src/enums.rs
index df1827053a2..cad510b26de 100644
--- a/crates/api_models/src/enums.rs
+++ b/crates/api_models/src/enums.rs
@@ -257,6 +257,7 @@ pub enum FieldType {
     UserSocialSecurityNumber,
     UserBlikCode,
     UserBank,
+    UserBankOptions { options: Vec<String> },
     UserBankAccountNumber,
     UserSourceBankAccountId,
     UserDestinationBankAccountId,
diff --git a/crates/payment_methods/src/configs/payment_connector_required_fields.rs b/crates/payment_methods/src/configs/payment_connector_required_fields.rs
index ec3ea46ccd2..2dd291d16f5 100644
--- a/crates/payment_methods/src/configs/payment_connector_required_fields.rs
+++ b/crates/payment_methods/src/configs/payment_connector_required_fields.rs
@@ -173,6 +173,7 @@ enum RequiredField {
     BanContactCardExpYear,
     IdealBankName,
     EpsBankName,
+    EpsBankOptions(HashSet<enums::BankNames>),
     BlikCode,
     MifinityDateOfBirth,
     MifinityLanguagePreference(Vec<&'static str>),
@@ -610,6 +611,17 @@ impl RequiredField {
                     value: None,
                 },
             ),
+            Self::EpsBankOptions(bank) => (
+                "payment_method_data.bank_redirect.eps.bank_name".to_string(),
+                RequiredFieldInfo {
+                    required_field: "payment_method_data.bank_redirect.eps.bank_name".to_string(),
+                    display_name: "bank_name".to_string(),
+                    field_type: FieldType::UserBankOptions {
+                        options: bank.iter().map(|bank| bank.to_string()).collect(),
+                    },
+                    value: None,
+                },
+            ),
             Self::BlikCode => (
                 "payment_method_data.bank_redirect.blik.blik_code".to_string(),
                 RequiredFieldInfo {
@@ -2015,6 +2027,71 @@ fn get_bank_redirect_required_fields() -> HashMap<enums::PaymentMethodType, Conn
                                 "billing_name",
                                 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(),
+                            ),
                             RequiredField::BillingLastName("billing_name", FieldType::UserFullName),
                         ],
                         vec![],

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix
- [ ] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Make bank_name field for EPS in stripe mandatore

### Additional Changes

- [x] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->


## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->

<details>
 <summary>Payment Request</summary>

```json 
{
  "payment_id": "pay_6W7NAlavGWBsNle4fjCm",
  "merchant_id": "merchant_1751973151",
  "status": "requires_payment_method",
  "amount": 6500,
  "net_amount": 6500,
  "amount_capturable": 0,
  "client_secret": "pay_6W7NAlavGWBsNle4fjCm_secret_cGp7blq0k5NBezW6gCmH",
  "created": "2025-07-08T11:49:13.894Z",
  "currency": "EUR",
  "customer_id": "hyperswitch_sdk_demo_id",
  "customer": {
    "id": "hyperswitch_sdk_demo_id",
    "email": "user@gmail.com"
  },
  "description": "Hello this is description",
  "setup_future_usage": "on_session",
  "capture_method": "automatic",
  "shipping": {
    "address": {
      "city": "Banglore",
      "country": "AT",
      "line1": "sdsdfsdf",
      "line2": "hsgdbhd",
      "line3": "alsksoe",
      "zip": "571201",
      "state": "California",
      "first_name": "John",
      "last_name": "Doe"
    },
    "phone": {
      "number": "123456789",
      "country_code": "+1"
    }
  },
  "billing": {
    "address": {
      "city": "San Fransico",
      "country": "AT",
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "zip": "94122",
      "state": "California",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "order_details": [
    {
      "amount": 6500,
      "quantity": 1,
      "product_name": "Apple iphone 15"
    }
  ],
  "email": "user@gmail.com",
  "business_label": "default",
  "ephemeral_key": {
    "customer_id": "hyperswitch_sdk_demo_id",
    "created_at": 1751975353,
    "expires": 1751978953,
    "secret": "epk_78740ac9b3a7426e9ed57c14c801fb4f"
  },
  "metadata": {
    "udf1": "value1",
    "login_date": "2019-09-10T10:11:12Z",
    "new_customer": "true"
  },
  "connector_metadata": {
    "noon": {
      "order_category": "applepay"
    }
  },
  "profile_id": "pro_2UxGWjdVxvRMEw6zBI2V",
  "attempt_count": 1,
  "external_3ds_authentication_attempted": false,
  "expires_on": "2025-07-08T12:04:13.894Z",
  "updated": "2025-07-08T11:49:13.908Z",
  "force_3ds_challenge": false,
  "force_3ds_challenge_trigger": false
}

```

</details>



<details>
     <summary> Supported payment methods has bank_name mandatory  </summary>

```json
{
  "redirect_url": "https://google.com/success",
  "currency": "EUR",
  "payment_methods": [
    {
      "payment_method": "bank_redirect",
      "payment_method_types": [
        {
          "payment_method_type": "eps",
          "bank_names": [
            {
              "bank_name": [
                "easybank_ag",
                "bank_austria",
                "hypo_tirol_bank_ag",
                "hypo_alpeadriabank_international_ag",
                "sparda_bank_wien",
                "bankhaus_schelhammer_und_schattera_ag",
                "erste_bank_und_sparkassen",
                "vr_bank_braunau",
                "raiffeisen_bankengruppe_osterreich",
                "volksbank_gruppe",
                "bankhaus_carl_spangler",
                "bawag_psk_ag",
                "hypo_noe_lb_fur_niederosterreich_u_wien",
                "hypo_bank_burgenland_aktiengesellschaft",
                "hypo_vorarlberg_bank_ag",
                "dolomitenbank",
                "marchfelder_bank",
                "oberbank_ag",
                "bks_bank_ag",
                "arzte_und_apotheker_bank",
                "btv_vier_lander_bank",
                "hypo_oberosterreich_salzburg_steiermark",
                "volkskreditbank_ag",
                "austrian_anadi_bank_ag",
                "brull_kallmus_bank_ag",
                "capital_bank_grawe_gruppe_ag",
                "schoellerbank_ag"
              ],
              "eligible_connectors": ["stripe"]
            }
          ],
          "required_fields": {
            "billing.address.first_name": {
              "required_field": "payment_method_data.billing.address.first_name",
              "display_name": "billing_name",
              "field_type": "user_full_name",
              "value": "joseph"
            },
            "payment_method_data.bank_redirect.eps.bank_name": {
              "required_field": "payment_method_data.bank_redirect.eps.bank_name",
              "display_name": "bank_name",
              "field_type": {
                "user_bank_options": {
                  "options": [
                    "triodos_bank",
                    "austrian_anadi_bank_ag",
                    "boz",
                    "brull_kallmus_bank_ag",
                    "pbac_z_ipko",
                    "schoellerbank_ag",
                    "hypo_oberosterreich_salzburg_steiermark",
                    "bank_pekao_sa",
                    "bnp_paribas",
                    "asn_bank",
                    "hypo_alpeadriabank_international_ag",
                    "plus_bank",
                    "volkswagen_bank",
                    "sparda_bank_wien",
                    "sns_bank",
                    "hypo_tirol_bank_ag",
                    "knab",
                    "citi",
                    "bunq",
                    "bks_bank_ag",
                    "mbank_mtransfer",
                    "dolomitenbank",
                    "idea_bank",
                    "rabobank",
                    "getin_bank",
                    "raiffeisen_bankengruppe_osterreich",
                    "bankhaus_carl_spangler",
                    "van_lanschot",
                    "envelo_bank",
                    "volkskreditbank_ag",
                    "banki_spbdzielcze",
                    "etransfer_pocztowy24",
                    "btv_vier_lander_bank",
                    "easybank_ag",
                    "bawag_psk_ag",
                    "noble_pay",
                    "capital_bank_grawe_gruppe_ag",
                    "moneyou",
                    "blik",
                    "regiobank",
                    "arzte_und_apotheker_bank",
                    "abn_amro",
                    "marchfelder_bank",
                    "handelsbanken",
                    "erste_bank_und_sparkassen",
                    "volksbank_gruppe",
                    "ing",
                    "bankhaus_schelhammer_und_schattera_ag",
                    "revolut",
                    "bank_austria",
                    "hypo_vorarlberg_bank_ag",
                    "hypo_bank_burgenland_aktiengesellschaft",
                    "vr_bank_braunau",
                    "bank_nowy_bfg_sa",
                    "nest_przelew",
                    "alior_bank",
                    "hypo_noe_lb_fur_niederosterreich_u_wien",
                    "inteligo",
                    "oberbank_ag"
                  ]
                }
              }
            },
            "billing.address.last_name": {
              "required_field": "payment_method_data.billing.address.last_name",
              "display_name": "billing_name",
              "field_type": "user_full_name",
              "value": "Doe"
            }
          }
        }
      ]
    }
  ],
  "merchant_name": "NewAge Retailer",
  "show_surcharge_breakup_screen": false,
  "payment_type": "normal",
  "request_external_three_ds_authentication": false,
  "collect_shipping_details_from_wallets": false,
  "collect_billing_details_from_wallets": false,
  "is_tax_calculation_enabled": false
}
```
</details>
<img width="1728" alt="Screenshot 2025-07-09 at 4 49 05 PM" src="https://github.com/user-attachments/assets/8a6cef3f-df11-411e-89d1-41ad5d1618ac" />






## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [ ] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
