Skip to content

Commit

Permalink
feat(router): add local bank transfer payment method (#4294)
Browse files Browse the repository at this point in the history
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
  • Loading branch information
AkshayaFoiger and hyperswitch-bot[bot] authored Apr 8, 2024
1 parent e0e8437 commit 06440eb
Show file tree
Hide file tree
Showing 18 changed files with 54 additions and 8 deletions.
6 changes: 5 additions & 1 deletion crates/api_models/src/payments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
}
}
Expand Down Expand Up @@ -2029,6 +2030,9 @@ pub enum BankTransferData {
},
Pix {},
Pse {},
LocalBankTransfer {
bank_code: Option<String>,
},
}

impl GetAddressFromPaymentMethodData for BankTransferData {
Expand Down Expand Up @@ -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,
}
}
}
Expand Down
1 change: 1 addition & 0 deletions crates/common_enums/src/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1423,6 +1423,7 @@ pub enum PaymentMethodType {
FamilyMart,
Seicomart,
PayEasy,
LocalBankTransfer,
}

/// Indicates the type of payment method. Eg: 'card', 'wallet', etc.
Expand Down
1 change: 1 addition & 0 deletions crates/common_enums/src/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1842,6 +1842,7 @@ impl From<PaymentMethodType> 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,
Expand Down
1 change: 1 addition & 0 deletions crates/euclid/src/frontend/dir/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ pub enum BankTransferType {
PermataBankTransfer,
Pix,
Pse,
LocalBankTransfer,
}

#[derive(
Expand Down
1 change: 1 addition & 0 deletions crates/euclid/src/frontend/dir/lowering.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ impl From<enums::BankTransferType> for global_enums::PaymentMethodType {
enums::BankTransferType::DanamonVa => Self::DanamonVa,
enums::BankTransferType::MandiriVa => Self::MandiriVa,
enums::BankTransferType::PermataBankTransfer => Self::PermataBankTransfer,
enums::BankTransferType::LocalBankTransfer => Self::LocalBankTransfer,
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions crates/euclid/src/frontend/dir/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}
Expand Down
3 changes: 3 additions & 0 deletions crates/kgraph_utils/src/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}
Expand Down
2 changes: 1 addition & 1 deletion crates/router/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/connector/adyen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ impl ConnectorValidation for Adyen {
| PaymentMethodType::Becs
| PaymentMethodType::ClassicReward
| PaymentMethodType::Pse
| PaymentMethodType::LocalBankTransfer
| PaymentMethodType::Efecty
| PaymentMethodType::PagoEfectivo
| PaymentMethodType::RedCompra
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/connector/adyen/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
)
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/connector/klarna.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion crates/router/src/connector/paypal/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
)
Expand Down
11 changes: 7 additions & 4 deletions crates/router/src/connector/shift4/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions crates/router/src/connector/stripe/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -705,6 +705,7 @@ impl TryFrom<enums::PaymentMethodType> 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"),
)
Expand Down Expand Up @@ -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 { .. }
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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"),
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/connector/zen/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/core/payments/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions crates/router/src/types/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ impl ForeignFrom<api_enums::PaymentMethodType> 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
Expand Down
20 changes: 19 additions & 1 deletion openapi/openapi_spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
}
}
}
]
},
Expand Down Expand Up @@ -12870,7 +12887,8 @@
"mini_stop",
"family_mart",
"seicomart",
"pay_easy"
"pay_easy",
"local_bank_transfer"
]
},
"PaymentMethodUpdate": {
Expand Down

0 comments on commit 06440eb

Please sign in to comment.