mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 17:47:54 +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