mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 09:38:33 +08:00
refactor(bank-transfer): remove billing from banktransfer payment data (#4377)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -2046,37 +2046,37 @@ pub struct JCSVoucherData {
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
pub struct AchBillingDetails {
|
||||
/// The Email ID for ACH billing
|
||||
#[schema(value_type = String, example = "example@me.com")]
|
||||
pub email: Email,
|
||||
#[schema(value_type = Option<String>, example = "example@me.com")]
|
||||
pub email: Option<Email>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
pub struct DokuBillingDetails {
|
||||
/// The billing first name for Doku
|
||||
#[schema(value_type = String, example = "Jane")]
|
||||
pub first_name: Secret<String>,
|
||||
#[schema(value_type = Option<String>, example = "Jane")]
|
||||
pub first_name: Option<Secret<String>>,
|
||||
/// The billing second name for Doku
|
||||
#[schema(value_type = String, example = "Doe")]
|
||||
#[schema(value_type = Option<String>, example = "Doe")]
|
||||
pub last_name: Option<Secret<String>>,
|
||||
/// The Email ID for Doku billing
|
||||
#[schema(value_type = String, example = "example@me.com")]
|
||||
pub email: Email,
|
||||
#[schema(value_type = Option<String>, example = "example@me.com")]
|
||||
pub email: Option<Email>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
pub struct MultibancoBillingDetails {
|
||||
#[schema(value_type = String, example = "example@me.com")]
|
||||
pub email: Email,
|
||||
#[schema(value_type = Option<String>, example = "example@me.com")]
|
||||
pub email: Option<Email>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
pub struct SepaAndBacsBillingDetails {
|
||||
/// The Email ID for SEPA and BACS billing
|
||||
#[schema(value_type = String, example = "example@me.com")]
|
||||
pub email: Email,
|
||||
#[schema(value_type = Option<String>, example = "example@me.com")]
|
||||
pub email: Option<Email>,
|
||||
/// The billing name for SEPA and BACS billing
|
||||
#[schema(value_type = String, example = "Jane Doe")]
|
||||
pub name: Secret<String>,
|
||||
#[schema(value_type = Option<String>, example = "Jane Doe")]
|
||||
pub name: Option<Secret<String>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
@ -2136,51 +2136,51 @@ impl GetAddressFromPaymentMethodData for BankRedirectBilling {
|
||||
pub enum BankTransferData {
|
||||
AchBankTransfer {
|
||||
/// The billing details for ACH Bank Transfer
|
||||
billing_details: AchBillingDetails,
|
||||
billing_details: Option<AchBillingDetails>,
|
||||
},
|
||||
SepaBankTransfer {
|
||||
/// The billing details for SEPA
|
||||
billing_details: SepaAndBacsBillingDetails,
|
||||
billing_details: Option<SepaAndBacsBillingDetails>,
|
||||
|
||||
/// The two-letter ISO country code for SEPA and BACS
|
||||
#[schema(value_type = CountryAlpha2, example = "US")]
|
||||
country: api_enums::CountryAlpha2,
|
||||
country: Option<api_enums::CountryAlpha2>,
|
||||
},
|
||||
BacsBankTransfer {
|
||||
/// The billing details for SEPA
|
||||
billing_details: SepaAndBacsBillingDetails,
|
||||
billing_details: Option<SepaAndBacsBillingDetails>,
|
||||
},
|
||||
MultibancoBankTransfer {
|
||||
/// The billing details for Multibanco
|
||||
billing_details: MultibancoBillingDetails,
|
||||
billing_details: Option<MultibancoBillingDetails>,
|
||||
},
|
||||
PermataBankTransfer {
|
||||
/// The billing details for Permata Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
BcaBankTransfer {
|
||||
/// The billing details for BCA Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
BniVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
BriVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
CimbVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
DanamonVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
MandiriVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
billing_details: Option<DokuBillingDetails>,
|
||||
},
|
||||
Pix {},
|
||||
Pse {},
|
||||
@ -2192,51 +2192,59 @@ pub enum BankTransferData {
|
||||
impl GetAddressFromPaymentMethodData for BankTransferData {
|
||||
fn get_billing_address(&self) -> Option<Address> {
|
||||
match self {
|
||||
Self::AchBankTransfer { billing_details } => Some(Address {
|
||||
Self::AchBankTransfer { billing_details } => {
|
||||
billing_details.as_ref().map(|details| Address {
|
||||
address: None,
|
||||
phone: None,
|
||||
email: Some(billing_details.email.clone()),
|
||||
}),
|
||||
email: details.email.clone(),
|
||||
})
|
||||
}
|
||||
Self::SepaBankTransfer {
|
||||
billing_details,
|
||||
country,
|
||||
} => Some(Address {
|
||||
} => billing_details.as_ref().map(|details| Address {
|
||||
address: Some(AddressDetails {
|
||||
country: Some(*country),
|
||||
first_name: Some(billing_details.name.clone()),
|
||||
country: *country,
|
||||
first_name: details.name.clone(),
|
||||
..AddressDetails::default()
|
||||
}),
|
||||
phone: None,
|
||||
email: Some(billing_details.email.clone()),
|
||||
email: details.email.clone(),
|
||||
}),
|
||||
Self::BacsBankTransfer { billing_details } => Some(Address {
|
||||
Self::BacsBankTransfer { billing_details } => {
|
||||
billing_details.as_ref().map(|details| Address {
|
||||
address: Some(AddressDetails {
|
||||
first_name: Some(billing_details.name.clone()),
|
||||
first_name: details.name.clone(),
|
||||
..AddressDetails::default()
|
||||
}),
|
||||
phone: None,
|
||||
email: Some(billing_details.email.clone()),
|
||||
}),
|
||||
Self::MultibancoBankTransfer { billing_details } => Some(Address {
|
||||
email: details.email.clone(),
|
||||
})
|
||||
}
|
||||
Self::MultibancoBankTransfer { billing_details } => {
|
||||
billing_details.as_ref().map(|details| Address {
|
||||
address: None,
|
||||
phone: None,
|
||||
email: Some(billing_details.email.clone()),
|
||||
}),
|
||||
email: details.email.clone(),
|
||||
})
|
||||
}
|
||||
Self::PermataBankTransfer { billing_details }
|
||||
| Self::BcaBankTransfer { billing_details }
|
||||
| Self::BniVaBankTransfer { billing_details }
|
||||
| Self::BriVaBankTransfer { billing_details }
|
||||
| Self::CimbVaBankTransfer { billing_details }
|
||||
| Self::DanamonVaBankTransfer { billing_details }
|
||||
| Self::MandiriVaBankTransfer { billing_details } => Some(Address {
|
||||
| Self::MandiriVaBankTransfer { billing_details } => {
|
||||
billing_details.as_ref().map(|details| Address {
|
||||
address: Some(AddressDetails {
|
||||
first_name: Some(billing_details.first_name.clone()),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
first_name: details.first_name.clone(),
|
||||
last_name: details.last_name.clone(),
|
||||
..AddressDetails::default()
|
||||
}),
|
||||
phone: None,
|
||||
email: Some(billing_details.email.clone()),
|
||||
}),
|
||||
email: details.email.clone(),
|
||||
})
|
||||
}
|
||||
Self::LocalBankTransfer { .. } | Self::Pix {} | Self::Pse {} => None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -2402,63 +2402,42 @@ impl<'a> TryFrom<(&domain::BankRedirectData, Option<bool>)> for AdyenPaymentMeth
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> TryFrom<&domain::BankTransferData> for AdyenPaymentMethod<'a> {
|
||||
impl<'a>
|
||||
TryFrom<(
|
||||
&domain::BankTransferData,
|
||||
&types::PaymentsAuthorizeRouterData,
|
||||
)> for AdyenPaymentMethod<'a>
|
||||
{
|
||||
type Error = Error;
|
||||
fn try_from(bank_transfer_data: &domain::BankTransferData) -> Result<Self, Self::Error> {
|
||||
fn try_from(
|
||||
(bank_transfer_data, item): (
|
||||
&domain::BankTransferData,
|
||||
&types::PaymentsAuthorizeRouterData,
|
||||
),
|
||||
) -> Result<Self, Self::Error> {
|
||||
match bank_transfer_data {
|
||||
domain::BankTransferData::PermataBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::PermataBankTransfer(Box::new(
|
||||
DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
},
|
||||
))),
|
||||
domain::BankTransferData::BcaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::BcaBankTransfer(Box::new(
|
||||
DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
},
|
||||
))),
|
||||
domain::BankTransferData::BniVaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::BniVa(Box::new(DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
}))),
|
||||
domain::BankTransferData::BriVaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::BriVa(Box::new(DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
}))),
|
||||
domain::BankTransferData::CimbVaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::CimbVa(Box::new(DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
}))),
|
||||
domain::BankTransferData::DanamonVaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::DanamonVa(Box::new(DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
}))),
|
||||
domain::BankTransferData::MandiriVaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::MandiriVa(Box::new(DokuBankData {
|
||||
first_name: billing_details.first_name.clone(),
|
||||
last_name: billing_details.last_name.clone(),
|
||||
shopper_email: billing_details.email.clone(),
|
||||
}))),
|
||||
domain::BankTransferData::PermataBankTransfer {} => Ok(
|
||||
AdyenPaymentMethod::PermataBankTransfer(Box::new(DokuBankData::try_from(item)?)),
|
||||
),
|
||||
|
||||
domain::BankTransferData::BcaBankTransfer {} => Ok(
|
||||
AdyenPaymentMethod::BcaBankTransfer(Box::new(DokuBankData::try_from(item)?)),
|
||||
),
|
||||
domain::BankTransferData::BniVaBankTransfer {} => Ok(AdyenPaymentMethod::BniVa(
|
||||
Box::new(DokuBankData::try_from(item)?),
|
||||
)),
|
||||
domain::BankTransferData::BriVaBankTransfer {} => Ok(AdyenPaymentMethod::BriVa(
|
||||
Box::new(DokuBankData::try_from(item)?),
|
||||
)),
|
||||
domain::BankTransferData::CimbVaBankTransfer {} => Ok(AdyenPaymentMethod::CimbVa(
|
||||
Box::new(DokuBankData::try_from(item)?),
|
||||
)),
|
||||
domain::BankTransferData::DanamonVaBankTransfer {} => Ok(
|
||||
AdyenPaymentMethod::DanamonVa(Box::new(DokuBankData::try_from(item)?)),
|
||||
),
|
||||
domain::BankTransferData::MandiriVaBankTransfer {} => Ok(
|
||||
AdyenPaymentMethod::MandiriVa(Box::new(DokuBankData::try_from(item)?)),
|
||||
),
|
||||
domain::BankTransferData::Pix {} => {
|
||||
Ok(AdyenPaymentMethod::Pix(Box::new(PmdForPaymentType {
|
||||
payment_type: PaymentType::Pix,
|
||||
@ -2803,7 +2782,7 @@ impl<'a>
|
||||
let amount = get_amount_data(item);
|
||||
let auth_type = AdyenAuthType::try_from(&item.router_data.connector_auth_type)?;
|
||||
let shopper_interaction = AdyenShopperInteraction::from(item.router_data);
|
||||
let payment_method = AdyenPaymentMethod::try_from(bank_transfer_data)?;
|
||||
let payment_method = AdyenPaymentMethod::try_from((bank_transfer_data, item.router_data))?;
|
||||
let return_url = item.router_data.request.get_return_url()?;
|
||||
let request = AdyenPaymentRequest {
|
||||
amount,
|
||||
|
||||
@ -1272,74 +1272,63 @@ fn create_stripe_payment_method(
|
||||
}
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
match bank_transfer_data.deref() {
|
||||
domain::BankTransferData::AchBankTransfer { billing_details } => Ok((
|
||||
domain::BankTransferData::AchBankTransfer {} => Ok((
|
||||
StripePaymentMethodData::BankTransfer(StripeBankTransferData::AchBankTransfer(
|
||||
Box::new(AchTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
email: billing_address.email.ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "billing_address.email",
|
||||
},
|
||||
)?,
|
||||
}),
|
||||
)),
|
||||
None,
|
||||
StripeBillingAddress::default(),
|
||||
)),
|
||||
domain::BankTransferData::MultibancoBankTransfer { billing_details } => Ok((
|
||||
domain::BankTransferData::MultibancoBankTransfer {} => Ok((
|
||||
StripePaymentMethodData::BankTransfer(
|
||||
StripeBankTransferData::MultibancoBankTransfers(Box::new(
|
||||
MultibancoTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
email: billing_address.email.ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "billing_address.email",
|
||||
},
|
||||
)?,
|
||||
},
|
||||
)),
|
||||
),
|
||||
None,
|
||||
StripeBillingAddress::default(),
|
||||
)),
|
||||
domain::BankTransferData::SepaBankTransfer {
|
||||
billing_details,
|
||||
country,
|
||||
} => {
|
||||
let billing_details = StripeBillingAddress {
|
||||
email: Some(billing_details.email.clone()),
|
||||
name: Some(billing_details.name.clone()),
|
||||
..Default::default()
|
||||
};
|
||||
Ok((
|
||||
domain::BankTransferData::SepaBankTransfer {} => Ok((
|
||||
StripePaymentMethodData::BankTransfer(
|
||||
StripeBankTransferData::SepaBankTransfer(Box::new(
|
||||
SepaBankTransferData {
|
||||
payment_method_data_type:
|
||||
StripePaymentMethodType::CustomerBalance,
|
||||
StripeBankTransferData::SepaBankTransfer(Box::new(SepaBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
bank_transfer_type: BankTransferType::EuBankTransfer,
|
||||
balance_funding_type: BankTransferType::BankTransfers,
|
||||
payment_method_type: StripePaymentMethodType::CustomerBalance,
|
||||
country: country.to_owned(),
|
||||
country: billing_address.country.ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "billing_address.country",
|
||||
},
|
||||
)),
|
||||
)?,
|
||||
})),
|
||||
),
|
||||
Some(StripePaymentMethodType::CustomerBalance),
|
||||
billing_details,
|
||||
))
|
||||
}
|
||||
domain::BankTransferData::BacsBankTransfer { billing_details } => {
|
||||
let billing_details = StripeBillingAddress {
|
||||
email: Some(billing_details.email.clone()),
|
||||
name: Some(billing_details.name.clone()),
|
||||
..Default::default()
|
||||
};
|
||||
Ok((
|
||||
billing_address,
|
||||
)),
|
||||
domain::BankTransferData::BacsBankTransfer {} => Ok((
|
||||
StripePaymentMethodData::BankTransfer(
|
||||
StripeBankTransferData::BacsBankTransfers(Box::new(
|
||||
BacsBankTransferData {
|
||||
payment_method_data_type:
|
||||
StripePaymentMethodType::CustomerBalance,
|
||||
StripeBankTransferData::BacsBankTransfers(Box::new(BacsBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
bank_transfer_type: BankTransferType::GbBankTransfer,
|
||||
balance_funding_type: BankTransferType::BankTransfers,
|
||||
payment_method_type: StripePaymentMethodType::CustomerBalance,
|
||||
},
|
||||
)),
|
||||
})),
|
||||
),
|
||||
Some(StripePaymentMethodType::CustomerBalance),
|
||||
billing_details,
|
||||
))
|
||||
}
|
||||
billing_address,
|
||||
)),
|
||||
domain::BankTransferData::Pix {} => Err(errors::ConnectorError::NotImplemented(
|
||||
connector_util::get_unimplemented_payment_method_error_message("stripe"),
|
||||
)
|
||||
@ -2001,11 +1990,7 @@ impl TryFrom<&types::SetupMandateRouterData> for SetupIntentRequest {
|
||||
fn try_from(item: &types::SetupMandateRouterData) -> Result<Self, Self::Error> {
|
||||
//Only cards supported for mandates
|
||||
let pm_type = StripePaymentMethodType::Card;
|
||||
let payment_data = StripePaymentMethodData::try_from((
|
||||
item.request.payment_method_data.clone(),
|
||||
item.auth_type,
|
||||
pm_type,
|
||||
))?;
|
||||
let payment_data = StripePaymentMethodData::try_from((item, item.auth_type, pm_type))?;
|
||||
|
||||
let meta_data = Some(get_transaction_metadata(
|
||||
item.request.metadata.clone(),
|
||||
@ -3603,19 +3588,20 @@ pub struct EvidenceDetails {
|
||||
|
||||
impl
|
||||
TryFrom<(
|
||||
domain::PaymentMethodData,
|
||||
&types::SetupMandateRouterData,
|
||||
enums::AuthenticationType,
|
||||
StripePaymentMethodType,
|
||||
)> for StripePaymentMethodData
|
||||
{
|
||||
type Error = error_stack::Report<errors::ConnectorError>;
|
||||
fn try_from(
|
||||
(pm_data, auth_type, pm_type): (
|
||||
domain::PaymentMethodData,
|
||||
(item, auth_type, pm_type): (
|
||||
&types::SetupMandateRouterData,
|
||||
enums::AuthenticationType,
|
||||
StripePaymentMethodType,
|
||||
),
|
||||
) -> Result<Self, Self::Error> {
|
||||
let pm_data = &item.request.payment_method_data;
|
||||
match pm_data {
|
||||
domain::PaymentMethodData::Card(ref ccard) => {
|
||||
let payment_method_auth_type = match auth_type {
|
||||
@ -3634,7 +3620,7 @@ impl
|
||||
Ok(Self::try_from((wallet_data, None))?)
|
||||
}
|
||||
domain::PaymentMethodData::BankDebit(bank_debit_data) => {
|
||||
let (_pm_type, bank_data) = get_bank_debit_data(&bank_debit_data);
|
||||
let (_pm_type, bank_data) = get_bank_debit_data(bank_debit_data);
|
||||
|
||||
Ok(Self::BankDebit(StripeBankDebitData {
|
||||
bank_specific_data: bank_data,
|
||||
@ -3643,31 +3629,27 @@ impl
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => match bank_transfer_data
|
||||
.deref()
|
||||
{
|
||||
domain::BankTransferData::AchBankTransfer { billing_details } => {
|
||||
Ok(Self::BankTransfer(StripeBankTransferData::AchBankTransfer(
|
||||
Box::new(AchTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
}),
|
||||
)))
|
||||
}
|
||||
domain::BankTransferData::MultibancoBankTransfer { billing_details } => Ok(
|
||||
Self::BankTransfer(StripeBankTransferData::MultibancoBankTransfers(Box::new(
|
||||
domain::BankTransferData::AchBankTransfer {} => Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::AchBankTransfer(Box::new(AchTransferData {
|
||||
email: item.get_billing_email()?,
|
||||
})),
|
||||
)),
|
||||
domain::BankTransferData::MultibancoBankTransfer {} => Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::MultibancoBankTransfers(Box::new(
|
||||
MultibancoTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
email: item.get_billing_email()?,
|
||||
},
|
||||
))),
|
||||
),
|
||||
domain::BankTransferData::SepaBankTransfer { country, .. } => {
|
||||
Ok(Self::BankTransfer(
|
||||
)),
|
||||
)),
|
||||
domain::BankTransferData::SepaBankTransfer {} => Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::SepaBankTransfer(Box::new(SepaBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
bank_transfer_type: BankTransferType::EuBankTransfer,
|
||||
balance_funding_type: BankTransferType::BankTransfers,
|
||||
payment_method_type: StripePaymentMethodType::CustomerBalance,
|
||||
country: country.to_owned(),
|
||||
country: item.get_billing_country()?,
|
||||
})),
|
||||
))
|
||||
}
|
||||
)),
|
||||
domain::BankTransferData::BacsBankTransfer { .. } => Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::BacsBankTransfers(Box::new(BacsBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
|
||||
@ -404,79 +404,20 @@ pub enum BankDebitData {
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum BankTransferData {
|
||||
AchBankTransfer {
|
||||
/// The billing details for ACH Bank Transfer
|
||||
billing_details: AchBillingDetails,
|
||||
},
|
||||
SepaBankTransfer {
|
||||
/// The billing details for SEPA
|
||||
billing_details: SepaAndBacsBillingDetails,
|
||||
|
||||
/// The two-letter ISO country code for SEPA and BACS
|
||||
country: api_models::enums::CountryAlpha2,
|
||||
},
|
||||
BacsBankTransfer {
|
||||
/// The billing details for SEPA
|
||||
billing_details: SepaAndBacsBillingDetails,
|
||||
},
|
||||
MultibancoBankTransfer {
|
||||
/// The billing details for Multibanco
|
||||
billing_details: MultibancoBillingDetails,
|
||||
},
|
||||
PermataBankTransfer {
|
||||
/// The billing details for Permata Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
BcaBankTransfer {
|
||||
/// The billing details for BCA Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
BniVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
BriVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
CimbVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
DanamonVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
MandiriVaBankTransfer {
|
||||
/// The billing details for BniVa Bank Transfer
|
||||
billing_details: DokuBillingDetails,
|
||||
},
|
||||
AchBankTransfer {},
|
||||
SepaBankTransfer {},
|
||||
BacsBankTransfer {},
|
||||
MultibancoBankTransfer {},
|
||||
PermataBankTransfer {},
|
||||
BcaBankTransfer {},
|
||||
BniVaBankTransfer {},
|
||||
BriVaBankTransfer {},
|
||||
CimbVaBankTransfer {},
|
||||
DanamonVaBankTransfer {},
|
||||
MandiriVaBankTransfer {},
|
||||
Pix {},
|
||||
Pse {},
|
||||
LocalBankTransfer {
|
||||
bank_code: Option<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct AchBillingDetails {
|
||||
/// The Email ID for ACH billing
|
||||
pub email: Email,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct DokuBillingDetails {
|
||||
/// The billing first name for Doku
|
||||
pub first_name: Secret<String>,
|
||||
/// The billing second name for Doku
|
||||
pub last_name: Option<Secret<String>>,
|
||||
/// The Email ID for Doku billing
|
||||
pub email: Email,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct MultibancoBillingDetails {
|
||||
pub email: Email,
|
||||
LocalBankTransfer { bank_code: Option<String> },
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
@ -922,72 +863,38 @@ impl From<api_models::payments::BankDebitData> for BankDebitData {
|
||||
impl From<api_models::payments::BankTransferData> for BankTransferData {
|
||||
fn from(value: api_models::payments::BankTransferData) -> Self {
|
||||
match value {
|
||||
api_models::payments::BankTransferData::AchBankTransfer { billing_details } => {
|
||||
Self::AchBankTransfer {
|
||||
billing_details: AchBillingDetails {
|
||||
email: billing_details.email,
|
||||
},
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. } => {
|
||||
Self::AchBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::SepaBankTransfer { .. } => {
|
||||
Self::SepaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::SepaBankTransfer {
|
||||
billing_details,
|
||||
country,
|
||||
} => Self::SepaBankTransfer {
|
||||
billing_details: SepaAndBacsBillingDetails {
|
||||
email: billing_details.email,
|
||||
name: billing_details.name,
|
||||
},
|
||||
country,
|
||||
},
|
||||
api_models::payments::BankTransferData::BacsBankTransfer { billing_details } => {
|
||||
Self::BacsBankTransfer {
|
||||
billing_details: SepaAndBacsBillingDetails {
|
||||
email: billing_details.email,
|
||||
name: billing_details.name,
|
||||
},
|
||||
api_models::payments::BankTransferData::BacsBankTransfer { .. } => {
|
||||
Self::BacsBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
Self::MultibancoBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::MultibancoBankTransfer { billing_details } => {
|
||||
Self::MultibancoBankTransfer {
|
||||
billing_details: MultibancoBillingDetails {
|
||||
email: billing_details.email,
|
||||
},
|
||||
api_models::payments::BankTransferData::PermataBankTransfer { .. } => {
|
||||
Self::PermataBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::BcaBankTransfer { .. } => {
|
||||
Self::BcaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::PermataBankTransfer { billing_details } => {
|
||||
Self::PermataBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
api_models::payments::BankTransferData::BniVaBankTransfer { .. } => {
|
||||
Self::BniVaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::BriVaBankTransfer { .. } => {
|
||||
Self::BriVaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::BcaBankTransfer { billing_details } => {
|
||||
Self::BcaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
api_models::payments::BankTransferData::CimbVaBankTransfer { .. } => {
|
||||
Self::CimbVaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::DanamonVaBankTransfer { .. } => {
|
||||
Self::DanamonVaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::BniVaBankTransfer { billing_details } => {
|
||||
Self::BniVaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::BriVaBankTransfer { billing_details } => {
|
||||
Self::BriVaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::CimbVaBankTransfer { billing_details } => {
|
||||
Self::CimbVaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::DanamonVaBankTransfer { billing_details } => {
|
||||
Self::DanamonVaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::MandiriVaBankTransfer { billing_details } => {
|
||||
Self::MandiriVaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
Self::MandiriVaBankTransfer {}
|
||||
}
|
||||
api_models::payments::BankTransferData::Pix {} => Self::Pix {},
|
||||
api_models::payments::BankTransferData::Pse {} => Self::Pse {},
|
||||
@ -997,13 +904,3 @@ impl From<api_models::payments::BankTransferData> for BankTransferData {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<api_models::payments::DokuBillingDetails> for DokuBillingDetails {
|
||||
fn from(billing: api_models::payments::DokuBillingDetails) -> Self {
|
||||
Self {
|
||||
first_name: billing.first_name,
|
||||
last_name: billing.last_name,
|
||||
email: billing.email,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4737,14 +4737,12 @@
|
||||
},
|
||||
"AchBillingDetails": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"email"
|
||||
],
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "The Email ID for ACH billing",
|
||||
"example": "example@me.com"
|
||||
"example": "example@me.com",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6073,13 +6071,15 @@
|
||||
"properties": {
|
||||
"ach_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/AchBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6093,12 +6093,16 @@
|
||||
"sepa_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details",
|
||||
"country"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/SepaAndBacsBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
},
|
||||
"country": {
|
||||
"$ref": "#/components/schemas/CountryAlpha2"
|
||||
@ -6115,13 +6119,15 @@
|
||||
"properties": {
|
||||
"bacs_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/SepaAndBacsBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6134,13 +6140,15 @@
|
||||
"properties": {
|
||||
"multibanco_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/MultibancoBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6153,13 +6161,15 @@
|
||||
"properties": {
|
||||
"permata_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6172,13 +6182,15 @@
|
||||
"properties": {
|
||||
"bca_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6191,13 +6203,15 @@
|
||||
"properties": {
|
||||
"bni_va_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6210,13 +6224,15 @@
|
||||
"properties": {
|
||||
"bri_va_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6229,13 +6245,15 @@
|
||||
"properties": {
|
||||
"cimb_va_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6248,13 +6266,15 @@
|
||||
"properties": {
|
||||
"danamon_va_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6267,13 +6287,15 @@
|
||||
"properties": {
|
||||
"mandiri_va_bank_transfer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/DokuBillingDetails"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8564,26 +8586,24 @@
|
||||
},
|
||||
"DokuBillingDetails": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"first_name",
|
||||
"last_name",
|
||||
"email"
|
||||
],
|
||||
"properties": {
|
||||
"first_name": {
|
||||
"type": "string",
|
||||
"description": "The billing first name for Doku",
|
||||
"example": "Jane"
|
||||
"example": "Jane",
|
||||
"nullable": true
|
||||
},
|
||||
"last_name": {
|
||||
"type": "string",
|
||||
"description": "The billing second name for Doku",
|
||||
"example": "Doe"
|
||||
"example": "Doe",
|
||||
"nullable": true
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "The Email ID for Doku billing",
|
||||
"example": "example@me.com"
|
||||
"example": "example@me.com",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -11338,13 +11358,11 @@
|
||||
},
|
||||
"MultibancoBillingDetails": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"email"
|
||||
],
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string",
|
||||
"example": "example@me.com"
|
||||
"example": "example@me.com",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -17688,20 +17706,18 @@
|
||||
},
|
||||
"SepaAndBacsBillingDetails": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"email",
|
||||
"name"
|
||||
],
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "The Email ID for SEPA and BACS billing",
|
||||
"example": "example@me.com"
|
||||
"example": "example@me.com",
|
||||
"nullable": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The billing name for SEPA and BACS billing",
|
||||
"example": "Jane Doe"
|
||||
"example": "Jane Doe",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -39,6 +39,20 @@
|
||||
"new_customer": "true",
|
||||
"login_date": "2019-09-10T10:11:12Z"
|
||||
},
|
||||
"billing": {
|
||||
"address": {
|
||||
"line1": "1467",
|
||||
"line2": "HarrisonStreet",
|
||||
"line3": "HarrisonStreet",
|
||||
"city": "SanFransico",
|
||||
"state": "California",
|
||||
"zip": "94122",
|
||||
"country": "US",
|
||||
"first_name": "Swangi",
|
||||
"last_name": "Kumari"
|
||||
},
|
||||
"email": "guest@example.com"
|
||||
},
|
||||
"routing": {
|
||||
"type": "single",
|
||||
"data": "stripe"
|
||||
|
||||
@ -16257,7 +16257,7 @@
|
||||
"language": "json"
|
||||
}
|
||||
},
|
||||
"raw": "{\"amount\":800,\"currency\":\"USD\",\"confirm\":false,\"capture_method\":\"automatic\",\"capture_on\":\"2022-09-10T10:11:12Z\",\"amount_to_capture\":800,\"customer_id\":\"poll\",\"email\":\"guest@example.com\",\"name\":\"John Doe\",\"phone\":\"999999999\",\"phone_country_code\":\"+65\",\"description\":\"Its my first payment request\",\"authentication_type\":\"no_three_ds\",\"return_url\":\"https://hs-payments-test.netlify.app/payments\",\"statement_descriptor_name\":\"Juspay\",\"statement_descriptor_suffix\":\"Router\",\"metadata\":{\"udf1\":\"value1\",\"new_customer\":\"true\",\"login_date\":\"2019-09-10T10:11:12Z\"},\"routing\":{\"type\":\"single\",\"data\":\"stripe\"}}"
|
||||
"raw": "{\"amount\":800,\"currency\":\"USD\",\"confirm\":false,\"capture_method\":\"automatic\",\"capture_on\":\"2022-09-10T10:11:12Z\",\"amount_to_capture\":800,\"customer_id\":\"poll\",\"email\":\"guest@example.com\",\"name\":\"JohnDoe\",\"phone\":\"999999999\",\"phone_country_code\":\"+65\",\"description\":\"Itsmyfirstpaymentrequest\",\"authentication_type\":\"no_three_ds\",\"return_url\":\"https://hs-payments-test.netlify.app/payments\",\"statement_descriptor_name\":\"Juspay\",\"statement_descriptor_suffix\":\"Router\",\"metadata\":{\"udf1\":\"value1\",\"new_customer\":\"true\",\"login_date\":\"2019-09-10T10:11:12Z\"},\"billing\":{\"address\":{\"line1\":\"1467\",\"line2\":\"HarrisonStreet\",\"line3\":\"HarrisonStreet\",\"city\":\"SanFransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"Swangi\",\"last_name\":\"Kumari\"},\"email\":\"guest@example.com\"},\"routing\":{\"type\":\"single\",\"data\":\"stripe\"}}"
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{baseUrl}}/payments",
|
||||
|
||||
Reference in New Issue
Block a user