Bug: [BUG] 5xx in PayPal when cancelling the Payment



we're getting 5xx when you try to cancel the payment express checkout page. and this is not intended.
diff --git a/crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs
index 223be54d3fd..45749332081 100644
--- a/crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs
+++ b/crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs
@@ -187,6 +187,9 @@ pub struct Notifications {
     /// The merchant URL that will receive the notification when the 3DS ACS successfully gathers
     /// de ice informatiSon and tonotification_configurations.cordingly.
     pub three_ds_method_return_url: Option<String>,
+    /// The URL on merchant's website to which the customer should be redirected in the event of
+    /// the customer canceling the transaction.
+    pub cancel_url: Option<String>,
 }
 
 #[derive(Debug, Serialize, Deserialize)]
diff --git a/crates/hyperswitch_connectors/src/connectors/globalpay/response.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/response.rs
index a5f905d0e70..a36cdc2a53a 100644
--- a/crates/hyperswitch_connectors/src/connectors/globalpay/response.rs
+++ b/crates/hyperswitch_connectors/src/connectors/globalpay/response.rs
@@ -69,7 +69,7 @@ pub struct Action {
     pub time_created: Option<String>,
     /// Indicates the action taken.
     #[serde(rename = "type")]
-    pub action_type: Option<String>,
+    pub action_type: Option<ActionType>,
 }
 
 #[derive(Debug, Deserialize, Serialize)]
@@ -266,6 +266,35 @@ pub struct ProviderClass {
 pub enum ResultCode {
     Declined,
     Success,
+    Pending,
+    Error,
+}
+
+/// Indicates the specific action taken.
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
+pub enum ActionType {
+    Adjust,
+    Authorize,
+    Capture,
+    Confirm,
+    Force,
+    Increment,
+    Initiate,
+    MultipleCapture,
+    Preauthorize,
+    PreauthorizeMultipleCapturere,
+    Authorization,
+    RedirectFrom,
+    RedirectTo,
+    Refund,
+    Hold,
+    Release,
+    Reverse,
+    Split,
+    StatusNotification,
+    TransactionList,
+    TransactionSingle,
 }
 
 /// A string generated by the payment method that represents to what degree the merchant is
@@ -335,19 +364,6 @@ pub enum Brand {
     Visa,
 }
 
-/// If enabled, this field indicates whether the payment method has been seen before or is
-/// new.
-#[derive(Debug, Serialize, Deserialize)]
-#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
-pub enum FingerprintPresenceIndicator {
-    ///  Indicates that the payment method was seen on the platform before by this
-    /// merchant.
-    Exists,
-    /// Indicates that the payment method was not seen on the platform before by this
-    /// merchant.
-    New,
-}
-
 /// Indicates where a transaction is in its lifecycle.
 #[derive(Clone, Copy, Debug, Serialize, Deserialize)]
 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
@@ -389,13 +405,6 @@ pub struct GlobalpayWebhookObjectEventType {
     pub status: GlobalpayWebhookStatus,
 }
 
-#[derive(Debug, Deserialize, Serialize)]
-pub struct GlobalpayPaymentsWebhookResponse {
-    pub id: String,
-    pub account_id: Option<String>,
-    pub account_name: Option<String>,
-}
-
 #[derive(Debug, Deserialize)]
 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
 pub enum GlobalpayWebhookStatus {
@@ -404,8 +413,3 @@ pub enum GlobalpayWebhookStatus {
     #[serde(other)]
     Unknown,
 }
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct GlobalpayRedirectResponse {
-    pub status: Option<GlobalpayPaymentStatus>,
-}
diff --git a/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs
index 24cfa66ef39..124b611d049 100644
--- a/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs
@@ -116,6 +116,7 @@ impl TryFrom<&GlobalPayRouterData<&PaymentsAuthorizeRouterData>> for GlobalpayPa
                 decoupled_challenge_return_url: None,
                 status_url: item.router_data.request.webhook_url.clone(),
                 three_ds_method_return_url: None,
+                cancel_url: get_return_url(item.router_data),
             }),
             authorization_mode: None,
             cashback_amount: None,
