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:
Swangi Kumari
2024-05-13 11:50:08 +05:30
committed by GitHub
parent 2997e24b0c
commit 0f5a370b55
7 changed files with 294 additions and 398 deletions

View File

@ -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,
}
}

View File

@ -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,

View File

@ -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,

View File

@ -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,
}
}
}

View File

@ -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
}
}
},

View File

@ -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"

View File

@ -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",