Skip to content

Commit

Permalink
refactor: capture_method_validation on pmt
Browse files Browse the repository at this point in the history
  • Loading branch information
swangi-kumari committed Feb 7, 2024
1 parent a15e7ae commit bb87261
Show file tree
Hide file tree
Showing 42 changed files with 225 additions and 89 deletions.
145 changes: 135 additions & 10 deletions crates/router/src/connector/adyen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ pub mod transformers;

use std::fmt::Debug;

use api_models::webhooks::IncomingWebhookEvent;
use api_models::{enums::PaymentMethodType, webhooks::IncomingWebhookEvent};
use base64::Engine;
use common_utils::request::RequestContent;
use diesel_models::{enums as storage_enums, enums};
Expand Down Expand Up @@ -80,16 +80,141 @@ impl ConnectorCommon for Adyen {
impl ConnectorValidation for Adyen {
fn validate_capture_method(
&self,
capture_method: Option<storage_enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic
| enums::CaptureMethod::Manual
| enums::CaptureMethod::ManualMultiple => Ok(()),
enums::CaptureMethod::Scheduled => Err(
connector_utils::construct_not_implemented_error_report(capture_method, self.id()),
),
let capture_method = data.request.capture_method.unwrap_or_default();
let pmt = data.request.payment_method_type;
match pmt {
Some(payment_method_type) => match payment_method_type {
PaymentMethodType::Affirm
| PaymentMethodType::AfterpayClearpay
| PaymentMethodType::ApplePay
| PaymentMethodType::Credit
| PaymentMethodType::Debit
| PaymentMethodType::GooglePay
| PaymentMethodType::MobilePay
| PaymentMethodType::PayBright
| PaymentMethodType::Sepa
| PaymentMethodType::Vipps
| PaymentMethodType::Paypal => match capture_method {
enums::CaptureMethod::Automatic
| enums::CaptureMethod::Manual
| enums::CaptureMethod::ManualMultiple => Ok(()),
enums::CaptureMethod::Scheduled => Err(
connector_utils::construct_not_supported_error_for_pmt_report(
format!("{} for {}", capture_method, payment_method_type,),
self.id(),
),
),
},
PaymentMethodType::Ach
| PaymentMethodType::Alma
| PaymentMethodType::Bacs
| PaymentMethodType::Givex
| PaymentMethodType::Klarna
| PaymentMethodType::Twint
| PaymentMethodType::Walley => match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
connector_utils::construct_not_supported_error_for_pmt_report(
format!("{} for {}", capture_method, payment_method_type,),
self.id(),
),
),
},

PaymentMethodType::AliPay
| PaymentMethodType::AliPayHk
| PaymentMethodType::Atome
| PaymentMethodType::BancontactCard
| PaymentMethodType::Benefit
| PaymentMethodType::Bizum
| PaymentMethodType::Blik
| PaymentMethodType::Boleto
| PaymentMethodType::Dana
| PaymentMethodType::Eps
| PaymentMethodType::OnlineBankingFpx
| PaymentMethodType::Gcash
| PaymentMethodType::GoPay
| PaymentMethodType::Ideal
| PaymentMethodType::KakaoPay
| PaymentMethodType::Knet
| PaymentMethodType::MbWay
| PaymentMethodType::Momo
| PaymentMethodType::MomoAtm
| PaymentMethodType::OnlineBankingFinland
| PaymentMethodType::OnlineBankingPoland
| PaymentMethodType::OnlineBankingSlovakia
| PaymentMethodType::OnlineBankingThailand
| PaymentMethodType::Oxxo
| PaymentMethodType::PaySafeCard
| PaymentMethodType::Pix
| PaymentMethodType::Swish
| PaymentMethodType::TouchNGo
| PaymentMethodType::Trustly
| PaymentMethodType::WeChatPay
| PaymentMethodType::DanamonVa
| PaymentMethodType::BcaBankTransfer
| PaymentMethodType::BriVa
| PaymentMethodType::BniVa
| PaymentMethodType::CimbVa
| PaymentMethodType::MandiriVa
| PaymentMethodType::Alfamart
| PaymentMethodType::Indomaret
| PaymentMethodType::FamilyMart
| PaymentMethodType::Sofort
| PaymentMethodType::Giropay
| PaymentMethodType::Seicomart
| PaymentMethodType::PayEasy
| PaymentMethodType::MiniStop
| PaymentMethodType::Lawson
| PaymentMethodType::SevenEleven
| PaymentMethodType::OpenBankingUk
| PaymentMethodType::OnlineBankingCzechRepublic
| PaymentMethodType::PermataBankTransfer => match capture_method {
enums::CaptureMethod::Automatic => Ok(()),
enums::CaptureMethod::Manual
| enums::CaptureMethod::ManualMultiple
| enums::CaptureMethod::Scheduled => Err(
connector_utils::construct_not_supported_error_for_pmt_report(
format!("{} for {}", capture_method, payment_method_type,),
self.id(),
),
),
},
PaymentMethodType::CardRedirect
| PaymentMethodType::Interac
| PaymentMethodType::Multibanco
| PaymentMethodType::Przelewy24
| PaymentMethodType::Becs
| PaymentMethodType::ClassicReward
| PaymentMethodType::Pse
| PaymentMethodType::Efecty
| PaymentMethodType::PagoEfectivo
| PaymentMethodType::RedCompra
| PaymentMethodType::RedPagos
| PaymentMethodType::CryptoCurrency
| PaymentMethodType::SamsungPay
| PaymentMethodType::Evoucher
| PaymentMethodType::Cashapp
| PaymentMethodType::UpiCollect => {
Err(connector_utils::construct_not_implemented_error_report(
capture_method,
self.id(),
))
}
},
None => match capture_method {
enums::CaptureMethod::Automatic
| enums::CaptureMethod::Manual
| enums::CaptureMethod::ManualMultiple => Ok(()),
enums::CaptureMethod::Scheduled => {
Err(connector_utils::construct_not_implemented_error_report(
capture_method,
self.id(),
))
}
},
}
}
fn validate_psync_reference_id(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/airwallex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ impl ConnectorCommon for Airwallex {
impl ConnectorValidation for Airwallex {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/authorizedotnet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ impl ConnectorCommon for Authorizedotnet {
impl ConnectorValidation for Authorizedotnet {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/bambora.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@ impl ConnectorCommon for Bambora {
impl ConnectorValidation for Bambora {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/bankofamerica.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,9 +258,9 @@ impl ConnectorCommon for Bankofamerica {
impl ConnectorValidation for Bankofamerica {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/bluesnap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,9 @@ impl ConnectorCommon for Bluesnap {
impl ConnectorValidation for Bluesnap {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/boku.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ impl ConnectorCommon for Boku {
impl ConnectorValidation for Boku {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/braintree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,9 @@ impl ConnectorCommon for Braintree {
impl ConnectorValidation for Braintree {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/cashtocode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ impl ConnectorCommon for Cashtocode {
impl ConnectorValidation for Cashtocode {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/checkout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,9 @@ impl ConnectorCommon for Checkout {
impl ConnectorValidation for Checkout {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic
| enums::CaptureMethod::Manual
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/coinbase.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,9 @@ impl ConnectorCommon for Coinbase {
impl ConnectorValidation for Coinbase {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/cybersource.rs
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,9 @@ impl ConnectorCommon for Cybersource {
impl ConnectorValidation for Cybersource {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/dlocal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ impl ConnectorCommon for Dlocal {
impl ConnectorValidation for Dlocal {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/dummyconnector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ impl<const T: u8> ConnectorCommon for DummyConnector<T> {
impl<const T: u8> ConnectorValidation for DummyConnector<T> {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/fiserv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,9 @@ impl ConnectorCommon for Fiserv {
impl ConnectorValidation for Fiserv {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/forte.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ impl ConnectorCommon for Forte {
impl ConnectorValidation for Forte {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/globalpay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ impl ConnectorCommon for Globalpay {
impl ConnectorValidation for Globalpay {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic
| enums::CaptureMethod::Manual
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/gocardless.rs
Original file line number Diff line number Diff line change
Expand Up @@ -312,9 +312,9 @@ impl
impl ConnectorValidation for Gocardless {
fn validate_capture_method(
&self,
capture_method: Option<api_models::enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic => Ok(()),
enums::CaptureMethod::Manual
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/helcim.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ impl ConnectorCommon for Helcim {
impl ConnectorValidation for Helcim {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual => Ok(()),
enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err(
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/connector/multisafepay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ impl ConnectorCommon for Multisafepay {
impl ConnectorValidation for Multisafepay {
fn validate_capture_method(
&self,
capture_method: Option<enums::CaptureMethod>,
data: &types::PaymentsAuthorizeRouterData,
) -> CustomResult<(), errors::ConnectorError> {
let capture_method = capture_method.unwrap_or_default();
let capture_method = data.request.capture_method.unwrap_or_default();
match capture_method {
enums::CaptureMethod::Automatic => Ok(()),
enums::CaptureMethod::Manual
Expand Down
Loading

0 comments on commit bb87261

Please sign in to comment.