feat(router): add local bank transfer payment method (#4294)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
AkshayaFoiger
2024-04-08 18:59:52 +05:30
committed by GitHub
parent e0e843715c
commit 06440eb640
18 changed files with 54 additions and 8 deletions

View File

@ -1465,6 +1465,7 @@ impl GetPaymentMethodType for BankTransferData {
Self::MandiriVaBankTransfer { .. } => api_enums::PaymentMethodType::MandiriVa, Self::MandiriVaBankTransfer { .. } => api_enums::PaymentMethodType::MandiriVa,
Self::Pix {} => api_enums::PaymentMethodType::Pix, Self::Pix {} => api_enums::PaymentMethodType::Pix,
Self::Pse {} => api_enums::PaymentMethodType::Pse, Self::Pse {} => api_enums::PaymentMethodType::Pse,
Self::LocalBankTransfer { .. } => api_enums::PaymentMethodType::LocalBankTransfer,
} }
} }
} }
@ -2029,6 +2030,9 @@ pub enum BankTransferData {
}, },
Pix {}, Pix {},
Pse {}, Pse {},
LocalBankTransfer {
bank_code: Option<String>,
},
} }
impl GetAddressFromPaymentMethodData for BankTransferData { impl GetAddressFromPaymentMethodData for BankTransferData {
@ -2079,7 +2083,7 @@ impl GetAddressFromPaymentMethodData for BankTransferData {
phone: None, phone: None,
email: Some(billing_details.email.clone()), email: Some(billing_details.email.clone()),
}), }),
Self::Pix {} | Self::Pse {} => None, Self::LocalBankTransfer { .. } | Self::Pix {} | Self::Pse {} => None,
} }
} }
} }

View File

@ -1423,6 +1423,7 @@ pub enum PaymentMethodType {
FamilyMart, FamilyMart,
Seicomart, Seicomart,
PayEasy, PayEasy,
LocalBankTransfer,
} }
/// Indicates the type of payment method. Eg: 'card', 'wallet', etc. /// Indicates the type of payment method. Eg: 'card', 'wallet', etc.

View File

@ -1842,6 +1842,7 @@ impl From<PaymentMethodType> for PaymentMethod {
PaymentMethodType::PermataBankTransfer => Self::BankTransfer, PaymentMethodType::PermataBankTransfer => Self::BankTransfer,
PaymentMethodType::Pix => Self::BankTransfer, PaymentMethodType::Pix => Self::BankTransfer,
PaymentMethodType::Pse => Self::BankTransfer, PaymentMethodType::Pse => Self::BankTransfer,
PaymentMethodType::LocalBankTransfer => Self::BankTransfer,
PaymentMethodType::PayBright => Self::PayLater, PaymentMethodType::PayBright => Self::PayLater,
PaymentMethodType::Paypal => Self::Wallet, PaymentMethodType::Paypal => Self::Wallet,
PaymentMethodType::PaySafeCard => Self::GiftCard, PaymentMethodType::PaySafeCard => Self::GiftCard,

View File

@ -186,6 +186,7 @@ pub enum BankTransferType {
PermataBankTransfer, PermataBankTransfer,
Pix, Pix,
Pse, Pse,
LocalBankTransfer,
} }
#[derive( #[derive(

View File

@ -115,6 +115,7 @@ impl From<enums::BankTransferType> for global_enums::PaymentMethodType {
enums::BankTransferType::DanamonVa => Self::DanamonVa, enums::BankTransferType::DanamonVa => Self::DanamonVa,
enums::BankTransferType::MandiriVa => Self::MandiriVa, enums::BankTransferType::MandiriVa => Self::MandiriVa,
enums::BankTransferType::PermataBankTransfer => Self::PermataBankTransfer, enums::BankTransferType::PermataBankTransfer => Self::PermataBankTransfer,
enums::BankTransferType::LocalBankTransfer => Self::LocalBankTransfer,
} }
} }
} }

View File

