From f7da59d06af11707e210b58a875c013d31c3ee17 Mon Sep 17 00:00:00 2001 From: Sai Harsha Vardhan <56996463+sai-harsha-vardhan@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:07:25 +0530 Subject: [PATCH] fix(router): make `request_incremental_authorization` optional in payment_intent (#3086) --- crates/data_models/src/payments.rs | 2 +- crates/data_models/src/payments/payment_intent.rs | 2 +- crates/diesel_models/src/payment_intent.rs | 4 ++-- crates/diesel_models/src/schema.rs | 2 +- crates/router/src/core/payments/helpers.rs | 9 ++++++--- crates/router/src/core/payments/transformers.rs | 6 ++++-- crates/router/src/core/utils.rs | 12 +++++++----- .../down.sql | 2 ++ .../up.sql | 2 ++ 9 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/down.sql create mode 100644 migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/up.sql diff --git a/crates/data_models/src/payments.rs b/crates/data_models/src/payments.rs index 7a4787fcf0..b3e2c2e520 100644 --- a/crates/data_models/src/payments.rs +++ b/crates/data_models/src/payments.rs @@ -50,7 +50,7 @@ pub struct PaymentIntent { pub updated_by: String, pub surcharge_applicable: Option, - pub request_incremental_authorization: storage_enums::RequestIncrementalAuthorization, + pub request_incremental_authorization: Option, pub incremental_authorization_allowed: Option, pub authorization_count: Option, } diff --git a/crates/data_models/src/payments/payment_intent.rs b/crates/data_models/src/payments/payment_intent.rs index d7edcfdf17..5389cfdd78 100644 --- a/crates/data_models/src/payments/payment_intent.rs +++ b/crates/data_models/src/payments/payment_intent.rs @@ -107,7 +107,7 @@ pub struct PaymentIntentNew { pub updated_by: String, pub surcharge_applicable: Option, - pub request_incremental_authorization: storage_enums::RequestIncrementalAuthorization, + pub request_incremental_authorization: Option, pub incremental_authorization_allowed: Option, pub authorization_count: Option, } diff --git a/crates/diesel_models/src/payment_intent.rs b/crates/diesel_models/src/payment_intent.rs index 1bd5c73a96..89d99de2d8 100644 --- a/crates/diesel_models/src/payment_intent.rs +++ b/crates/diesel_models/src/payment_intent.rs @@ -52,7 +52,7 @@ pub struct PaymentIntent { pub updated_by: String, pub surcharge_applicable: Option, - pub request_incremental_authorization: RequestIncrementalAuthorization, + pub request_incremental_authorization: Option, pub incremental_authorization_allowed: Option, pub authorization_count: Option, } @@ -109,7 +109,7 @@ pub struct PaymentIntentNew { pub payment_confirm_source: Option, pub updated_by: String, pub surcharge_applicable: Option, - pub request_incremental_authorization: RequestIncrementalAuthorization, + pub request_incremental_authorization: Option, pub incremental_authorization_allowed: Option, pub authorization_count: Option, } diff --git a/crates/diesel_models/src/schema.rs b/crates/diesel_models/src/schema.rs index 9baf613d92..0d4ab83d82 100644 --- a/crates/diesel_models/src/schema.rs +++ b/crates/diesel_models/src/schema.rs @@ -703,7 +703,7 @@ diesel::table! { #[max_length = 32] updated_by -> Varchar, surcharge_applicable -> Nullable, - request_incremental_authorization -> RequestIncrementalAuthorization, + request_incremental_authorization -> Nullable, incremental_authorization_allowed -> Nullable, authorization_count -> Nullable, } diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs index 866a0581e4..e05c60dcf3 100644 --- a/crates/router/src/core/payments/helpers.rs +++ b/crates/router/src/core/payments/helpers.rs @@ -2661,8 +2661,9 @@ mod tests { payment_confirm_source: None, surcharge_applicable: None, updated_by: storage_enums::MerchantStorageScheme::PostgresOnly.to_string(), - request_incremental_authorization: + request_incremental_authorization: Some( common_enums::RequestIncrementalAuthorization::default(), + ), incremental_authorization_allowed: None, authorization_count: None, }; @@ -2715,8 +2716,9 @@ mod tests { payment_confirm_source: None, surcharge_applicable: None, updated_by: storage_enums::MerchantStorageScheme::PostgresOnly.to_string(), - request_incremental_authorization: + request_incremental_authorization: Some( common_enums::RequestIncrementalAuthorization::default(), + ), incremental_authorization_allowed: None, authorization_count: None, }; @@ -2769,8 +2771,9 @@ mod tests { payment_confirm_source: None, surcharge_applicable: None, updated_by: storage_enums::MerchantStorageScheme::PostgresOnly.to_string(), - request_incremental_authorization: + request_incremental_authorization: Some( common_enums::RequestIncrementalAuthorization::default(), + ), incremental_authorization_allowed: None, authorization_count: None, }; diff --git a/crates/router/src/core/payments/transformers.rs b/crates/router/src/core/payments/transformers.rs index bd6d03e562..5c280ed72d 100644 --- a/crates/router/src/core/payments/transformers.rs +++ b/crates/router/src/core/payments/transformers.rs @@ -1062,7 +1062,8 @@ impl TryFrom> for types::PaymentsAuthoriz payment_data .payment_intent .request_incremental_authorization, - RequestIncrementalAuthorization::True | RequestIncrementalAuthorization::Default + Some(RequestIncrementalAuthorization::True) + | Some(RequestIncrementalAuthorization::Default) ), }) } @@ -1350,7 +1351,8 @@ impl TryFrom> for types::SetupMandateRequ payment_data .payment_intent .request_incremental_authorization, - RequestIncrementalAuthorization::True | RequestIncrementalAuthorization::Default + Some(RequestIncrementalAuthorization::True) + | Some(RequestIncrementalAuthorization::Default) ), }) } diff --git a/crates/router/src/core/utils.rs b/crates/router/src/core/utils.rs index 724a698ff7..50d9be8279 100644 --- a/crates/router/src/core/utils.rs +++ b/crates/router/src/core/utils.rs @@ -1066,8 +1066,8 @@ pub fn get_flow_name() -> RouterResult { pub fn get_request_incremental_authorization_value( request_incremental_authorization: Option, capture_method: Option, -) -> RouterResult { - request_incremental_authorization +) -> RouterResult> { + Some(request_incremental_authorization .map(|request_incremental_authorization| { if request_incremental_authorization { if capture_method == Some(common_enums::CaptureMethod::Automatic) { @@ -1078,14 +1078,16 @@ pub fn get_request_incremental_authorization_value( Ok(RequestIncrementalAuthorization::False) } }) - .unwrap_or(Ok(RequestIncrementalAuthorization::default())) + .unwrap_or(Ok(RequestIncrementalAuthorization::default()))).transpose() } pub fn get_incremental_authorization_allowed_value( incremental_authorization_allowed: Option, - request_incremental_authorization: RequestIncrementalAuthorization, + request_incremental_authorization: Option, ) -> Option { - if request_incremental_authorization == common_enums::RequestIncrementalAuthorization::False { + if request_incremental_authorization + == Some(common_enums::RequestIncrementalAuthorization::False) + { Some(false) } else { incremental_authorization_allowed diff --git a/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/down.sql b/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/down.sql new file mode 100644 index 0000000000..1e7311bedb --- /dev/null +++ b/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/down.sql @@ -0,0 +1,2 @@ +-- This file should undo anything in `up.sql` +ALTER TABLE payment_intent ALTER COLUMN request_incremental_authorization SET NOT NULL; \ No newline at end of file diff --git a/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/up.sql b/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/up.sql new file mode 100644 index 0000000000..af2b897aa2 --- /dev/null +++ b/migrations/2023-12-07-075240_make-request-incremental-auth-optional-intent/up.sql @@ -0,0 +1,2 @@ +-- Your SQL goes here +ALTER TABLE payment_intent ALTER COLUMN request_incremental_authorization DROP NOT NULL; \ No newline at end of file