mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-28 04:04:55 +08:00
feat(core): [Stripe] add bank debits payment method to stripe (#906)
This commit is contained in:
@ -409,11 +409,14 @@ pub enum PaymentExperience {
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[strum(serialize_all = "snake_case")]
|
||||
pub enum PaymentMethodType {
|
||||
Ach,
|
||||
Affirm,
|
||||
AfterpayClearpay,
|
||||
AliPay,
|
||||
ApplePay,
|
||||
Bacs,
|
||||
BancontactCard,
|
||||
Becs,
|
||||
Blik,
|
||||
Credit,
|
||||
CryptoCurrency,
|
||||
@ -432,6 +435,7 @@ pub enum PaymentMethodType {
|
||||
PayBright,
|
||||
Paypal,
|
||||
Przelewy24,
|
||||
Sepa,
|
||||
Sofort,
|
||||
Swish,
|
||||
Trustly,
|
||||
@ -463,6 +467,7 @@ pub enum PaymentMethod {
|
||||
Wallet,
|
||||
BankRedirect,
|
||||
Crypto,
|
||||
BankDebit,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
|
||||
@ -462,13 +462,57 @@ pub enum PayLaterData {
|
||||
Walley {},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, ToSchema, Eq, PartialEq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum BankDebitData {
|
||||
/// Payment Method data for Ach bank debit
|
||||
AchBankDebit {
|
||||
/// Billing details for bank debit
|
||||
billing_details: BankDebitBilling,
|
||||
/// Account number for ach bank debit payment
|
||||
#[schema(value_type = String, example = "000123456789")]
|
||||
account_number: Secret<String>,
|
||||
/// Routing number for ach bank debit payment
|
||||
#[schema(value_type = String, example = "110000000")]
|
||||
routing_number: Secret<String>,
|
||||
},
|
||||
SepaBankDebit {
|
||||
/// Billing details for bank debit
|
||||
billing_details: BankDebitBilling,
|
||||
/// International bank account number (iban) for SEPA
|
||||
#[schema(value_type = String, example = "DE89370400440532013000")]
|
||||
iban: Secret<String>,
|
||||
},
|
||||
BecsBankDebit {
|
||||
/// Billing details for bank debit
|
||||
billing_details: BankDebitBilling,
|
||||
/// Account number for Becs payment method
|
||||
#[schema(value_type = String, example = "000123456")]
|
||||
account_number: Secret<String>,
|
||||
/// Bank-State-Branch (bsb) number
|
||||
#[schema(value_type = String, example = "000000")]
|
||||
bsb_number: Secret<String>,
|
||||
},
|
||||
BacsBankDebit {
|
||||
/// Billing details for bank debit
|
||||
billing_details: BankDebitBilling,
|
||||
/// Account number for Bacs payment method
|
||||
#[schema(value_type = String, example = "00012345")]
|
||||
account_number: Secret<String>,
|
||||
/// Sort code for Bacs payment method
|
||||
#[schema(value_type = String, example = "108800")]
|
||||
sort_code: Secret<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum PaymentMethodData {
|
||||
Card(Card),
|
||||
Wallet(WalletData),
|
||||
PayLater(PayLaterData),
|
||||
BankRedirect(BankRedirectData),
|
||||
BankDebit(BankDebitData),
|
||||
Crypto(CryptoData),
|
||||
}
|
||||
|
||||
@ -485,6 +529,7 @@ pub enum AdditionalPaymentData {
|
||||
Wallet {},
|
||||
PayLater {},
|
||||
Crypto {},
|
||||
BankDebit {},
|
||||
}
|
||||
|
||||
impl From<&PaymentMethodData> for AdditionalPaymentData {
|
||||
@ -509,6 +554,7 @@ impl From<&PaymentMethodData> for AdditionalPaymentData {
|
||||
PaymentMethodData::Wallet(_) => Self::Wallet {},
|
||||
PaymentMethodData::PayLater(_) => Self::PayLater {},
|
||||
PaymentMethodData::Crypto(_) => Self::Crypto {},
|
||||
PaymentMethodData::BankDebit(_) => Self::BankDebit {},
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -607,6 +653,18 @@ pub struct BankRedirectBilling {
|
||||
pub billing_name: Secret<String>,
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, ToSchema, Eq, PartialEq)]
|
||||
pub struct BankDebitBilling {
|
||||
/// The billing name for bank debits
|
||||
#[schema(value_type = String, example = "John Doe")]
|
||||
pub name: Secret<String>,
|
||||
/// The billing email for bank debits
|
||||
#[schema(value_type = String, example = "example@example.com")]
|
||||
pub email: Secret<String, pii::Email>,
|
||||
/// The billing address for bank debits
|
||||
pub address: Option<AddressDetails>,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum WalletData {
|
||||
@ -722,6 +780,7 @@ pub enum PaymentMethodDataResponse {
|
||||
Paypal,
|
||||
BankRedirect(BankRedirectData),
|
||||
Crypto(CryptoData),
|
||||
BankDebit(BankDebitData),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, ToSchema)]
|
||||
@ -1137,7 +1196,7 @@ pub struct PaymentListResponse {
|
||||
pub data: Vec<PaymentsResponse>,
|
||||
}
|
||||
|
||||
#[derive(Setter, Clone, Default, Debug, Eq, PartialEq, serde::Serialize)]
|
||||
#[derive(Setter, Clone, Default, Debug, serde::Serialize)]
|
||||
pub struct VerifyResponse {
|
||||
pub verify_id: Option<String>,
|
||||
pub merchant_id: Option<String>,
|
||||
@ -1262,6 +1321,7 @@ impl From<PaymentMethodData> for PaymentMethodDataResponse {
|
||||
Self::BankRedirect(bank_redirect_data)
|
||||
}
|
||||
PaymentMethodData::Crypto(crpto_data) => Self::Crypto(crpto_data),
|
||||
PaymentMethodData::BankDebit(bank_debit_data) => Self::BankDebit(bank_debit_data),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user