@ -143,6 +143,9 @@ impl IntoDirValue for (global_enums::PaymentMethodType, global_enums::PaymentMet
global_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)), global_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)),
global_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)), global_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)),
global_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)), global_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)),
global_enums::PaymentMethodType::LocalBankTransfer => {
Ok(dirval!(BankTransferType = LocalBankTransfer))
}
global_enums::PaymentMethodType::PermataBankTransfer => { global_enums::PaymentMethodType::PermataBankTransfer => {
Ok(dirval!(BankTransferType = PermataBankTransfer)) Ok(dirval!(BankTransferType = PermataBankTransfer))
} }

View File

@ -262,6 +262,9 @@ impl IntoDirValue for (api_enums::PaymentMethodType, api_enums::PaymentMethod) {
api_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)), api_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)),
api_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)), api_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)),
api_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)), api_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)),
api_enums::PaymentMethodType::LocalBankTransfer => {
Ok(dirval!(BankTransferType = LocalBankTransfer))
}
api_enums::PaymentMethodType::PermataBankTransfer => { api_enums::PaymentMethodType::PermataBankTransfer => {
Ok(dirval!(BankTransferType = PermataBankTransfer)) Ok(dirval!(BankTransferType = PermataBankTransfer))
} }

View File

@ -2,7 +2,7 @@ fn main() {
// Set thread stack size to 8 MiB for debug builds // Set thread stack size to 8 MiB for debug builds
// Reference: https://doc.rust-lang.org/std/thread/#stack-size // Reference: https://doc.rust-lang.org/std/thread/#stack-size
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
println!("cargo:rustc-env=RUST_MIN_STACK=8388608"); // 8 * 1024 * 1024 = 8 MiB println!("cargo:rustc-env=RUST_MIN_STACK=18388608"); // 8 * 1024 * 1024 = 8 MiB
#[cfg(feature = "vergen")] #[cfg(feature = "vergen")]
router_env::vergen::generate_cargo_instructions(); router_env::vergen::generate_cargo_instructions();

View File

@ -202,6 +202,7 @@ impl ConnectorValidation for Adyen {
| PaymentMethodType::Becs | PaymentMethodType::Becs
| PaymentMethodType::ClassicReward | PaymentMethodType::ClassicReward
| PaymentMethodType::Pse | PaymentMethodType::Pse
| PaymentMethodType::LocalBankTransfer
| PaymentMethodType::Efecty | PaymentMethodType::Efecty
| PaymentMethodType::PagoEfectivo | PaymentMethodType::PagoEfectivo
| PaymentMethodType::RedCompra | PaymentMethodType::RedCompra

View File

@ -2484,6 +2484,7 @@ impl<'a> TryFrom<&api_models::payments::BankTransferData> for AdyenPaymentMethod
| api_models::payments::BankTransferData::SepaBankTransfer { .. } | api_models::payments::BankTransferData::SepaBankTransfer { .. }
| api_models::payments::BankTransferData::BacsBankTransfer { .. } | api_models::payments::BankTransferData::BacsBankTransfer { .. }
| api_models::payments::BankTransferData::MultibancoBankTransfer { .. } | api_models::payments::BankTransferData::MultibancoBankTransfer { .. }
| api_models::payments::BankTransferData::LocalBankTransfer { .. }
| payments::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented( | payments::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented(
utils::get_unimplemented_payment_method_error_message("Adyen"), utils::get_unimplemented_payment_method_error_message("Adyen"),
) )

View File

@ -403,6 +403,7 @@ impl
| common_enums::PaymentMethodType::WeChatPay | common_enums::PaymentMethodType::WeChatPay
| common_enums::PaymentMethodType::SevenEleven | common_enums::PaymentMethodType::SevenEleven
| common_enums::PaymentMethodType::Lawson | common_enums::PaymentMethodType::Lawson
| common_enums::PaymentMethodType::LocalBankTransfer
| common_enums::PaymentMethodType::MiniStop | common_enums::PaymentMethodType::MiniStop
| common_enums::PaymentMethodType::FamilyMart | common_enums::PaymentMethodType::FamilyMart
| common_enums::PaymentMethodType::Seicomart | common_enums::PaymentMethodType::Seicomart

View File

@ -690,7 +690,8 @@ impl TryFrom<&api_models::payments::BankTransferData> for PaypalPaymentsRequest
| api_models::payments::BankTransferData::DanamonVaBankTransfer { .. } | api_models::payments::BankTransferData::DanamonVaBankTransfer { .. }
| api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } | api_models::payments::BankTransferData::MandiriVaBankTransfer { .. }
| api_models::payments::BankTransferData::Pix {} | api_models::payments::BankTransferData::Pix {}
| api_models::payments::BankTransferData::Pse {} => { | api_models::payments::BankTransferData::Pse {}
| api_models::payments::BankTransferData::LocalBankTransfer { .. } => {
Err(errors::ConnectorError::NotImplemented( Err(errors::ConnectorError::NotImplemented(
utils::get_unimplemented_payment_method_error_message("Paypal"), utils::get_unimplemented_payment_method_error_message("Paypal"),
) )

View File

@ -232,10 +232,13 @@ impl TryFrom<&api_models::payments::BankTransferData> for Shift4PaymentMethod {
| payments::BankTransferData::DanamonVaBankTransfer { .. } | payments::BankTransferData::DanamonVaBankTransfer { .. }
| payments::BankTransferData::MandiriVaBankTransfer { .. } | payments::BankTransferData::MandiriVaBankTransfer { .. }
| payments::BankTransferData::Pix {} | payments::BankTransferData::Pix {}
| payments::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented( | payments::BankTransferData::Pse {}
utils::get_unimplemented_payment_method_error_message("Shift4"), | payments::BankTransferData::LocalBankTransfer { .. } => {
) Err(errors::ConnectorError::NotImplemented(
.into()), utils::get_unimplemented_payment_method_error_message("Shift4"),
)
.into())
}
} }
} }
} }

