From cd218923ba35d74e142a92cd217cafaeab710b51 Mon Sep 17 00:00:00 2001
From: hrithikeshvm <hrithikeshmylatty@gmail.com>
Date: Fri, 10 Nov 2023 14:57:06 +0530
Subject: [PATCH] check in redis only if surcharge not found in payment attempt

---
 .../payments/operations/payment_confirm.rs    | 52 +++++++++----------
 crates/router/src/services/api.rs             |  6 +--
 2 files changed, 27 insertions(+), 31 deletions(-)

diff --git a/crates/router/src/core/payments/operations/payment_confirm.rs b/crates/router/src/core/payments/operations/payment_confirm.rs
index 566095c7935d..96cd4f5c622f 100644
--- a/crates/router/src/core/payments/operations/payment_confirm.rs
+++ b/crates/router/src/core/payments/operations/payment_confirm.rs
@@ -692,33 +692,33 @@ impl PaymentConfirm {
                         {
                             return invalid_surcharge_details_error;
                         }
+                    } else {
+                        // if not sent in payment create
+                        // verify that any calculated surcharge sent in session flow is same as the one sent in confirm
+                        return match get_individual_surcharge_detail_from_redis(
+                            state,
+                            &payment_method_type.into(),
+                            &payment_method_type,
+                            None,
+                            &payment_attempt.attempt_id,
+                        )
+                        .await
+                        {
+                            Ok(surcharge_details) => utils::when(
+                                !surcharge_details
+                                    .is_request_surcharge_matching(request_surcharge_details),
+                                || invalid_surcharge_details_error,
+                            ),
+                            Err(err) if err.current_context() == &RedisError::NotFound => {
+                                utils::when(!request_surcharge_details.is_surcharge_zero(), || {
+                                    invalid_surcharge_details_error
+                                })
+                            }
+                            Err(err) => Err(err)
+                                .change_context(errors::ApiErrorResponse::InternalServerError)
+                                .attach_printable("Failed to fetch redis value"),
+                        };
                     }
-                    // is not sent in payment create
-                    // verify that any calculated surcharge sent in session flow is same as the one sent in confirm
-                    let result = match get_individual_surcharge_detail_from_redis(
-                        state,
-                        &payment_method_type.into(),
-                        &payment_method_type,
-                        None,
-                        &payment_attempt.attempt_id,
-                    )
-                    .await
-                    {
-                        Ok(surcharge_details) => utils::when(
-                            !surcharge_details
-                                .is_request_surcharge_matching(request_surcharge_details),
-                            || invalid_surcharge_details_error,
-                        ),
-                        Err(err) if err.current_context() == &RedisError::NotFound => {
-                            utils::when(!request_surcharge_details.is_surcharge_zero(), || {
-                                invalid_surcharge_details_error
-                            })
-                        }
-                        Err(err) => Err(err)
-                            .change_context(errors::ApiErrorResponse::InternalServerError)
-                            .attach_printable("Failed to fetch redis value"),
-                    };
-                    return result;
                 }
                 Ok(())
             }
diff --git a/crates/router/src/services/api.rs b/crates/router/src/services/api.rs
index bb0e70b4b27b..33e0783efc9b 100644
--- a/crates/router/src/services/api.rs
+++ b/crates/router/src/services/api.rs
@@ -98,11 +98,7 @@ pub trait ConnectorValidation: ConnectorCommon {
     }
 
     fn validate_if_surcharge_implemented(&self) -> CustomResult<(), errors::ConnectorError> {
-        Err(errors::ConnectorError::NotImplemented(format!(
-            "Surcharge not implemented for {}",
-            self.id()
-        ))
-        .into())
+        Err(errors::ConnectorError::NotImplemented(format!("Surcharge for {}", self.id())).into())
     }
 }