mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 21:37:41 +08:00
refactor(payment_methods): add BankTransfer payment method data to new domain type to be used in connector module (#4260)
Co-authored-by: Narayan Bhat <narayan.bhat@juspay.in> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -2414,13 +2414,11 @@ impl<'a> TryFrom<(&domain::BankRedirectData, Option<bool>)> for AdyenPaymentMeth
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> TryFrom<&api_models::payments::BankTransferData> for AdyenPaymentMethod<'a> {
|
||||
impl<'a> TryFrom<&domain::BankTransferData> for AdyenPaymentMethod<'a> {
|
||||
type Error = Error;
|
||||
fn try_from(
|
||||
bank_transfer_data: &api_models::payments::BankTransferData,
|
||||
) -> Result<Self, Self::Error> {
|
||||
fn try_from(bank_transfer_data: &domain::BankTransferData) -> Result<Self, Self::Error> {
|
||||
match bank_transfer_data {
|
||||
payments::BankTransferData::PermataBankTransfer {
|
||||
domain::BankTransferData::PermataBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::PermataBankTransfer(Box::new(
|
||||
DokuBankData {
|
||||
@ -2429,7 +2427,7 @@ impl<'a> TryFrom<&api_models::payments::BankTransferData> for AdyenPaymentMethod
|
||||
shopper_email: billing_details.email.clone(),
|
||||
},
|
||||
))),
|
||||
payments::BankTransferData::BcaBankTransfer {
|
||||
domain::BankTransferData::BcaBankTransfer {
|
||||
ref billing_details,
|
||||
} => Ok(AdyenPaymentMethod::BcaBankTransfer(Box::new(
|
||||
DokuBankData {
|
||||
@ -2438,52 +2436,52 @@ impl<'a> TryFrom<&api_models::payments::BankTransferData> for AdyenPaymentMethod
|
||||
shopper_email: billing_details.email.clone(),
|
||||
},
|
||||
))),
|
||||
payments::BankTransferData::BniVaBankTransfer {
|
||||
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(),
|
||||
}))),
|
||||
payments::BankTransferData::BriVaBankTransfer {
|
||||
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(),
|
||||
}))),
|
||||
payments::BankTransferData::CimbVaBankTransfer {
|
||||
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(),
|
||||
}))),
|
||||
payments::BankTransferData::DanamonVaBankTransfer {
|
||||
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(),
|
||||
}))),
|
||||
payments::BankTransferData::MandiriVaBankTransfer {
|
||||
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(),
|
||||
}))),
|
||||
api_models::payments::BankTransferData::Pix {} => {
|
||||
domain::BankTransferData::Pix {} => {
|
||||
Ok(AdyenPaymentMethod::Pix(Box::new(PmdForPaymentType {
|
||||
payment_type: PaymentType::Pix,
|
||||
})))
|
||||
}
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::LocalBankTransfer { .. }
|
||||
| payments::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented(
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| domain::BankTransferData::LocalBankTransfer { .. }
|
||||
| domain::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented(
|
||||
utils::get_unimplemented_payment_method_error_message("Adyen"),
|
||||
)
|
||||
.into()),
|
||||
@ -2791,7 +2789,7 @@ impl<'a>
|
||||
impl<'a>
|
||||
TryFrom<(
|
||||
&AdyenRouterData<&types::PaymentsAuthorizeRouterData>,
|
||||
&api_models::payments::BankTransferData,
|
||||
&domain::BankTransferData,
|
||||
)> for AdyenPaymentRequest<'a>
|
||||
{
|
||||
type Error = Error;
|
||||
@ -2799,7 +2797,7 @@ impl<'a>
|
||||
fn try_from(
|
||||
value: (
|
||||
&AdyenRouterData<&types::PaymentsAuthorizeRouterData>,
|
||||
&api_models::payments::BankTransferData,
|
||||
&domain::BankTransferData,
|
||||
),
|
||||
) -> Result<Self, Self::Error> {
|
||||
let (item, bank_transfer_data) = value;
|
||||
|
||||
@ -674,24 +674,24 @@ impl TryFrom<&domain::BankDebitData> for PaypalPaymentsRequest {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&api_models::payments::BankTransferData> for PaypalPaymentsRequest {
|
||||
impl TryFrom<&domain::BankTransferData> for PaypalPaymentsRequest {
|
||||
type Error = error_stack::Report<errors::ConnectorError>;
|
||||
fn try_from(value: &api_models::payments::BankTransferData) -> Result<Self, Self::Error> {
|
||||
fn try_from(value: &domain::BankTransferData) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::Pix {}
|
||||
| api_models::payments::BankTransferData::Pse {}
|
||||
| api_models::payments::BankTransferData::LocalBankTransfer { .. } => {
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::Pix {}
|
||||
| domain::BankTransferData::Pse {}
|
||||
| domain::BankTransferData::LocalBankTransfer { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
utils::get_unimplemented_payment_method_error_message("Paypal"),
|
||||
)
|
||||
|
||||
@ -214,26 +214,24 @@ impl TryFrom<&domain::WalletData> for Shift4PaymentMethod {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&api_models::payments::BankTransferData> for Shift4PaymentMethod {
|
||||
impl TryFrom<&domain::BankTransferData> for Shift4PaymentMethod {
|
||||
type Error = Error;
|
||||
fn try_from(
|
||||
bank_transfer_data: &api_models::payments::BankTransferData,
|
||||
) -> Result<Self, Self::Error> {
|
||||
fn try_from(bank_transfer_data: &domain::BankTransferData) -> Result<Self, Self::Error> {
|
||||
match bank_transfer_data {
|
||||
payments::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| payments::BankTransferData::AchBankTransfer { .. }
|
||||
| payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| payments::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::Pix {}
|
||||
| payments::BankTransferData::Pse {}
|
||||
| payments::BankTransferData::LocalBankTransfer { .. } => {
|
||||
domain::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::Pix { .. }
|
||||
| domain::BankTransferData::Pse {}
|
||||
| domain::BankTransferData::LocalBankTransfer { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
utils::get_unimplemented_payment_method_error_message("Shift4"),
|
||||
)
|
||||
|
||||
@ -823,10 +823,10 @@ impl
|
||||
connectors: &settings::Connectors,
|
||||
) -> CustomResult<String, errors::ConnectorError> {
|
||||
match &req.request.payment_method_data {
|
||||
domain::payments::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
match bank_transfer_data.deref() {
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
Ok(format!("{}{}", self.base_url(connectors), "v1/charges"))
|
||||
}
|
||||
_ => Ok(format!(
|
||||
@ -850,7 +850,7 @@ impl
|
||||
_connectors: &settings::Connectors,
|
||||
) -> CustomResult<RequestContent, errors::ConnectorError> {
|
||||
match &req.request.payment_method_data {
|
||||
domain::payments::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
stripe::get_bank_transfer_request_data(req, bank_transfer_data.deref())
|
||||
}
|
||||
_ => {
|
||||
@ -890,45 +890,41 @@ impl
|
||||
res: types::Response,
|
||||
) -> CustomResult<types::PaymentsAuthorizeRouterData, errors::ConnectorError> {
|
||||
match &data.request.payment_method_data {
|
||||
domain::payments::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
match bank_transfer_data.deref() {
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
let response: stripe::ChargesResponse = res
|
||||
.response
|
||||
.parse_struct("ChargesResponse")
|
||||
.change_context(
|
||||
errors::ConnectorError::ResponseDeserializationFailed,
|
||||
)?;
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => match bank_transfer_data
|
||||
.deref()
|
||||
{
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
let response: stripe::ChargesResponse = res
|
||||
.response
|
||||
.parse_struct("ChargesResponse")
|
||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
||||
|
||||
event_builder.map(|i| i.set_response_body(&response));
|
||||
router_env::logger::info!(connector_response=?response);
|
||||
event_builder.map(|i| i.set_response_body(&response));
|
||||
router_env::logger::info!(connector_response=?response);
|
||||
|
||||
types::RouterData::try_from(types::ResponseRouterData {
|
||||
response,
|
||||
data: data.clone(),
|
||||
http_code: res.status_code,
|
||||
})
|
||||
}
|
||||
_ => {
|
||||
let response: stripe::PaymentIntentResponse = res
|
||||
.response
|
||||
.parse_struct("PaymentIntentResponse")
|
||||
.change_context(
|
||||
errors::ConnectorError::ResponseDeserializationFailed,
|
||||
)?;
|
||||
|
||||
event_builder.map(|i| i.set_response_body(&response));
|
||||
router_env::logger::info!(connector_response=?response);
|
||||
|
||||
types::RouterData::try_from(types::ResponseRouterData {
|
||||
response,
|
||||
data: data.clone(),
|
||||
http_code: res.status_code,
|
||||
})
|
||||
}
|
||||
types::RouterData::try_from(types::ResponseRouterData {
|
||||
response,
|
||||
data: data.clone(),
|
||||
http_code: res.status_code,
|
||||
})
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
let response: stripe::PaymentIntentResponse = res
|
||||
.response
|
||||
.parse_struct("PaymentIntentResponse")
|
||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
||||
|
||||
event_builder.map(|i| i.set_response_body(&response));
|
||||
router_env::logger::info!(connector_response=?response);
|
||||
|
||||
types::RouterData::try_from(types::ResponseRouterData {
|
||||
response,
|
||||
data: data.clone(),
|
||||
http_code: res.status_code,
|
||||
})
|
||||
}
|
||||
},
|
||||
_ => {
|
||||
let response: stripe::PaymentIntentResponse = res
|
||||
.response
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use std::{collections::HashMap, ops::Deref};
|
||||
|
||||
use api_models::{self, enums as api_enums, payments};
|
||||
use api_models::{self, enums as api_enums};
|
||||
use common_utils::{
|
||||
errors::CustomResult,
|
||||
ext_traits::{ByteSliceExt, Encode},
|
||||
@ -1341,7 +1341,7 @@ fn create_stripe_payment_method(
|
||||
}
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
match bank_transfer_data.deref() {
|
||||
payments::BankTransferData::AchBankTransfer { billing_details } => Ok((
|
||||
domain::BankTransferData::AchBankTransfer { billing_details } => Ok((
|
||||
StripePaymentMethodData::BankTransfer(StripeBankTransferData::AchBankTransfer(
|
||||
Box::new(AchTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
@ -1350,7 +1350,7 @@ fn create_stripe_payment_method(
|
||||
None,
|
||||
StripeBillingAddress::default(),
|
||||
)),
|
||||
payments::BankTransferData::MultibancoBankTransfer { billing_details } => Ok((
|
||||
domain::BankTransferData::MultibancoBankTransfer { billing_details } => Ok((
|
||||
StripePaymentMethodData::BankTransfer(
|
||||
StripeBankTransferData::MultibancoBankTransfers(Box::new(
|
||||
MultibancoTransferData {
|
||||
@ -1361,7 +1361,7 @@ fn create_stripe_payment_method(
|
||||
None,
|
||||
StripeBillingAddress::default(),
|
||||
)),
|
||||
payments::BankTransferData::SepaBankTransfer {
|
||||
domain::BankTransferData::SepaBankTransfer {
|
||||
billing_details,
|
||||
country,
|
||||
} => {
|
||||
@ -1387,7 +1387,7 @@ fn create_stripe_payment_method(
|
||||
billing_details,
|
||||
))
|
||||
}
|
||||
payments::BankTransferData::BacsBankTransfer { billing_details } => {
|
||||
domain::BankTransferData::BacsBankTransfer { billing_details } => {
|
||||
let billing_details = StripeBillingAddress {
|
||||
email: Some(billing_details.email.clone()),
|
||||
name: Some(billing_details.name.clone()),
|
||||
@ -1409,19 +1409,19 @@ fn create_stripe_payment_method(
|
||||
billing_details,
|
||||
))
|
||||
}
|
||||
payments::BankTransferData::Pix {} => Err(errors::ConnectorError::NotImplemented(
|
||||
domain::BankTransferData::Pix {} => Err(errors::ConnectorError::NotImplemented(
|
||||
connector_util::get_unimplemented_payment_method_error_message("stripe"),
|
||||
)
|
||||
.into()),
|
||||
payments::BankTransferData::Pse {}
|
||||
| payments::BankTransferData::LocalBankTransfer { .. }
|
||||
| payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| payments::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
domain::BankTransferData::Pse {}
|
||||
| domain::BankTransferData::LocalBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
connector_util::get_unimplemented_payment_method_error_message("stripe"),
|
||||
)
|
||||
@ -3239,7 +3239,7 @@ impl TryFrom<&types::PaymentsPreProcessingRouterData> for StripeCreditTransferSo
|
||||
match &item.request.payment_method_data {
|
||||
Some(domain::PaymentMethodData::BankTransfer(bank_transfer_data)) => {
|
||||
match **bank_transfer_data {
|
||||
payments::BankTransferData::MultibancoBankTransfer { .. } => Ok(
|
||||
domain::BankTransferData::MultibancoBankTransfer { .. } => Ok(
|
||||
Self::MultibancoBankTansfer(MultibancoCreditTransferSourceRequest {
|
||||
transfer_type: StripeCreditTransferTypes::Multibanco,
|
||||
currency,
|
||||
@ -3250,7 +3250,7 @@ impl TryFrom<&types::PaymentsPreProcessingRouterData> for StripeCreditTransferSo
|
||||
return_url: Some(item.get_return_url()?),
|
||||
}),
|
||||
),
|
||||
payments::BankTransferData::AchBankTransfer { .. } => {
|
||||
domain::BankTransferData::AchBankTransfer { .. } => {
|
||||
Ok(Self::AchBankTansfer(AchCreditTransferSourceRequest {
|
||||
transfer_type: StripeCreditTransferTypes::AchCreditTransfer,
|
||||
payment_method_data: AchTransferData {
|
||||
@ -3259,18 +3259,18 @@ impl TryFrom<&types::PaymentsPreProcessingRouterData> for StripeCreditTransferSo
|
||||
currency,
|
||||
}))
|
||||
}
|
||||
payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| payments::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::LocalBankTransfer { .. }
|
||||
| payments::BankTransferData::Pix { .. }
|
||||
| payments::BankTransferData::Pse { .. } => {
|
||||
domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::LocalBankTransfer { .. }
|
||||
| domain::BankTransferData::Pix { .. }
|
||||
| domain::BankTransferData::Pse { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
connector_util::get_unimplemented_payment_method_error_message(
|
||||
"stripe",
|
||||
@ -3685,21 +3685,21 @@ impl
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => match bank_transfer_data
|
||||
.deref()
|
||||
{
|
||||
payments::BankTransferData::AchBankTransfer { billing_details } => {
|
||||
domain::BankTransferData::AchBankTransfer { billing_details } => {
|
||||
Ok(Self::BankTransfer(StripeBankTransferData::AchBankTransfer(
|
||||
Box::new(AchTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
}),
|
||||
)))
|
||||
}
|
||||
payments::BankTransferData::MultibancoBankTransfer { billing_details } => Ok(
|
||||
domain::BankTransferData::MultibancoBankTransfer { billing_details } => Ok(
|
||||
Self::BankTransfer(StripeBankTransferData::MultibancoBankTransfers(Box::new(
|
||||
MultibancoTransferData {
|
||||
email: billing_details.email.to_owned(),
|
||||
},
|
||||
))),
|
||||
),
|
||||
payments::BankTransferData::SepaBankTransfer { country, .. } => {
|
||||
domain::BankTransferData::SepaBankTransfer { country, .. } => {
|
||||
Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::SepaBankTransfer(Box::new(SepaBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
@ -3710,7 +3710,7 @@ impl
|
||||
})),
|
||||
))
|
||||
}
|
||||
payments::BankTransferData::BacsBankTransfer { .. } => Ok(Self::BankTransfer(
|
||||
domain::BankTransferData::BacsBankTransfer { .. } => Ok(Self::BankTransfer(
|
||||
StripeBankTransferData::BacsBankTransfers(Box::new(BacsBankTransferData {
|
||||
payment_method_data_type: StripePaymentMethodType::CustomerBalance,
|
||||
bank_transfer_type: BankTransferType::GbBankTransfer,
|
||||
@ -3718,16 +3718,16 @@ impl
|
||||
payment_method_type: StripePaymentMethodType::CustomerBalance,
|
||||
})),
|
||||
)),
|
||||
payments::BankTransferData::Pix {}
|
||||
| payments::BankTransferData::Pse {}
|
||||
| payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| payments::BankTransferData::LocalBankTransfer { .. }
|
||||
| payments::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
domain::BankTransferData::Pix {}
|
||||
| domain::BankTransferData::Pse {}
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::LocalBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
connector_util::get_unimplemented_payment_method_error_message("stripe"),
|
||||
)
|
||||
@ -3757,11 +3757,11 @@ pub struct StripeGpayToken {
|
||||
|
||||
pub fn get_bank_transfer_request_data(
|
||||
req: &types::PaymentsAuthorizeRouterData,
|
||||
bank_transfer_data: &api_models::payments::BankTransferData,
|
||||
bank_transfer_data: &domain::BankTransferData,
|
||||
) -> CustomResult<RequestContent, errors::ConnectorError> {
|
||||
match bank_transfer_data {
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
let req = ChargesRequest::try_from(req)?;
|
||||
Ok(RequestContent::FormUrlEncoded(Box::new(req)))
|
||||
}
|
||||
|
||||
@ -311,14 +311,14 @@ impl
|
||||
impl
|
||||
TryFrom<(
|
||||
&ZenRouterData<&types::PaymentsAuthorizeRouterData>,
|
||||
&Box<api_models::payments::BankTransferData>,
|
||||
&Box<domain::BankTransferData>,
|
||||
)> for ZenPaymentsRequest
|
||||
{
|
||||
type Error = error_stack::Report<errors::ConnectorError>;
|
||||
fn try_from(
|
||||
value: (
|
||||
&ZenRouterData<&types::PaymentsAuthorizeRouterData>,
|
||||
&Box<api_models::payments::BankTransferData>,
|
||||
&Box<domain::BankTransferData>,
|
||||
),
|
||||
) -> Result<Self, Self::Error> {
|
||||
let (item, bank_transfer_data) = value;
|
||||
@ -332,26 +332,22 @@ impl
|
||||
return_url: item.router_data.request.get_router_return_url()?,
|
||||
});
|
||||
let payment_channel = match **bank_transfer_data {
|
||||
api_models::payments::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
domain::BankTransferData::MultibancoBankTransfer { .. } => {
|
||||
ZenPaymentChannels::PclBoacompraMultibanco
|
||||
}
|
||||
api_models::payments::BankTransferData::Pix { .. } => {
|
||||
ZenPaymentChannels::PclBoacompraPix
|
||||
}
|
||||
api_models::payments::BankTransferData::Pse { .. } => {
|
||||
ZenPaymentChannels::PclBoacompraPse
|
||||
}
|
||||
api_models::payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::LocalBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
domain::BankTransferData::Pix { .. } => ZenPaymentChannels::PclBoacompraPix,
|
||||
domain::BankTransferData::Pse { .. } => ZenPaymentChannels::PclBoacompraPse,
|
||||
domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::LocalBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. } => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
utils::get_unimplemented_payment_method_error_message("Zen"),
|
||||
))?
|
||||
|
||||
@ -148,25 +148,25 @@ impl TryFrom<&ZslRouterData<&types::PaymentsAuthorizeRouterData>> for ZslPayment
|
||||
let payment_method = match item.router_data.request.payment_method_data.clone() {
|
||||
domain::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
match *bank_transfer_data {
|
||||
api_models::payments::BankTransferData::LocalBankTransfer { bank_code } => Ok(
|
||||
domain::BankTransferData::LocalBankTransfer { bank_code } => Ok(
|
||||
ZslPaymentMethods::LocalBankTransfer(LocalBankTransaferRequest {
|
||||
bank_code,
|
||||
pay_method: None,
|
||||
}),
|
||||
),
|
||||
api_models::payments::BankTransferData::AchBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::SepaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BacsBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::PermataBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BcaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BniVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::BriVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| api_models::payments::BankTransferData::Pix {}
|
||||
| api_models::payments::BankTransferData::Pse {} => {
|
||||
domain::BankTransferData::AchBankTransfer { .. }
|
||||
| domain::BankTransferData::SepaBankTransfer { .. }
|
||||
| domain::BankTransferData::BacsBankTransfer { .. }
|
||||
| domain::BankTransferData::MultibancoBankTransfer { .. }
|
||||
| domain::BankTransferData::PermataBankTransfer { .. }
|
||||
| domain::BankTransferData::BcaBankTransfer { .. }
|
||||
| domain::BankTransferData::BniVaBankTransfer { .. }
|
||||
| domain::BankTransferData::BriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::CimbVaBankTransfer { .. }
|
||||
| domain::BankTransferData::DanamonVaBankTransfer { .. }
|
||||
| domain::BankTransferData::MandiriVaBankTransfer { .. }
|
||||
| domain::BankTransferData::Pix {}
|
||||
| domain::BankTransferData::Pse {} => {
|
||||
Err(errors::ConnectorError::NotImplemented(
|
||||
connector_utils::get_unimplemented_payment_method_error_message(
|
||||
item.router_data.connector.as_str(),
|
||||
|
||||
@ -12,7 +12,7 @@ pub enum PaymentMethodData {
|
||||
PayLater(PayLaterData),
|
||||
BankRedirect(BankRedirectData),
|
||||
BankDebit(BankDebitData),
|
||||
BankTransfer(Box<api_models::payments::BankTransferData>),
|
||||
BankTransfer(Box<BankTransferData>),
|
||||
Crypto(CryptoData),
|
||||
MandatePayment,
|
||||
Reward,
|
||||
@ -451,6 +451,92 @@ pub struct BankDebitBilling {
|
||||
pub address: Option<api_models::payments::AddressDetails>,
|
||||
}
|
||||
|
||||
#[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,
|
||||
},
|
||||
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,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
pub struct SepaAndBacsBillingDetails {
|
||||
/// The Email ID for SEPA and BACS billing
|
||||
pub email: Email,
|
||||
/// The billing name for SEPA and BACS billing
|
||||
pub name: Secret<String>,
|
||||
}
|
||||
|
||||
impl From<api_models::payments::PaymentMethodData> for PaymentMethodData {
|
||||
fn from(api_model_payment_method_data: api_models::payments::PaymentMethodData) -> Self {
|
||||
match api_model_payment_method_data {
|
||||
@ -473,7 +559,7 @@ impl From<api_models::payments::PaymentMethodData> for PaymentMethodData {
|
||||
Self::BankDebit(From::from(bank_debit_data))
|
||||
}
|
||||
api_models::payments::PaymentMethodData::BankTransfer(bank_transfer_data) => {
|
||||
Self::BankTransfer(bank_transfer_data)
|
||||
Self::BankTransfer(Box::new(From::from(*bank_transfer_data)))
|
||||
}
|
||||
api_models::payments::PaymentMethodData::Crypto(crypto_data) => {
|
||||
Self::Crypto(From::from(crypto_data))
|
||||
@ -940,3 +1026,92 @@ 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::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::MultibancoBankTransfer { billing_details } => {
|
||||
Self::MultibancoBankTransfer {
|
||||
billing_details: MultibancoBillingDetails {
|
||||
email: billing_details.email,
|
||||
},
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::PermataBankTransfer { billing_details } => {
|
||||
Self::PermataBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
api_models::payments::BankTransferData::BcaBankTransfer { billing_details } => {
|
||||
Self::BcaBankTransfer {
|
||||
billing_details: DokuBillingDetails::from(billing_details),
|
||||
}
|
||||
}
|
||||
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::Pix {} => Self::Pix {},
|
||||
api_models::payments::BankTransferData::Pse {} => Self::Pse {},
|
||||
api_models::payments::BankTransferData::LocalBankTransfer { bank_code } => {
|
||||
Self::LocalBankTransfer { bank_code }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user