@@ -477,7 +478,14 @@ fn get_return_url(item: &PaymentsAuthorizeRouterData) -> Option<String> {
     match item.request.payment_method_data.clone() {
         payment_method_data::PaymentMethodData::Wallet(
             payment_method_data::WalletData::PaypalRedirect(_),
-        ) => item.request.complete_authorize_url.clone(),
+        ) => {
+            // Return URL handling for PayPal via Globalpay:
+            // - PayPal inconsistency: Return URLs work with HTTP, but cancel URLs require HTTPS
+            // - Local development: When testing locally, expose your server via HTTPS and replace
+            //   the base URL with an HTTPS URL to ensure proper cancellation flow
+            // - Refer to commit 6499d429da87 for more information
+            item.request.complete_authorize_url.clone()
+        }
         _ => item.request.router_return_url.clone(),
     }
 }
diff --git a/crates/hyperswitch_connectors/src/connectors/recurly/transformers.rs b/crates/hyperswitch_connectors/src/connectors/recurly/transformers.rs
index 23a0daa45b4..a1fc1bdd828 100644
--- a/crates/hyperswitch_connectors/src/connectors/recurly/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/recurly/transformers.rs
@@ -309,7 +309,7 @@ impl TryFrom<enums::AttemptStatus> for RecurlyRecordStatus {
 
 #[derive(Debug, Deserialize, Serialize, Clone)]
 pub struct RecurlyRecordbackResponse {
-    // inovice id
+    // invoice id
     pub id: id_type::PaymentReferenceId,
 }
 

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->

This PR addresses 5xx that currently is being thrown when a user tries to cancel the PayPal transactions from the redirected page:

<img width="372" alt="image" src="https://github.com/user-attachments/assets/4f920b8b-6ab4-4bcb-9705-dc4d15635c2d" />

This is addressed by introducing a new field `cancel_url` that is required for PayPal.

This PR also removes unused structs and enums. In addition to that, `ActionType` has been replaced the previous `String` and now that it only accepts limited number of values.

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->

We're getting a 5xx when trying to cancel the payment.
Closes [#7607](https://github.com/juspay/hyperswitch/issues/7607)

## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->

▶ Expose the `localhost` to the internet via `tailscale funnel`
<details>
<summary>Make a Paypal transaction</summary>

Create Payment:

```curl
curl --location 'https://pix-mbp.orthrus-monster.ts.net/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_DYcmLTXXQ6gF1HulHKL1WMBpoP8Uw2v1M4eO9mqp9za9AHCpJfhloE568dArpo5Y' \
--data-raw '{
    "amount": 1000,
    "currency": "USD",
    "confirm": false,
    "capture_method": "automatic",
    "capture_on": "2022-09-10T10:11:12Z",
    "amount_to_capture": 1000,
    "customer_id": "StripeCustomer",
    "email": "abcdef123@gmail.com",
    "name": "John Doe",
    "phone": "999999999",
    "phone_country_code": "+65",
    "description": "Its my first payment request",
    "authentication_type": "three_ds",
    "return_url": "https://duck.com",
    "billing": {
        "address": {
            "first_name": "John",
            "last_name": "Doe",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "city": "San Fransico",
            "state": "California",
            "zip": "94122",
            "country": "US"
        }
    },
    "browser_info": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "nl-NL",
        "color_depth": 24,
        "screen_height": 723,
        "screen_width": 1536,
        "time_zone": 0,
        "java_enabled": true,
        "java_script_enabled": true,
        "ip_address": "127.0.0.1"
    },
    "shipping": {
        "address": {
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "city": "San Fransico",
            "state": "California",
            "zip": "94122",
            "country": "US",
            "first_name": "John",
            "last_name": "Doe"
        }
    },
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "metadata": {
        "udf1": "value1",
        "new_customer": "true",
        "login_date": "2019-09-10T10:11:12Z"
    }
}'
```
```json
{
    "payment_id": "pay_nL4QMyfyB3Q6T0Cs2OEf",
    "merchant_id": "postman_merchant_GHAction_164c761e-166f-4a82-859f-609d96a725b0",
    "status": "requires_payment_method",
    "amount": 1000,
    "net_amount": 1000,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": null,
    "connector": null,
    "client_secret": "pay_nL4QMyfyB3Q6T0Cs2OEf_secret_No5MIK8z5xGpdgyfb5gH",
    "created": "2025-03-24T11:25:08.436Z",
    "currency": "USD",
    "customer_id": "StripeCustomer",
    "customer": {
        "id": "StripeCustomer",
        "name": "John Doe",
        "email": "abcdef123@gmail.com",
        "phone": "999999999",
        "phone_country_code": "+65"
    },
    "description": "Its my first payment request",
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "automatic",
    "payment_method": null,
    "payment_method_data": null,
    "payment_token": null,
    "shipping": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "order_details": null,
    "email": "abcdef123@gmail.com",
    "name": "John Doe",
    "phone": "999999999",
    "return_url": "https://duck.com/",
    "authentication_type": "three_ds",
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": null,
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": {
        "customer_id": "StripeCustomer",
        "created_at": 1742815508,
        "expires": 1742819108,
        "secret": "epk_bc69bc123b7446839d02b177bc3273f7"
    },
    "manual_retry_allowed": null,
    "connector_transaction_id": null,
    "frm_message": null,
    "metadata": {
        "udf1": "value1",
        "login_date": "2019-09-10T10:11:12Z",
        "new_customer": "true"
    },
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": null,
    "payment_link": null,
    "profile_id": "pro_bf5d6NP8wcNd1vnsH0eE",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": null,
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2025-03-24T11:40:08.436Z",
    "fingerprint": null,
    "browser_info": {
        "language": "nl-NL",
        "time_zone": 0,
        "ip_address": "127.0.0.1",
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "color_depth": 24,
        "java_enabled": true,
        "screen_width": 1536,
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "screen_height": 723,
        "java_script_enabled": true
    },
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2025-03-24T11:25:08.461Z",
    "split_payments": null,
    "frm_metadata": null,
    "extended_authorization_applied": null,
    "capture_before": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null,
    "card_discovery": null,
    "issuer_error_code": null,
    "issuer_error_message": null
}
```

Confirm payment:

```curl
curl --location 'https://pix-mbp.orthrus-monster.ts.net/payments/pay_5Vm2zTuuBxSsYrddguto/confirm' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_DYcmLTXXQ6gF1HulHKL1WMBpoP8Uw2v1M4eO9mqp9za9AHCpJfhloE568dArpo5Y' \
--data '{
    "payment_method": "wallet",
    "payment_method_type": "paypal",
    "return_url": "https://nohello.com",
    "payment_method_data": {
        "wallet": {
            "paypal_redirect": {
            }
        }
    }
}
'
```
```json
{
    "payment_id": "pay_nL4QMyfyB3Q6T0Cs2OEf",
    "merchant_id": "postman_merchant_GHAction_164c761e-166f-4a82-859f-609d96a725b0",
    "status": "requires_customer_action",
    "amount": 1000,
    "net_amount": 1000,
    "shipping_cost": null,
    "amount_capturable": 1000,
    "amount_received": null,
    "connector": "globalpay",
    "client_secret": "pay_nL4QMyfyB3Q6T0Cs2OEf_secret_No5MIK8z5xGpdgyfb5gH",
    "created": "2025-03-24T11:25:08.436Z",
    "currency": "USD",
    "customer_id": "StripeCustomer",
    "customer": {
        "id": "StripeCustomer",
        "name": "John Doe",
        "email": "abcdef123@gmail.com",
        "phone": "999999999",
        "phone_country_code": "+65"
    },
    "description": "Its my first payment request",
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "automatic",
    "payment_method": "wallet",
    "payment_method_data": {
        "wallet": {},
        "billing": null
    },
    "payment_token": null,
    "shipping": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "order_details": null,
    "email": "abcdef123@gmail.com",
    "name": "John Doe",
    "phone": "999999999",
    "return_url": "https://nohello.com/",
    "authentication_type": "three_ds",
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "next_action": {
        "type": "redirect_to_url",
        "redirect_to_url": "http://localhost:8080/payments/redirect/pay_nL4QMyfyB3Q6T0Cs2OEf/postman_merchant_GHAction_164c761e-166f-4a82-859f-609d96a725b0/pay_nL4QMyfyB3Q6T0Cs2OEf_1"
    },
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "paypal",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": null,
    "connector_transaction_id": "TRN_PRy15uCj0zyEXanseeWWt78nr53Zh4_Q6T0Cs2OEf_1",
    "frm_message": null,
    "metadata": {
        "udf1": "value1",
        "login_date": "2019-09-10T10:11:12Z",
        "new_customer": "true"
    },
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pay_nL4QMyfyB3Q6T0Cs2OEf_1",
    "payment_link": null,
    "profile_id": "pro_bf5d6NP8wcNd1vnsH0eE",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_vURZVfOwYJUGEdIvkfny",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2025-03-24T11:40:08.436Z",
    "fingerprint": null,
    "browser_info": {
        "os_type": null,
        "language": null,
        "time_zone": null,
        "ip_address": "103.159.11.202",
        "os_version": null,
        "user_agent": null,
        "color_depth": null,
        "device_model": null,
        "java_enabled": null,
        "screen_width": null,
        "accept_header": null,
        "screen_height": null,
        "accept_language": "en",
        "java_script_enabled": null
    },
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2025-03-24T11:25:12.890Z",
    "split_payments": null,
    "frm_metadata": null,
    "extended_authorization_applied": null,
    "capture_before": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null,
    "card_discovery": null,
    "issuer_error_code": null,
    "issuer_error_message": null
}
```
</details>

<details>
<summary>Click on `Cancel and return to Global Pay Merchant's Test Store` in PayPal **Express Checkout** page</summary>

<img width="561" alt="image" src="https://github.com/user-attachments/assets/b13b7e05-31c1-4037-a9b7-a7fd8c2d017f" />

</details>

<details>
<summary>You should be redirected to the `return_url` with payment status as `failed`</summary>

<img width="652" alt="image" src="https://github.com/user-attachments/assets/18aab179-ccce-4ce4-ab83-3a13e970999f" />

</details>


<details>
<summary>Retrieve the Payment to see the updated status</summary>

```curl
curl --location 'https://pix-mbp.orthrus-monster.ts.net/payments/pay_5Vm2zTuuBxSsYrddguto?force_sync=true' \
--header 'Accept: application/json' \
--header 'api-key: dev_DYcmLTXXQ6gF1HulHKL1WMBpoP8Uw2v1M4eO9mqp9za9AHCpJfhloE568dArpo5Y'
```
```json
{
    "payment_id": "pay_nL4QMyfyB3Q6T0Cs2OEf",
    "merchant_id": "postman_merchant_GHAction_164c761e-166f-4a82-859f-609d96a725b0",
    "status": "failed",
    "amount": 1000,
    "net_amount": 1000,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": null,
    "connector": "globalpay",
    "client_secret": "pay_nL4QMyfyB3Q6T0Cs2OEf_secret_No5MIK8z5xGpdgyfb5gH",
    "created": "2025-03-24T11:25:08.436Z",
    "currency": "USD",
    "customer_id": "StripeCustomer",
    "customer": {
        "id": "StripeCustomer",
        "name": "John Doe",
        "email": "abcdef123@gmail.com",
        "phone": "999999999",
        "phone_country_code": "+65"
    },
    "description": "Its my first payment request",
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "automatic",
    "payment_method": "wallet",
    "payment_method_data": {
        "wallet": {},
        "billing": null
    },
    "payment_token": null,
    "shipping": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "John",
            "last_name": "Doe"
        },
        "phone": null,
        "email": null
    },
    "order_details": null,
    "email": "abcdef123@gmail.com",
    "name": "John Doe",
    "phone": "999999999",
    "return_url": "https://nohello.com/",
    "authentication_type": "three_ds",
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "next_action": null,
    "cancellation_reason": null,
    "error_code": "INVALID_REQUEST_DATA",
    "error_message": "The supplied Payer Id doesn't match the value saved in the database",
    "unified_code": "UE_9000",
    "unified_message": "Something went wrong",
    "payment_experience": null,
    "payment_method_type": "paypal",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": true,
    "connector_transaction_id": "TRN_PRy15uCj0zyEXanseeWWt78nr53Zh4_Q6T0Cs2OEf_1",
    "frm_message": null,
    "metadata": {
        "udf1": "value1",
        "login_date": "2019-09-10T10:11:12Z",
        "new_customer": "true"
    },
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pay_nL4QMyfyB3Q6T0Cs2OEf_1",
    "payment_link": null,
    "profile_id": "pro_bf5d6NP8wcNd1vnsH0eE",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_vURZVfOwYJUGEdIvkfny",
    "incremental_authorization_allowed": false,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2025-03-24T11:40:08.436Z",
    "fingerprint": null,
    "browser_info": {
        "os_type": null,
        "language": null,
        "time_zone": null,
        "ip_address": "103.159.11.202",
        "os_version": null,
        "user_agent": null,
        "color_depth": null,
        "device_model": null,
        "java_enabled": null,
        "screen_width": null,
        "accept_header": null,
        "screen_height": null,
        "accept_language": "en",
        "java_script_enabled": null
    },
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2025-03-24T11:25:23.530Z",
    "split_payments": null,
    "frm_metadata": null,
    "extended_authorization_applied": null,
    "capture_before": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null,
    "card_discovery": null,
    "issuer_error_code": null,
    "issuer_error_message": null
}
```

</details>

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
