diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index bff6dbec3c..6805363b26 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -1465,6 +1465,7 @@ impl GetPaymentMethodType for BankTransferData { Self::MandiriVaBankTransfer { .. } => api_enums::PaymentMethodType::MandiriVa, Self::Pix {} => api_enums::PaymentMethodType::Pix, Self::Pse {} => api_enums::PaymentMethodType::Pse, + Self::LocalBankTransfer { .. } => api_enums::PaymentMethodType::LocalBankTransfer, } } } @@ -2029,6 +2030,9 @@ pub enum BankTransferData { }, Pix {}, Pse {}, + LocalBankTransfer { + bank_code: Option, + }, } impl GetAddressFromPaymentMethodData for BankTransferData { @@ -2079,7 +2083,7 @@ impl GetAddressFromPaymentMethodData for BankTransferData { phone: None, email: Some(billing_details.email.clone()), }), - Self::Pix {} | Self::Pse {} => None, + Self::LocalBankTransfer { .. } | Self::Pix {} | Self::Pse {} => None, } } } diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs index 932b82ae09..1134d072c2 100644 --- a/crates/common_enums/src/enums.rs +++ b/crates/common_enums/src/enums.rs @@ -1423,6 +1423,7 @@ pub enum PaymentMethodType { FamilyMart, Seicomart, PayEasy, + LocalBankTransfer, } /// Indicates the type of payment method. Eg: 'card', 'wallet', etc. diff --git a/crates/common_enums/src/transformers.rs b/crates/common_enums/src/transformers.rs index 63abfdb3f7..922d2a71c1 100644 --- a/crates/common_enums/src/transformers.rs +++ b/crates/common_enums/src/transformers.rs @@ -1842,6 +1842,7 @@ impl From for PaymentMethod { PaymentMethodType::PermataBankTransfer => Self::BankTransfer, PaymentMethodType::Pix => Self::BankTransfer, PaymentMethodType::Pse => Self::BankTransfer, + PaymentMethodType::LocalBankTransfer => Self::BankTransfer, PaymentMethodType::PayBright => Self::PayLater, PaymentMethodType::Paypal => Self::Wallet, PaymentMethodType::PaySafeCard => Self::GiftCard, diff --git a/crates/euclid/src/frontend/dir/enums.rs b/crates/euclid/src/frontend/dir/enums.rs index ee64c4ca33..22ab023586 100644 --- a/crates/euclid/src/frontend/dir/enums.rs +++ b/crates/euclid/src/frontend/dir/enums.rs @@ -186,6 +186,7 @@ pub enum BankTransferType { PermataBankTransfer, Pix, Pse, + LocalBankTransfer, } #[derive( diff --git a/crates/euclid/src/frontend/dir/lowering.rs b/crates/euclid/src/frontend/dir/lowering.rs index b1f03e8dd5..f89877ca21 100644 --- a/crates/euclid/src/frontend/dir/lowering.rs +++ b/crates/euclid/src/frontend/dir/lowering.rs @@ -115,6 +115,7 @@ impl From for global_enums::PaymentMethodType { enums::BankTransferType::DanamonVa => Self::DanamonVa, enums::BankTransferType::MandiriVa => Self::MandiriVa, enums::BankTransferType::PermataBankTransfer => Self::PermataBankTransfer, + enums::BankTransferType::LocalBankTransfer => Self::LocalBankTransfer, } } } diff --git a/crates/euclid/src/frontend/dir/transformers.rs b/crates/euclid/src/frontend/dir/transformers.rs index c99b39e36f..929b878f2c 100644 --- a/crates/euclid/src/frontend/dir/transformers.rs +++ b/crates/euclid/src/frontend/dir/transformers.rs @@ -143,6 +143,9 @@ impl IntoDirValue for (global_enums::PaymentMethodType, global_enums::PaymentMet global_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)), global_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)), global_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)), + global_enums::PaymentMethodType::LocalBankTransfer => { + Ok(dirval!(BankTransferType = LocalBankTransfer)) + } global_enums::PaymentMethodType::PermataBankTransfer => { Ok(dirval!(BankTransferType = PermataBankTransfer)) } diff --git a/crates/kgraph_utils/src/transformers.rs b/crates/kgraph_utils/src/transformers.rs index 5bcb64fd87..000a16a263 100644 --- a/crates/kgraph_utils/src/transformers.rs +++ b/crates/kgraph_utils/src/transformers.rs @@ -262,6 +262,9 @@ impl IntoDirValue for (api_enums::PaymentMethodType, api_enums::PaymentMethod) { api_enums::PaymentMethodType::DanamonVa => Ok(dirval!(BankTransferType = DanamonVa)), api_enums::PaymentMethodType::Indomaret => Ok(dirval!(VoucherType = Indomaret)), api_enums::PaymentMethodType::MandiriVa => Ok(dirval!(BankTransferType = MandiriVa)), + api_enums::PaymentMethodType::LocalBankTransfer => { + Ok(dirval!(BankTransferType = LocalBankTransfer)) + } api_enums::PaymentMethodType::PermataBankTransfer => { Ok(dirval!(BankTransferType = PermataBankTransfer)) } diff --git a/crates/router/build.rs b/crates/router/build.rs index b33c168833..99d6de0fda 100644 --- a/crates/router/build.rs +++ b/crates/router/build.rs @@ -2,7 +2,7 @@ fn main() { // Set thread stack size to 8 MiB for debug builds // Reference: https://doc.rust-lang.org/std/thread/#stack-size #[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")] router_env::vergen::generate_cargo_instructions(); diff --git a/crates/router/src/connector/adyen.rs b/crates/router/src/connector/adyen.rs index 44e889ed9d..481eba0df7 100644 --- a/crates/router/src/connector/adyen.rs +++ b/crates/router/src/connector/adyen.rs @@ -202,6 +202,7 @@ impl ConnectorValidation for Adyen { | PaymentMethodType::Becs | PaymentMethodType::ClassicReward | PaymentMethodType::Pse + | PaymentMethodType::LocalBankTransfer | PaymentMethodType::Efecty | PaymentMethodType::PagoEfectivo | PaymentMethodType::RedCompra diff --git a/crates/router/src/connector/adyen/transformers.rs b/crates/router/src/connector/adyen/transformers.rs index cc37f464ae..e47b570a06 100644 --- a/crates/router/src/connector/adyen/transformers.rs +++ b/crates/router/src/connector/adyen/transformers.rs @@ -2484,6 +2484,7 @@ impl<'a> TryFrom<&api_models::payments::BankTransferData> for AdyenPaymentMethod | 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( utils::get_unimplemented_payment_method_error_message("Adyen"), ) diff --git a/crates/router/src/connector/klarna.rs b/crates/router/src/connector/klarna.rs index 190e170541..814bd68da6 100644 --- a/crates/router/src/connector/klarna.rs +++ b/crates/router/src/connector/klarna.rs @@ -403,6 +403,7 @@ impl | common_enums::PaymentMethodType::WeChatPay | common_enums::PaymentMethodType::SevenEleven | common_enums::PaymentMethodType::Lawson + | common_enums::PaymentMethodType::LocalBankTransfer | common_enums::PaymentMethodType::MiniStop | common_enums::PaymentMethodType::FamilyMart | common_enums::PaymentMethodType::Seicomart diff --git a/crates/router/src/connector/paypal/transformers.rs b/crates/router/src/connector/paypal/transformers.rs index 64ff7db2a8..6a3d396c83 100644 --- a/crates/router/src/connector/paypal/transformers.rs +++ b/crates/router/src/connector/paypal/transformers.rs @@ -690,7 +690,8 @@ impl TryFrom<&api_models::payments::BankTransferData> for PaypalPaymentsRequest | api_models::payments::BankTransferData::DanamonVaBankTransfer { .. } | api_models::payments::BankTransferData::MandiriVaBankTransfer { .. } | api_models::payments::BankTransferData::Pix {} - | api_models::payments::BankTransferData::Pse {} => { + | api_models::payments::BankTransferData::Pse {} + | api_models::payments::BankTransferData::LocalBankTransfer { .. } => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Paypal"), ) diff --git a/crates/router/src/connector/shift4/transformers.rs b/crates/router/src/connector/shift4/transformers.rs index bb46a207df..1137fa58e8 100644 --- a/crates/router/src/connector/shift4/transformers.rs +++ b/crates/router/src/connector/shift4/transformers.rs @@ -232,10 +232,13 @@ impl TryFrom<&api_models::payments::BankTransferData> for Shift4PaymentMethod { | payments::BankTransferData::DanamonVaBankTransfer { .. } | payments::BankTransferData::MandiriVaBankTransfer { .. } | payments::BankTransferData::Pix {} - | payments::BankTransferData::Pse {} => Err(errors::ConnectorError::NotImplemented( - utils::get_unimplemented_payment_method_error_message("Shift4"), - ) - .into()), + | payments::BankTransferData::Pse {} + | payments::BankTransferData::LocalBankTransfer { .. } => { + Err(errors::ConnectorError::NotImplemented( + utils::get_unimplemented_payment_method_error_message("Shift4"), + ) + .into()) + } } } } diff --git a/crates/router/src/connector/stripe/transformers.rs b/crates/router/src/connector/stripe/transformers.rs index a73e1045cf..7c5ef36127 100644 --- a/crates/router/src/connector/stripe/transformers.rs +++ b/crates/router/src/connector/stripe/transformers.rs @@ -705,6 +705,7 @@ impl TryFrom for StripePaymentMethodType { | enums::PaymentMethodType::FamilyMart | enums::PaymentMethodType::Seicomart | enums::PaymentMethodType::PayEasy + | enums::PaymentMethodType::LocalBankTransfer | enums::PaymentMethodType::Walley => Err(errors::ConnectorError::NotImplemented( connector_util::get_unimplemented_payment_method_error_message("stripe"), ) @@ -1413,6 +1414,7 @@ fn create_stripe_payment_method( ) .into()), payments::BankTransferData::Pse {} + | payments::BankTransferData::LocalBankTransfer { .. } | payments::BankTransferData::PermataBankTransfer { .. } | payments::BankTransferData::BcaBankTransfer { .. } | payments::BankTransferData::BniVaBankTransfer { .. } @@ -3266,6 +3268,7 @@ impl TryFrom<&types::PaymentsPreProcessingRouterData> for StripeCreditTransferSo | payments::BankTransferData::CimbVaBankTransfer { .. } | payments::BankTransferData::DanamonVaBankTransfer { .. } | payments::BankTransferData::MandiriVaBankTransfer { .. } + | payments::BankTransferData::LocalBankTransfer { .. } | payments::BankTransferData::Pix { .. } | payments::BankTransferData::Pse { .. } => { Err(errors::ConnectorError::NotImplemented( @@ -3723,6 +3726,7 @@ impl | payments::BankTransferData::BriVaBankTransfer { .. } | payments::BankTransferData::CimbVaBankTransfer { .. } | payments::BankTransferData::DanamonVaBankTransfer { .. } + | payments::BankTransferData::LocalBankTransfer { .. } | payments::BankTransferData::MandiriVaBankTransfer { .. } => { Err(errors::ConnectorError::NotImplemented( connector_util::get_unimplemented_payment_method_error_message("stripe"), diff --git a/crates/router/src/connector/zen/transformers.rs b/crates/router/src/connector/zen/transformers.rs index eb65852845..4f11af6a33 100644 --- a/crates/router/src/connector/zen/transformers.rs +++ b/crates/router/src/connector/zen/transformers.rs @@ -358,6 +358,7 @@ impl | 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 { .. } => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Zen"), diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs index 51b9504189..9ec570b441 100644 --- a/crates/router/src/core/payments/helpers.rs +++ b/crates/router/src/core/payments/helpers.rs @@ -2204,6 +2204,7 @@ pub fn validate_payment_method_type_against_payment_method( | api_enums::PaymentMethodType::CimbVa | api_enums::PaymentMethodType::DanamonVa | api_enums::PaymentMethodType::MandiriVa + | api_enums::PaymentMethodType::LocalBankTransfer ), api_enums::PaymentMethod::BankDebit => matches!( payment_method_type, diff --git a/crates/router/src/types/transformers.rs b/crates/router/src/types/transformers.rs index 3362aad6fc..c5250b0cc7 100644 --- a/crates/router/src/types/transformers.rs +++ b/crates/router/src/types/transformers.rs @@ -453,6 +453,7 @@ impl ForeignFrom for api_enums::PaymentMethod { | api_enums::PaymentMethodType::CimbVa | api_enums::PaymentMethodType::DanamonVa | api_enums::PaymentMethodType::MandiriVa + | api_enums::PaymentMethodType::LocalBankTransfer | api_enums::PaymentMethodType::Pix => Self::BankTransfer, api_enums::PaymentMethodType::Givex | api_enums::PaymentMethodType::PaySafeCard => { Self::GiftCard diff --git a/openapi/openapi_spec.json b/openapi/openapi_spec.json index aacc138641..1af82da7f5 100644 --- a/openapi/openapi_spec.json +++ b/openapi/openapi_spec.json @@ -6242,6 +6242,23 @@ "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", "family_mart", "seicomart", - "pay_easy" + "pay_easy", + "local_bank_transfer" ] }, "PaymentMethodUpdate": {