From b8bcba4e6cc9ccdd94c8666de40db5f576e47c8a Mon Sep 17 00:00:00 2001 From: Arjun Karthik Date: Thu, 6 Apr 2023 15:31:25 +0530 Subject: [PATCH] refactor(router): refactor amount in PaymentsCaptureData from Option to i64 (#821) Co-authored-by: Arun Raj M --- crates/router/src/connector/adyen/transformers.rs | 5 +---- crates/router/src/connector/airwallex/transformers.rs | 8 ++++---- crates/router/src/connector/bambora/transformers.rs | 2 +- crates/router/src/connector/bluesnap/transformers.rs | 6 ++---- crates/router/src/connector/checkout/transformers.rs | 4 ++-- crates/router/src/connector/cybersource/transformers.rs | 6 +----- crates/router/src/connector/dlocal/transformers.rs | 6 +----- crates/router/src/connector/fiserv/transformers.rs | 6 ++---- crates/router/src/connector/globalpay/transformers.rs | 5 +---- crates/router/src/connector/nuvei/transformers.rs | 4 ++-- crates/router/src/connector/rapyd/transformers.rs | 2 +- crates/router/src/connector/stripe/transformers.rs | 2 +- crates/router/src/core/payments/transformers.rs | 8 ++++++-- crates/router/src/types.rs | 4 ++-- crates/router/tests/connectors/adyen.rs | 2 +- crates/router/tests/connectors/airwallex.rs | 2 +- crates/router/tests/connectors/bambora.rs | 2 +- crates/router/tests/connectors/bluesnap.rs | 2 +- crates/router/tests/connectors/cybersource.rs | 2 +- crates/router/tests/connectors/dlocal.rs | 2 +- crates/router/tests/connectors/fiserv.rs | 2 +- crates/router/tests/connectors/globalpay.rs | 2 +- crates/router/tests/connectors/multisafepay.rs | 2 +- crates/router/tests/connectors/nuvei.rs | 2 +- crates/router/tests/connectors/shift4.rs | 2 +- crates/router/tests/connectors/stripe.rs | 2 +- crates/router/tests/connectors/utils.rs | 4 ++-- 27 files changed, 41 insertions(+), 55 deletions(-) diff --git a/crates/router/src/connector/adyen/transformers.rs b/crates/router/src/connector/adyen/transformers.rs index 81430f6ed0..ff2daf137e 100644 --- a/crates/router/src/connector/adyen/transformers.rs +++ b/crates/router/src/connector/adyen/transformers.rs @@ -995,10 +995,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for AdyenCaptureRequest { reference: item.payment_id.to_string(), amount: Amount { currency: item.request.currency.to_string(), - value: item - .request - .amount_to_capture - .unwrap_or(item.request.amount), + value: item.request.amount_to_capture, }, }) } diff --git a/crates/router/src/connector/airwallex/transformers.rs b/crates/router/src/connector/airwallex/transformers.rs index 0d374f2f84..a126ff7a77 100644 --- a/crates/router/src/connector/airwallex/transformers.rs +++ b/crates/router/src/connector/airwallex/transformers.rs @@ -152,10 +152,10 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for AirwallexPaymentsCaptureRequ fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { Ok(Self { request_id: Uuid::new_v4().to_string(), - amount: match item.request.amount_to_capture { - Some(a) => Some(utils::to_currency_base_unit(a, item.request.currency)?), - _ => None, - }, + amount: Some(utils::to_currency_base_unit( + item.request.amount_to_capture, + item.request.currency, + )?), }) } } diff --git a/crates/router/src/connector/bambora/transformers.rs b/crates/router/src/connector/bambora/transformers.rs index 4362f02071..2617b89aab 100644 --- a/crates/router/src/connector/bambora/transformers.rs +++ b/crates/router/src/connector/bambora/transformers.rs @@ -295,7 +295,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for BamboraPaymentsCaptureReques type Error = error_stack::Report; fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { Ok(Self { - amount: item.request.amount_to_capture, + amount: Some(item.request.amount_to_capture), payment_method: PaymentMethod::Card, }) } diff --git a/crates/router/src/connector/bluesnap/transformers.rs b/crates/router/src/connector/bluesnap/transformers.rs index f614e2b66c..12107835b8 100644 --- a/crates/router/src/connector/bluesnap/transformers.rs +++ b/crates/router/src/connector/bluesnap/transformers.rs @@ -91,10 +91,8 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for BluesnapCaptureRequest { fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { let card_transaction_type = BluesnapTxnType::Capture; let transaction_id = item.request.connector_transaction_id.to_string(); - let amount = utils::to_currency_base_unit_from_optional_amount( - item.request.amount_to_capture, - item.request.currency, - )?; + let amount = + utils::to_currency_base_unit(item.request.amount_to_capture, item.request.currency)?; Ok(Self { card_transaction_type, transaction_id, diff --git a/crates/router/src/connector/checkout/transformers.rs b/crates/router/src/connector/checkout/transformers.rs index 57e3600dce..a2d144bcc0 100644 --- a/crates/router/src/connector/checkout/transformers.rs +++ b/crates/router/src/connector/checkout/transformers.rs @@ -331,7 +331,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for PaymentCaptureRequest { let auth_type: CheckoutAuthType = connector_auth.try_into()?; let processing_channel_id = auth_type.processing_channel_id; Ok(Self { - amount: item.request.amount_to_capture, + amount: Some(item.request.amount_to_capture), capture_type: Some(CaptureType::Final), processing_channel_id, }) @@ -353,7 +353,7 @@ impl TryFrom> let (status, amount_captured) = if item.http_code == 202 { ( enums::AttemptStatus::Charged, - item.data.request.amount_to_capture, + Some(item.data.request.amount_to_capture), ) } else { (enums::AttemptStatus::Pending, None) diff --git a/crates/router/src/connector/cybersource/transformers.rs b/crates/router/src/connector/cybersource/transformers.rs index aab67f024a..ec759c3be2 100644 --- a/crates/router/src/connector/cybersource/transformers.rs +++ b/crates/router/src/connector/cybersource/transformers.rs @@ -174,11 +174,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for CybersourcePaymentsRequest { }, order_information: OrderInformationWithBill { amount_details: Amount { - total_amount: value - .request - .amount_to_capture - .map(|amount| amount.to_string()) - .ok_or_else(utils::missing_field_err("amount_to_capture"))?, + total_amount: value.request.amount_to_capture.to_string(), ..Default::default() }, ..Default::default() diff --git a/crates/router/src/connector/dlocal/transformers.rs b/crates/router/src/connector/dlocal/transformers.rs index d571e6721b..3952b57930 100644 --- a/crates/router/src/connector/dlocal/transformers.rs +++ b/crates/router/src/connector/dlocal/transformers.rs @@ -179,13 +179,9 @@ pub struct DlocalPaymentsCaptureRequest { impl TryFrom<&types::PaymentsCaptureRouterData> for DlocalPaymentsCaptureRequest { type Error = error_stack::Report; fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { - let amount_to_capture = match item.request.amount_to_capture { - Some(val) => val, - None => item.request.amount, - }; Ok(Self { authorization_id: item.request.connector_transaction_id.clone(), - amount: amount_to_capture, + amount: item.request.amount_to_capture, currency: item.request.currency.to_string(), order_id: item.payment_id.clone(), }) diff --git a/crates/router/src/connector/fiserv/transformers.rs b/crates/router/src/connector/fiserv/transformers.rs index f22e9d3a6c..5e5027fe42 100644 --- a/crates/router/src/connector/fiserv/transformers.rs +++ b/crates/router/src/connector/fiserv/transformers.rs @@ -388,10 +388,8 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for FiservCaptureRequest { let session: SessionObject = metadata .parse_value("SessionObject") .change_context(errors::ConnectorError::RequestEncodingFailed)?; - let amount = match item.request.amount_to_capture { - Some(a) => utils::to_currency_base_unit(a, item.request.currency)?, - _ => utils::to_currency_base_unit(item.request.amount, item.request.currency)?, - }; + let amount = + utils::to_currency_base_unit(item.request.amount_to_capture, item.request.currency)?; Ok(Self { amount: Amount { total: amount, diff --git a/crates/router/src/connector/globalpay/transformers.rs b/crates/router/src/connector/globalpay/transformers.rs index b3725781a6..d6842397d4 100644 --- a/crates/router/src/connector/globalpay/transformers.rs +++ b/crates/router/src/connector/globalpay/transformers.rs @@ -121,10 +121,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for requests::GlobalpayCaptureRe type Error = error_stack::Report; fn try_from(value: &types::PaymentsCaptureRouterData) -> Result { Ok(Self { - amount: value - .request - .amount_to_capture - .map(|amount| amount.to_string()), + amount: Some(value.request.amount_to_capture.to_string()), }) } } diff --git a/crates/router/src/connector/nuvei/transformers.rs b/crates/router/src/connector/nuvei/transformers.rs index 322b530df5..41572291a6 100644 --- a/crates/router/src/connector/nuvei/transformers.rs +++ b/crates/router/src/connector/nuvei/transformers.rs @@ -597,7 +597,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for NuveiPaymentFlowRequest { merchant_id: merchant_id.clone(), merchant_site_id: merchant_site_id.clone(), client_request_id: client_request_id.clone(), - amount: item.request.amount.clone().to_string(), + amount: item.request.amount_to_capture.clone().to_string(), currency: item.request.currency.clone().to_string(), related_transaction_id: Some(item.request.connector_transaction_id.clone()), time_stamp: time_stamp.clone(), @@ -605,7 +605,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for NuveiPaymentFlowRequest { merchant_id, merchant_site_id, client_request_id, - item.request.amount.to_string(), + item.request.amount_to_capture.to_string(), item.request.currency.to_string(), item.request.connector_transaction_id.clone(), time_stamp, diff --git a/crates/router/src/connector/rapyd/transformers.rs b/crates/router/src/connector/rapyd/transformers.rs index 7f415153a0..4e9de6121b 100644 --- a/crates/router/src/connector/rapyd/transformers.rs +++ b/crates/router/src/connector/rapyd/transformers.rs @@ -352,7 +352,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for CaptureRequest { type Error = error_stack::Report; fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { Ok(Self { - amount: item.request.amount_to_capture, + amount: Some(item.request.amount_to_capture), receipt_email: None, statement_descriptor: None, }) diff --git a/crates/router/src/connector/stripe/transformers.rs b/crates/router/src/connector/stripe/transformers.rs index 98b03f4ac6..95c99d0ecd 100644 --- a/crates/router/src/connector/stripe/transformers.rs +++ b/crates/router/src/connector/stripe/transformers.rs @@ -1180,7 +1180,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for CaptureRequest { type Error = error_stack::Report; fn try_from(item: &types::PaymentsCaptureRouterData) -> Result { Ok(Self { - amount_to_capture: item.request.amount_to_capture, + amount_to_capture: Some(item.request.amount_to_capture), }) } } diff --git a/crates/router/src/core/payments/transformers.rs b/crates/router/src/core/payments/transformers.rs index 12a89a72e2..5fa7a235ce 100644 --- a/crates/router/src/core/payments/transformers.rs +++ b/crates/router/src/core/payments/transformers.rs @@ -533,14 +533,18 @@ impl TryFrom> for types::PaymentsCaptureData fn try_from(additional_data: PaymentAdditionalData) -> Result { let payment_data = additional_data.payment_data; + let amount_to_capture: i64 = payment_data + .payment_attempt + .amount_to_capture + .map_or(payment_data.amount.into(), |capture_amount| capture_amount); Ok(Self { - amount_to_capture: payment_data.payment_attempt.amount_to_capture, + amount_to_capture, currency: payment_data.currency, connector_transaction_id: payment_data .payment_attempt .connector_transaction_id .ok_or(errors::ApiErrorResponse::MerchantConnectorAccountNotFound)?, - amount: payment_data.amount.into(), + payment_amount: payment_data.amount.into(), connector_meta: payment_data.payment_attempt.connector_metadata, }) } diff --git a/crates/router/src/types.rs b/crates/router/src/types.rs index a59fb0b71d..6c4b26f039 100644 --- a/crates/router/src/types.rs +++ b/crates/router/src/types.rs @@ -150,10 +150,10 @@ pub struct PaymentsAuthorizeData { #[derive(Debug, Clone, Default)] pub struct PaymentsCaptureData { - pub amount_to_capture: Option, + pub amount_to_capture: i64, pub currency: storage_enums::Currency, pub connector_transaction_id: String, - pub amount: i64, + pub payment_amount: i64, pub connector_meta: Option, } diff --git a/crates/router/tests/connectors/adyen.rs b/crates/router/tests/connectors/adyen.rs index 715be025ed..84e860dd44 100644 --- a/crates/router/tests/connectors/adyen.rs +++ b/crates/router/tests/connectors/adyen.rs @@ -147,7 +147,7 @@ async fn should_partially_capture_authorized_payment() { enums::CaptureMethod::Manual, ), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), AdyenTest::get_payment_info(), diff --git a/crates/router/tests/connectors/airwallex.rs b/crates/router/tests/connectors/airwallex.rs index f004da40b5..eead636831 100644 --- a/crates/router/tests/connectors/airwallex.rs +++ b/crates/router/tests/connectors/airwallex.rs @@ -98,7 +98,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( payment_method_details(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), get_default_payment_info(), diff --git a/crates/router/tests/connectors/bambora.rs b/crates/router/tests/connectors/bambora.rs index 22fffe4dcb..52ada29739 100644 --- a/crates/router/tests/connectors/bambora.rs +++ b/crates/router/tests/connectors/bambora.rs @@ -75,7 +75,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( get_default_payment_authorize_data(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/bluesnap.rs b/crates/router/tests/connectors/bluesnap.rs index 4c1fa64f99..4c3e4e848f 100644 --- a/crates/router/tests/connectors/bluesnap.rs +++ b/crates/router/tests/connectors/bluesnap.rs @@ -67,7 +67,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( None, Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/cybersource.rs b/crates/router/tests/connectors/cybersource.rs index 8a63e9f624..e8ac8ec5f5 100644 --- a/crates/router/tests/connectors/cybersource.rs +++ b/crates/router/tests/connectors/cybersource.rs @@ -103,7 +103,7 @@ async fn should_partially_capture_already_authorized_payment() { .authorize_and_capture_payment( get_default_payment_authorize_data(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), get_default_payment_info(), diff --git a/crates/router/tests/connectors/dlocal.rs b/crates/router/tests/connectors/dlocal.rs index 5555fe11b3..69211cde2a 100644 --- a/crates/router/tests/connectors/dlocal.rs +++ b/crates/router/tests/connectors/dlocal.rs @@ -63,7 +63,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( None, Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), Some(get_payment_info()), diff --git a/crates/router/tests/connectors/fiserv.rs b/crates/router/tests/connectors/fiserv.rs index 8b1c397c41..68a5fe191d 100644 --- a/crates/router/tests/connectors/fiserv.rs +++ b/crates/router/tests/connectors/fiserv.rs @@ -92,7 +92,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( payment_method_details(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), get_default_payment_info(), diff --git a/crates/router/tests/connectors/globalpay.rs b/crates/router/tests/connectors/globalpay.rs index a1f707848c..185a6faea0 100644 --- a/crates/router/tests/connectors/globalpay.rs +++ b/crates/router/tests/connectors/globalpay.rs @@ -81,7 +81,7 @@ async fn should_capture_already_authorized_payment() { .authorize_and_capture_payment( None, Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), get_default_payment_info(), diff --git a/crates/router/tests/connectors/multisafepay.rs b/crates/router/tests/connectors/multisafepay.rs index 5e7c165c8a..b884b6bb09 100644 --- a/crates/router/tests/connectors/multisafepay.rs +++ b/crates/router/tests/connectors/multisafepay.rs @@ -62,7 +62,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( None, Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/nuvei.rs b/crates/router/tests/connectors/nuvei.rs index 04ab6eeba5..e1d56f89e7 100644 --- a/crates/router/tests/connectors/nuvei.rs +++ b/crates/router/tests/connectors/nuvei.rs @@ -76,7 +76,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( get_payment_data(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/shift4.rs b/crates/router/tests/connectors/shift4.rs index 73d2f4dffd..a67fd0df8a 100644 --- a/crates/router/tests/connectors/shift4.rs +++ b/crates/router/tests/connectors/shift4.rs @@ -67,7 +67,7 @@ async fn should_partially_capture_authorized_payment() { .authorize_and_capture_payment( None, Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/stripe.rs b/crates/router/tests/connectors/stripe.rs index c317684c0d..8d2cfc96a1 100644 --- a/crates/router/tests/connectors/stripe.rs +++ b/crates/router/tests/connectors/stripe.rs @@ -75,7 +75,7 @@ async fn should_partially_capture_already_authorized_payment() { .authorize_and_capture_payment( get_payment_authorize_data(), Some(types::PaymentsCaptureData { - amount_to_capture: Some(50), + amount_to_capture: 50, ..utils::PaymentCaptureType::default().0 }), None, diff --git a/crates/router/tests/connectors/utils.rs b/crates/router/tests/connectors/utils.rs index 6dc04ab29f..78688bf1a7 100644 --- a/crates/router/tests/connectors/utils.rs +++ b/crates/router/tests/connectors/utils.rs @@ -500,10 +500,10 @@ impl Default for PaymentAuthorizeType { impl Default for PaymentCaptureType { fn default() -> Self { Self(types::PaymentsCaptureData { - amount_to_capture: Some(100), + amount_to_capture: 100, currency: enums::Currency::USD, connector_transaction_id: "".to_string(), - amount: 100, + payment_amount: 100, ..Default::default() }) }