mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 01:57:45 +08:00 
			
		
		
		
	refactor: make bank names optional in payment method data (#1483)
This commit is contained in:
		| @ -212,7 +212,8 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for AciPaymentsRequest { | ||||
|                         PaymentDetails::BankRedirect(Box::new(BankRedirectionPMData { | ||||
|                             payment_brand: PaymentBrand::Ideal, | ||||
|                             bank_account_country: Some(api_models::enums::CountryAlpha2::NL), | ||||
|                             bank_account_bank_name: Some(bank_name.to_string()), | ||||
|                             bank_account_bank_name: bank_name | ||||
|                                 .map(|bank_name| bank_name.to_string()), | ||||
|                             bank_account_bic: None, | ||||
|                             bank_account_iban: None, | ||||
|                             billing_country: None, | ||||
|  | ||||
| @ -539,7 +539,7 @@ pub struct BankRedirectionPMData { | ||||
| pub struct BankRedirectionWithIssuer<'a> { | ||||
|     #[serde(rename = "type")] | ||||
|     payment_type: PaymentType, | ||||
|     issuer: &'a str, | ||||
|     issuer: Option<&'a str>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Clone, Serialize, Deserialize)] | ||||
| @ -1188,7 +1188,10 @@ impl<'a> TryFrom<&api_models::payments::BankRedirectData> for AdyenPaymentMethod | ||||
|             api_models::payments::BankRedirectData::Eps { bank_name, .. } => Ok( | ||||
|                 AdyenPaymentMethod::Eps(Box::new(BankRedirectionWithIssuer { | ||||
|                     payment_type: PaymentType::Eps, | ||||
|                     issuer: AdyenTestBankNames::try_from(bank_name)?.0, | ||||
|                     issuer: bank_name | ||||
|                         .map(|bank_name| AdyenTestBankNames::try_from(&bank_name)) | ||||
|                         .transpose()? | ||||
|                         .map(|adyen_bank_name| adyen_bank_name.0), | ||||
|                 })), | ||||
|             ), | ||||
|             api_models::payments::BankRedirectData::Giropay { .. } => Ok( | ||||
| @ -1199,7 +1202,10 @@ impl<'a> TryFrom<&api_models::payments::BankRedirectData> for AdyenPaymentMethod | ||||
|             api_models::payments::BankRedirectData::Ideal { bank_name, .. } => Ok( | ||||
|                 AdyenPaymentMethod::Ideal(Box::new(BankRedirectionWithIssuer { | ||||
|                     payment_type: PaymentType::Ideal, | ||||
|                     issuer: AdyenTestBankNames::try_from(bank_name)?.0, | ||||
|                     issuer: bank_name | ||||
|                         .map(|bank_name| AdyenTestBankNames::try_from(&bank_name)) | ||||
|                         .transpose()? | ||||
|                         .map(|adyen_bank_name| adyen_bank_name.0), | ||||
|                 })), | ||||
|             ), | ||||
|             api_models::payments::BankRedirectData::OnlineBankingCzechRepublic { issuer } => { | ||||
|  | ||||
| @ -103,7 +103,7 @@ pub enum RecurringType { | ||||
| #[derive(Debug, Serialize)] | ||||
| #[serde(rename_all = "camelCase")] | ||||
| pub struct NexinetsBankRedirects { | ||||
|     bic: NexinetsBIC, | ||||
|     bic: Option<NexinetsBIC>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Serialize)] | ||||
| @ -578,7 +578,9 @@ fn get_payment_details_and_product( | ||||
|             api_models::payments::BankRedirectData::Ideal { bank_name, .. } => Ok(( | ||||
|                 Some(NexinetsPaymentDetails::BankRedirects(Box::new( | ||||
|                     NexinetsBankRedirects { | ||||
|                         bic: NexinetsBIC::try_from(bank_name)?, | ||||
|                         bic: bank_name | ||||
|                             .map(|bank_name| NexinetsBIC::try_from(&bank_name)) | ||||
|                             .transpose()?, | ||||
|                     }, | ||||
|                 ))), | ||||
|                 NexinetsProduct::Ideal, | ||||
|  | ||||
| @ -549,7 +549,7 @@ impl<F> | ||||
|                         email: item.request.get_email()?, | ||||
|                         country: item.get_billing_country()?, | ||||
|                     }), | ||||
|                     Some(NuveiBIC::try_from(bank_name)?), | ||||
|                     bank_name.map(NuveiBIC::try_from).transpose()?, | ||||
|                 ) | ||||
|             } | ||||
|             _ => Err(errors::ConnectorError::NotSupported { | ||||
|  | ||||
| @ -216,15 +216,15 @@ pub struct ChargesResponse { | ||||
| pub enum StripeBankName { | ||||
|     Eps { | ||||
|         #[serde(rename = "payment_method_data[eps][bank]")] | ||||
|         bank_name: StripeBankNames, | ||||
|         bank_name: Option<StripeBankNames>, | ||||
|     }, | ||||
|     Ideal { | ||||
|         #[serde(rename = "payment_method_data[ideal][bank]")] | ||||
|         ideal_bank_name: StripeBankNames, | ||||
|         ideal_bank_name: Option<StripeBankNames>, | ||||
|     }, | ||||
|     Przelewy24 { | ||||
|         #[serde(rename = "payment_method_data[p24][bank]")] | ||||
|         bank_name: StripeBankNames, | ||||
|         bank_name: Option<StripeBankNames>, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| @ -248,23 +248,25 @@ fn get_bank_name( | ||||
|             StripePaymentMethodType::Eps, | ||||
|             api_models::payments::BankRedirectData::Eps { ref bank_name, .. }, | ||||
|         ) => Ok(Some(StripeBankName::Eps { | ||||
|             bank_name: StripeBankNames::try_from(bank_name)?, | ||||
|             bank_name: bank_name | ||||
|                 .map(|bank_name| StripeBankNames::try_from(&bank_name)) | ||||
|                 .transpose()?, | ||||
|         })), | ||||
|         ( | ||||
|             StripePaymentMethodType::Ideal, | ||||
|             api_models::payments::BankRedirectData::Ideal { bank_name, .. }, | ||||
|         ) => Ok(Some(StripeBankName::Ideal { | ||||
|             ideal_bank_name: StripeBankNames::try_from(bank_name)?, | ||||
|             ideal_bank_name: bank_name | ||||
|                 .map(|bank_name| StripeBankNames::try_from(&bank_name)) | ||||
|                 .transpose()?, | ||||
|         })), | ||||
|         ( | ||||
|             StripePaymentMethodType::Przelewy24, | ||||
|             api_models::payments::BankRedirectData::Przelewy24 { bank_name, .. }, | ||||
|         ) => Ok(Some(StripeBankName::Przelewy24 { | ||||
|             bank_name: StripeBankNames::try_from(&bank_name.ok_or( | ||||
|                 errors::ConnectorError::MissingRequiredField { | ||||
|                     field_name: "bank_name", | ||||
|                 }, | ||||
|             )?)?, | ||||
|             bank_name: bank_name | ||||
|                 .map(|bank_name| StripeBankNames::try_from(&bank_name)) | ||||
|                 .transpose()?, | ||||
|         })), | ||||
|         ( | ||||
|             StripePaymentMethodType::Sofort | ||||
|  | ||||
| @ -133,7 +133,7 @@ pub struct Giropay { | ||||
| #[derive(Debug, Serialize)] | ||||
| pub struct Ideal { | ||||
|     #[serde(rename = "issuerId")] | ||||
|     pub issuer_id: WorldlineBic, | ||||
|     pub issuer_id: Option<WorldlineBic>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Serialize)] | ||||
| @ -322,7 +322,9 @@ fn make_bank_redirect_request( | ||||
|         payments::BankRedirectData::Ideal { bank_name, .. } => ( | ||||
|             { | ||||
|                 PaymentMethodSpecificData::PaymentProduct809SpecificInput(Box::new(Ideal { | ||||
|                     issuer_id: WorldlineBic::try_from(bank_name)?, | ||||
|                     issuer_id: bank_name | ||||
|                         .map(|bank_name| WorldlineBic::try_from(&bank_name)) | ||||
|                         .transpose()?, | ||||
|                 })) | ||||
|             }, | ||||
|             809, | ||||
|  | ||||
| @ -464,7 +464,11 @@ impl<F: Send + Clone> ValidateRequest<F, api::PaymentsRequest> for PaymentCreate | ||||
|                 request.shipping.is_some(), | ||||
|                 request.billing.is_some(), | ||||
|                 request.setup_future_usage.is_some(), | ||||
|                 &request.customer_id, | ||||
|                 &request | ||||
|                     .customer | ||||
|                     .clone() | ||||
|                     .map(|customer| customer.id) | ||||
|                     .or(request.customer_id.clone()), | ||||
|             )?; | ||||
|         } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Narayan Bhat
					Narayan Bhat