mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +08:00 
			
		
		
		
	refactor: make bank names optional in payment method data (#1483)
This commit is contained in:
		| @ -621,10 +621,10 @@ impl From<&PaymentMethodData> for AdditionalPaymentData { | |||||||
|             }, |             }, | ||||||
|             PaymentMethodData::BankRedirect(bank_redirect_data) => match bank_redirect_data { |             PaymentMethodData::BankRedirect(bank_redirect_data) => match bank_redirect_data { | ||||||
|                 BankRedirectData::Eps { bank_name, .. } => Self::BankRedirect { |                 BankRedirectData::Eps { bank_name, .. } => Self::BankRedirect { | ||||||
|                     bank_name: Some(bank_name.to_owned()), |                     bank_name: bank_name.to_owned(), | ||||||
|                 }, |                 }, | ||||||
|                 BankRedirectData::Ideal { bank_name, .. } => Self::BankRedirect { |                 BankRedirectData::Ideal { bank_name, .. } => Self::BankRedirect { | ||||||
|                     bank_name: Some(bank_name.to_owned()), |                     bank_name: bank_name.to_owned(), | ||||||
|                 }, |                 }, | ||||||
|                 _ => Self::BankRedirect { bank_name: None }, |                 _ => Self::BankRedirect { bank_name: None }, | ||||||
|             }, |             }, | ||||||
| @ -670,7 +670,7 @@ pub enum BankRedirectData { | |||||||
|  |  | ||||||
|         /// The hyperswitch bank code for eps |         /// The hyperswitch bank code for eps | ||||||
|         #[schema(value_type = BankNames, example = "triodos_bank")] |         #[schema(value_type = BankNames, example = "triodos_bank")] | ||||||
|         bank_name: api_enums::BankNames, |         bank_name: Option<api_enums::BankNames>, | ||||||
|     }, |     }, | ||||||
|     Giropay { |     Giropay { | ||||||
|         /// The billing details for bank redirection |         /// The billing details for bank redirection | ||||||
| @ -691,7 +691,7 @@ pub enum BankRedirectData { | |||||||
|  |  | ||||||
|         /// The hyperswitch bank code for ideal |         /// The hyperswitch bank code for ideal | ||||||
|         #[schema(value_type = BankNames, example = "abn_amro")] |         #[schema(value_type = BankNames, example = "abn_amro")] | ||||||
|         bank_name: api_enums::BankNames, |         bank_name: Option<api_enums::BankNames>, | ||||||
|     }, |     }, | ||||||
|     Interac { |     Interac { | ||||||
|         /// The country for bank payment |         /// The country for bank payment | ||||||
|  | |||||||
| @ -212,7 +212,8 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for AciPaymentsRequest { | |||||||
|                         PaymentDetails::BankRedirect(Box::new(BankRedirectionPMData { |                         PaymentDetails::BankRedirect(Box::new(BankRedirectionPMData { | ||||||
|                             payment_brand: PaymentBrand::Ideal, |                             payment_brand: PaymentBrand::Ideal, | ||||||
|                             bank_account_country: Some(api_models::enums::CountryAlpha2::NL), |                             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_bic: None, | ||||||
|                             bank_account_iban: None, |                             bank_account_iban: None, | ||||||
|                             billing_country: None, |                             billing_country: None, | ||||||
|  | |||||||
| @ -539,7 +539,7 @@ pub struct BankRedirectionPMData { | |||||||
| pub struct BankRedirectionWithIssuer<'a> { | pub struct BankRedirectionWithIssuer<'a> { | ||||||
|     #[serde(rename = "type")] |     #[serde(rename = "type")] | ||||||
|     payment_type: PaymentType, |     payment_type: PaymentType, | ||||||
|     issuer: &'a str, |     issuer: Option<&'a str>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Clone, Serialize, Deserialize)] | #[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( |             api_models::payments::BankRedirectData::Eps { bank_name, .. } => Ok( | ||||||
|                 AdyenPaymentMethod::Eps(Box::new(BankRedirectionWithIssuer { |                 AdyenPaymentMethod::Eps(Box::new(BankRedirectionWithIssuer { | ||||||
|                     payment_type: PaymentType::Eps, |                     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( |             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( |             api_models::payments::BankRedirectData::Ideal { bank_name, .. } => Ok( | ||||||
|                 AdyenPaymentMethod::Ideal(Box::new(BankRedirectionWithIssuer { |                 AdyenPaymentMethod::Ideal(Box::new(BankRedirectionWithIssuer { | ||||||
|                     payment_type: PaymentType::Ideal, |                     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 } => { |             api_models::payments::BankRedirectData::OnlineBankingCzechRepublic { issuer } => { | ||||||
|  | |||||||
| @ -103,7 +103,7 @@ pub enum RecurringType { | |||||||
| #[derive(Debug, Serialize)] | #[derive(Debug, Serialize)] | ||||||
| #[serde(rename_all = "camelCase")] | #[serde(rename_all = "camelCase")] | ||||||
| pub struct NexinetsBankRedirects { | pub struct NexinetsBankRedirects { | ||||||
|     bic: NexinetsBIC, |     bic: Option<NexinetsBIC>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Serialize)] | #[derive(Debug, Serialize)] | ||||||
| @ -578,7 +578,9 @@ fn get_payment_details_and_product( | |||||||
|             api_models::payments::BankRedirectData::Ideal { bank_name, .. } => Ok(( |             api_models::payments::BankRedirectData::Ideal { bank_name, .. } => Ok(( | ||||||
|                 Some(NexinetsPaymentDetails::BankRedirects(Box::new( |                 Some(NexinetsPaymentDetails::BankRedirects(Box::new( | ||||||
|                     NexinetsBankRedirects { |                     NexinetsBankRedirects { | ||||||
|                         bic: NexinetsBIC::try_from(bank_name)?, |                         bic: bank_name | ||||||
|  |                             .map(|bank_name| NexinetsBIC::try_from(&bank_name)) | ||||||
|  |                             .transpose()?, | ||||||
|                     }, |                     }, | ||||||
|                 ))), |                 ))), | ||||||
|                 NexinetsProduct::Ideal, |                 NexinetsProduct::Ideal, | ||||||
|  | |||||||
| @ -549,7 +549,7 @@ impl<F> | |||||||
|                         email: item.request.get_email()?, |                         email: item.request.get_email()?, | ||||||
|                         country: item.get_billing_country()?, |                         country: item.get_billing_country()?, | ||||||
|                     }), |                     }), | ||||||
|                     Some(NuveiBIC::try_from(bank_name)?), |                     bank_name.map(NuveiBIC::try_from).transpose()?, | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             _ => Err(errors::ConnectorError::NotSupported { |             _ => Err(errors::ConnectorError::NotSupported { | ||||||
|  | |||||||
| @ -216,15 +216,15 @@ pub struct ChargesResponse { | |||||||
| pub enum StripeBankName { | pub enum StripeBankName { | ||||||
|     Eps { |     Eps { | ||||||
|         #[serde(rename = "payment_method_data[eps][bank]")] |         #[serde(rename = "payment_method_data[eps][bank]")] | ||||||
|         bank_name: StripeBankNames, |         bank_name: Option<StripeBankNames>, | ||||||
|     }, |     }, | ||||||
|     Ideal { |     Ideal { | ||||||
|         #[serde(rename = "payment_method_data[ideal][bank]")] |         #[serde(rename = "payment_method_data[ideal][bank]")] | ||||||
|         ideal_bank_name: StripeBankNames, |         ideal_bank_name: Option<StripeBankNames>, | ||||||
|     }, |     }, | ||||||
|     Przelewy24 { |     Przelewy24 { | ||||||
|         #[serde(rename = "payment_method_data[p24][bank]")] |         #[serde(rename = "payment_method_data[p24][bank]")] | ||||||
|         bank_name: StripeBankNames, |         bank_name: Option<StripeBankNames>, | ||||||
|     }, |     }, | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -248,23 +248,25 @@ fn get_bank_name( | |||||||
|             StripePaymentMethodType::Eps, |             StripePaymentMethodType::Eps, | ||||||
|             api_models::payments::BankRedirectData::Eps { ref bank_name, .. }, |             api_models::payments::BankRedirectData::Eps { ref bank_name, .. }, | ||||||
|         ) => Ok(Some(StripeBankName::Eps { |         ) => 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, |             StripePaymentMethodType::Ideal, | ||||||
|             api_models::payments::BankRedirectData::Ideal { bank_name, .. }, |             api_models::payments::BankRedirectData::Ideal { bank_name, .. }, | ||||||
|         ) => Ok(Some(StripeBankName::Ideal { |         ) => 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, |             StripePaymentMethodType::Przelewy24, | ||||||
|             api_models::payments::BankRedirectData::Przelewy24 { bank_name, .. }, |             api_models::payments::BankRedirectData::Przelewy24 { bank_name, .. }, | ||||||
|         ) => Ok(Some(StripeBankName::Przelewy24 { |         ) => Ok(Some(StripeBankName::Przelewy24 { | ||||||
|             bank_name: StripeBankNames::try_from(&bank_name.ok_or( |             bank_name: bank_name | ||||||
|                 errors::ConnectorError::MissingRequiredField { |                 .map(|bank_name| StripeBankNames::try_from(&bank_name)) | ||||||
|                     field_name: "bank_name", |                 .transpose()?, | ||||||
|                 }, |  | ||||||
|             )?)?, |  | ||||||
|         })), |         })), | ||||||
|         ( |         ( | ||||||
|             StripePaymentMethodType::Sofort |             StripePaymentMethodType::Sofort | ||||||
|  | |||||||
| @ -133,7 +133,7 @@ pub struct Giropay { | |||||||
| #[derive(Debug, Serialize)] | #[derive(Debug, Serialize)] | ||||||
| pub struct Ideal { | pub struct Ideal { | ||||||
|     #[serde(rename = "issuerId")] |     #[serde(rename = "issuerId")] | ||||||
|     pub issuer_id: WorldlineBic, |     pub issuer_id: Option<WorldlineBic>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Serialize)] | #[derive(Debug, Serialize)] | ||||||
| @ -322,7 +322,9 @@ fn make_bank_redirect_request( | |||||||
|         payments::BankRedirectData::Ideal { bank_name, .. } => ( |         payments::BankRedirectData::Ideal { bank_name, .. } => ( | ||||||
|             { |             { | ||||||
|                 PaymentMethodSpecificData::PaymentProduct809SpecificInput(Box::new(Ideal { |                 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, |             809, | ||||||
|  | |||||||
| @ -464,7 +464,11 @@ impl<F: Send + Clone> ValidateRequest<F, api::PaymentsRequest> for PaymentCreate | |||||||
|                 request.shipping.is_some(), |                 request.shipping.is_some(), | ||||||
|                 request.billing.is_some(), |                 request.billing.is_some(), | ||||||
|                 request.setup_future_usage.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