View File

@ -705,6 +705,7 @@ impl TryFrom<enums::PaymentMethodType> for StripePaymentMethodType {
| enums::PaymentMethodType::FamilyMart | enums::PaymentMethodType::FamilyMart
| enums::PaymentMethodType::Seicomart | enums::PaymentMethodType::Seicomart
| enums::PaymentMethodType::PayEasy | enums::PaymentMethodType::PayEasy
| enums::PaymentMethodType::LocalBankTransfer
| enums::PaymentMethodType::Walley => Err(errors::ConnectorError::NotImplemented( | enums::PaymentMethodType::Walley => Err(errors::ConnectorError::NotImplemented(
connector_util::get_unimplemented_payment_method_error_message("stripe"), connector_util::get_unimplemented_payment_method_error_message("stripe"),
) )
@ -1413,6 +1414,7 @@ fn create_stripe_payment_method(
) )
.into()), .into()),
payments::BankTransferData::Pse {} payments::BankTransferData::Pse {}
| payments::BankTransferData::LocalBankTransfer { .. }
| payments::BankTransferData::PermataBankTransfer { .. } | payments::BankTransferData::PermataBankTransfer { .. }
| payments::BankTransferData::BcaBankTransfer { .. } | payments::BankTransferData::BcaBankTransfer { .. }
| payments::BankTransferData::BniVaBankTransfer { .. } | payments::BankTransferData::BniVaBankTransfer { .. }
@ -3266,6 +3268,7 @@ impl TryFrom<&types::PaymentsPreProcessingRouterData> for StripeCreditTransferSo
| payments::BankTransferData::CimbVaBankTransfer { .. } | payments::BankTransferData::CimbVaBankTransfer { .. }
| payments::BankTransferData::DanamonVaBankTransfer { .. } | payments::BankTransferData::DanamonVaBankTransfer { .. }
| payments::BankTransferData::MandiriVaBankTransfer { .. } | payments::BankTransferData::MandiriVaBankTransfer { .. }
| payments::BankTransferData::LocalBankTransfer { .. }
| payments::BankTransferData::Pix { .. } | payments::BankTransferData::Pix { .. }
| payments::BankTransferData::Pse { .. } => { | payments::BankTransferData::Pse { .. } => {
Err(errors::ConnectorError::NotImplemented( Err(errors::ConnectorError::NotImplemented(
@ -3723,6 +3726,7 @@ impl
| payments::BankTransferData::BriVaBankTransfer { .. } | payments::BankTransferData::BriVaBankTransfer { .. }
| payments::BankTransferData::CimbVaBankTransfer { .. } | payments::BankTransferData::CimbVaBankTransfer { .. }
| payments::BankTransferData::DanamonVaBankTransfer { .. } | payments::BankTransferData::DanamonVaBankTransfer { .. }
| payments::BankTransferData::LocalBankTransfer { .. }
| payments::BankTransferData::MandiriVaBankTransfer { .. } => { | payments::BankTransferData::MandiriVaBankTransfer { .. } => {
Err(errors::ConnectorError::NotImplemented( Err(errors::ConnectorError::NotImplemented(
connector_util::get_unimplemented_payment_method_error_message("stripe"), connector_util::get_unimplemented_payment_method_error_message("stripe"),

View File

@ -358,6 +358,7 @@ impl
| api_models::payments::BankTransferData::BriVaBankTransfer { .. } | api_models::payments::BankTransferData::BriVaBankTransfer { .. }
| api_models::payments::BankTransferData::CimbVaBankTransfer { .. } | api_models::payments::BankTransferData::CimbVaBankTransfer { .. }
| api_models::payments::BankTransferData::DanamonVaBankTransfer { .. } | api_models::payments::BankTransferData::DanamonVaBankTransfer { .. }
| api_models::payments::BankTransferData::LocalBankTransfer { .. }
| api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } => { | api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } => {
Err(errors::ConnectorError::NotImplemented( Err(errors::ConnectorError::NotImplemented(
utils::get_unimplemented_payment_method_error_message("Zen"), utils::get_unimplemented_payment_method_error_message("Zen"),

View File

@ -2204,6 +2204,7 @@ pub fn validate_payment_method_type_against_payment_method(
| api_enums::PaymentMethodType::CimbVa | api_enums::PaymentMethodType::CimbVa
| api_enums::PaymentMethodType::DanamonVa | api_enums::PaymentMethodType::DanamonVa
| api_enums::PaymentMethodType::MandiriVa | api_enums::PaymentMethodType::MandiriVa
| api_enums::PaymentMethodType::LocalBankTransfer
), ),
api_enums::PaymentMethod::BankDebit => matches!( api_enums::PaymentMethod::BankDebit => matches!(
payment_method_type, payment_method_type,

View File

@ -453,6 +453,7 @@ impl ForeignFrom<api_enums::PaymentMethodType> for api_enums::PaymentMethod {
| api_enums::PaymentMethodType::CimbVa | api_enums::PaymentMethodType::CimbVa
| api_enums::PaymentMethodType::DanamonVa | api_enums::PaymentMethodType::DanamonVa
| api_enums::PaymentMethodType::MandiriVa | api_enums::PaymentMethodType::MandiriVa
| api_enums::PaymentMethodType::LocalBankTransfer
| api_enums::PaymentMethodType::Pix => Self::BankTransfer, | api_enums::PaymentMethodType::Pix => Self::BankTransfer,
api_enums::PaymentMethodType::Givex | api_enums::PaymentMethodType::PaySafeCard => { api_enums::PaymentMethodType::Givex | api_enums::PaymentMethodType::PaySafeCard => {
Self::GiftCard Self::GiftCard

View File

@ -6242,6 +6242,23 @@
"type": "object" "type": "object"
} }
} }
},
{
"type": "object",
"required": [
"local_bank_transfer"
],
"properties": {
"local_bank_transfer": {
"type": "object",
"properties": {
"bank_code": {
"type": "string",
"nullable": true
}
}
}
}
} }
] ]
}, },
@ -12870,7 +12887,8 @@
"mini_stop", "mini_stop",
"family_mart", "family_mart",
"seicomart", "seicomart",
"pay_easy" "pay_easy",
"local_bank_transfer"
] ]
}, },
"PaymentMethodUpdate": { "PaymentMethodUpdate": {