Bug: [FEATURE] Nuvei Apple pay hyperswitch-decryption flow



### Feature Description

Implement hyperswitch-decryption flow for nuvei connector

### Possible Implementation



### Have you spent some time checking if this feature request has been raised before?

- [x] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [x] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

None
diff --git a/crates/connector_configs/toml/development.toml b/crates/connector_configs/toml/development.toml
index e471cf41ee9..15291889d7b 100644
--- a/crates/connector_configs/toml/development.toml
+++ b/crates/connector_configs/toml/development.toml
@@ -3709,7 +3709,7 @@ label="Payment Processing Details At"
 placeholder="Enter Payment Processing Details At"
 required=true
 type="Radio"
-options=["Connector"]
+options=["Connector","Hyperswitch"]
 
 [[nuvei.metadata.google_pay]]
 name="merchant_name"
diff --git a/crates/connector_configs/toml/production.toml b/crates/connector_configs/toml/production.toml
index 8e74e8c1c46..a40ec24a73c 100644
--- a/crates/connector_configs/toml/production.toml
+++ b/crates/connector_configs/toml/production.toml
@@ -2857,6 +2857,57 @@ api_secret = "Merchant Secret"
 [nuvei.connector_webhook_details]
 merchant_secret = "Source verification key"
 
+[[nuvei.metadata.apple_pay]]
+name = "certificate"
+label = "Merchant Certificate (Base64 Encoded)"
+placeholder = "Enter Merchant Certificate (Base64 Encoded)"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "certificate_keys"
+label = "Merchant PrivateKey (Base64 Encoded)"
+placeholder = "Enter Merchant PrivateKey (Base64 Encoded)"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "merchant_identifier"
+label = "Apple Merchant Identifier"
+placeholder = "Enter Apple Merchant Identifier"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "display_name"
+label = "Display Name"
+placeholder = "Enter Display Name"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "initiative"
+label = "Domain"
+placeholder = "Enter Domain"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "initiative_context"
+label = "Domain Name"
+placeholder = "Enter Domain Name"
+required = true
+type = "Text"
+[[nuvei.metadata.apple_pay]]
+name = "merchant_business_country"
+label = "Merchant Business Country"
+placeholder = "Enter Merchant Business Country"
+required = true
+type = "Select"
+options = []
+[[nuvei.metadata.apple_pay]]
+name = "payment_processing_details_at"
+label = "Payment Processing Details At"
+placeholder = "Enter Payment Processing Details At"
+required = true
+type = "Radio"
+options = ["Connector","Hyperswitch"]
+
 
 [opennode]
 [[opennode.crypto]]
diff --git a/crates/connector_configs/toml/sandbox.toml b/crates/connector_configs/toml/sandbox.toml
index 0ec6cbd7f82..3b1e18d8903 100644
--- a/crates/connector_configs/toml/sandbox.toml
+++ b/crates/connector_configs/toml/sandbox.toml
@@ -3680,7 +3680,9 @@ label = "Payment Processing Details At"
 placeholder = "Enter Payment Processing Details At"
 required = true
 type = "Radio"
-options = ["Connector"]
+options = ["Connector","Hyperswitch"]
+
+
 
 [[nuvei.metadata.google_pay]]
 name = "merchant_name"
diff --git a/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs b/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs
index 4483412424d..110263e3896 100644
--- a/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs
@@ -1,5 +1,7 @@
 use common_enums::{enums, CaptureMethod, FutureUsage, PaymentChannel};
-use common_types::payments::{ApplePayPaymentData, GpayTokenizationData};
+use common_types::payments::{
+    ApplePayPaymentData, ApplePayPredecryptData, GPayPredecryptData, GpayTokenizationData,
+};
 use common_utils::{
     crypto::{self, GenerateDigest},
     date_time,
@@ -19,7 +21,7 @@ use hyperswitch_domain_models::{
     },
     router_data::{
         AdditionalPaymentMethodConnectorResponse, ConnectorAuthType, ConnectorResponseData,
-        ErrorResponse, L2L3Data, RouterData,
+        ErrorResponse, L2L3Data, PaymentMethodToken, RouterData,
     },
     router_flow_types::{
         refunds::{Execute, RSync},
@@ -1032,6 +1034,40 @@ struct ApplePayPaymentMethodCamelCase {
     #[serde(rename = "type")]
     pm_type: Secret<String>,
 }
+
+fn get_google_pay_decrypt_data(
+    predecrypt_data: &GPayPredecryptData,
+    is_rebilling: Option<String>,
+    brand: Option<String>,
+) -> Result<NuveiPaymentsRequest, error_stack::Report<errors::ConnectorError>> {
+    Ok(NuveiPaymentsRequest {
+        is_rebilling,
+        payment_option: PaymentOption {
+            card: Some(Card {
+                brand,
+                card_number: Some(predecrypt_data.application_primary_account_number.clone()),
+                last4_digits: Some(Secret::new(
+                    predecrypt_data
+                        .application_primary_account_number
+                        .clone()
+                        .get_last4(),
+                )),
+                expiration_month: Some(predecrypt_data.card_exp_month.clone()),
+                expiration_year: Some(predecrypt_data.card_exp_year.clone()),
+                external_token: Some(ExternalToken {
+                    external_token_provider: ExternalTokenProvider::GooglePay,
+                    mobile_token: None,
+                    cryptogram: predecrypt_data.cryptogram.clone(),
+                    eci_provider: predecrypt_data.eci_indicator.clone(),
+                }),
+                ..Default::default()
+            }),
+            ..Default::default()
+        },
+        ..Default::default()
+    })
+}
+
 fn get_googlepay_info<F, Req>(
     item: &RouterData<F, Req, PaymentsResponseData>,
     gpay_data: &GooglePayWalletData,
@@ -1044,37 +1080,21 @@ where
     } else {
         None
     };
-    match gpay_data.tokenization_data {
-        GpayTokenizationData::Decrypted(ref gpay_predecrypt_data) => Ok(NuveiPaymentsRequest {
+
+    if let Ok(PaymentMethodToken::GooglePayDecrypt(ref token)) = item.get_payment_method_token() {
+        return get_google_pay_decrypt_data(
+            token,
             is_rebilling,
-            payment_option: PaymentOption {
-                card: Some(Card {
-                    brand: Some(gpay_data.info.card_network.clone()),
-                    card_number: Some(
-                        gpay_predecrypt_data
-                            .application_primary_account_number
-                            .clone(),
-                    ),
-                    last4_digits: Some(Secret::new(
-                        gpay_predecrypt_data
-                            .application_primary_account_number
-                            .clone()
-                            .get_last4(),
-                    )),
-                    expiration_month: Some(gpay_predecrypt_data.card_exp_month.clone()),
-                    expiration_year: Some(gpay_predecrypt_data.card_exp_year.clone()),
-                    external_token: Some(ExternalToken {
-                        external_token_provider: ExternalTokenProvider::GooglePay,
-                        mobile_token: None,
-                        cryptogram: gpay_predecrypt_data.cryptogram.clone(),
-                        eci_provider: gpay_predecrypt_data.eci_indicator.clone(),
-                    }),
-                    ..Default::default()
-                }),
-                ..Default::default()
-            },
-            ..Default::default()
-        }),
+            Some(gpay_data.info.card_network.clone()),
+        );
+    }
+
+    match &gpay_data.tokenization_data {
+        GpayTokenizationData::Decrypted(gpay_predecrypt_data) => get_google_pay_decrypt_data(
+            gpay_predecrypt_data,
+            is_rebilling,
+            Some(gpay_data.info.card_network.clone()),
+        ),
         GpayTokenizationData::Encrypted(ref encrypted_data) => Ok(NuveiPaymentsRequest {
             is_rebilling,
             payment_option: PaymentOption {
@@ -1127,6 +1147,62 @@ where
     }
 }
 
+fn get_apple_pay_decrypt_data(
+    apple_pay_predecrypt_data: &ApplePayPredecryptData,
+    is_rebilling: Option<String>,
+    network: String,
+) -> Result<NuveiPaymentsRequest, error_stack::Report<errors::ConnectorError>> {
+    Ok(NuveiPaymentsRequest {
+        is_rebilling,
+        payment_option: PaymentOption {
+            card: Some(Card {
+                brand: Some(network),
+                card_number: Some(
+                    apple_pay_predecrypt_data
+                        .application_primary_account_number
+                        .clone(),
+                ),
+                last4_digits: Some(Secret::new(
+                    apple_pay_predecrypt_data
+                        .application_primary_account_number
+                        .get_last4(),
+                )),
+                expiration_month: Some(
+                    apple_pay_predecrypt_data
+                        .application_expiration_month
+                        .clone(),
+                ),
+                expiration_year: Some(
+                    apple_pay_predecrypt_data
+                        .application_expiration_year
+                        .clone(),
+                ),
+                external_token: Some(ExternalToken {
+                    external_token_provider: ExternalTokenProvider::ApplePay,
+                    mobile_token: None,
+                    cryptogram: Some(
+                        apple_pay_predecrypt_data
+                            .payment_data
+                            .online_payment_cryptogram
+                            .clone(),
+                    ),
+                    eci_provider: Some(
+                        apple_pay_predecrypt_data
+                            .payment_data
+                            .eci_indicator
+                            .clone()
+                            .ok_or_else(missing_field_err(
+                                "payment_method_data.wallet.apple_pay.payment_data.eci_indicator",
+                            ))?,
+                    ),
+                }),
+                ..Default::default()
+            }),
+            ..Default::default()
+        },
+        ..Default::default()
+    })
+}
 fn get_applepay_info<F, Req>(
     item: &RouterData<F, Req, PaymentsResponseData>,
     apple_pay_data: &ApplePayWalletData,
@@ -1139,58 +1215,24 @@ where
     } else {
         None
     };
+    if let Ok(PaymentMethodToken::ApplePayDecrypt(ref token)) = item.get_payment_method_token() {
+        return get_apple_pay_decrypt_data(
+            token,
+            is_rebilling,
+            apple_pay_data.payment_method.network.clone(),
+        );
+    }
     match apple_pay_data.payment_data {
-        ApplePayPaymentData::Decrypted(ref apple_pay_predecrypt_data) => Ok(NuveiPaymentsRequest {
-           is_rebilling,
-            payment_option: PaymentOption {
-                card: Some(Card {
-                    brand: Some(apple_pay_data.payment_method.network.clone()),
-                    card_number: Some(
-                        apple_pay_predecrypt_data
-                            .application_primary_account_number
-                            .clone(),
-                    ),
-                    last4_digits: Some(Secret::new(
-                        apple_pay_predecrypt_data
-                            .application_primary_account_number
-                            .get_last4(),
-                    )),
-                    expiration_month: Some(
-                        apple_pay_predecrypt_data
-                            .application_expiration_month
-                            .clone(),
-                    ),
-                    expiration_year: Some(
-                        apple_pay_predecrypt_data
-                            .application_expiration_year
-                            .clone(),
-                    ),
-                    external_token: Some(ExternalToken {
-                        external_token_provider: ExternalTokenProvider::ApplePay,
-                        mobile_token: None,
-                        cryptogram: Some(
-                            apple_pay_predecrypt_data
-                                .payment_data
-                                .online_payment_cryptogram
-                                .clone(),
-                        ),
-                        eci_provider: Some(
-                            apple_pay_predecrypt_data
-                                .payment_data
-                                .eci_indicator.clone()
-                                .ok_or_else(missing_field_err(
-                                "payment_method_data.wallet.apple_pay.payment_data.eci_indicator",
-                            ))?,
-                        ),
-                    }),
-                    ..Default::default()
-                }),
-                ..Default::default()
-            },
-            ..Default::default()
-        }),
+        ApplePayPaymentData::Decrypted(ref apple_pay_predecrypt_data) => {
+            get_apple_pay_decrypt_data(
+                apple_pay_predecrypt_data,
+                is_rebilling,
+                apple_pay_data.payment_method.network.clone(),
+            )
+        }
+
         ApplePayPaymentData::Encrypted(ref encrypted_data) => Ok(NuveiPaymentsRequest {
-           is_rebilling,
+            is_rebilling,
             payment_option: PaymentOption {
                 card: Some(Card {
                     external_token: Some(ExternalToken {
@@ -1621,6 +1663,7 @@ where
         data: (&RouterData<F, Req, PaymentsResponseData>, String),
     ) -> Result<Self, Self::Error> {
         let item = data.0;
+
         let request_data = match item.request.get_payment_method_data_required()?.clone() {
             PaymentMethodData::Card(card) => get_card_info(item, &card),
             PaymentMethodData::MandatePayment => Self::try_from(item),
@@ -1768,19 +1811,14 @@ where
         let amount_details = get_amount_details(&item.l2_l3_data, currency)?;
         let l2_l3_items: Option<Vec<NuveiItem>> = get_l2_l3_items(&item.l2_l3_data, currency)?;
         let address = {
-            if let Some(billing_address) = item.get_optional_billing() {
-                let mut billing_address = billing_address.clone();
-                item.get_billing_first_name()?;
-                billing_address.email = match item.get_billing_email() {
-                    Ok(email) => Some(email),
-                    Err(_) => Some(item.request.get_email_required()?),
-                };
-                item.get_billing_country()?;
-
-                Some(billing_address)
-            } else {
-                None
-            }
+            let mut billing_address = item.get_billing()?.clone();
+            item.get_billing_first_name()?;
+            billing_address.email = match item.get_billing_email() {
+                Ok(email) => Some(email),
+                Err(_) => Some(item.request.get_email_required()?),
+            };
+            item.get_billing_country()?;
+            Some(billing_address)
         };
 
         let shipping_address: Option<ShippingAddress> =
diff --git a/crates/payment_methods/src/configs/payment_connector_required_fields.rs b/crates/payment_methods/src/configs/payment_connector_required_fields.rs
index c9b09f7eee2..bfb3e36b291 100644
--- a/crates/payment_methods/src/configs/payment_connector_required_fields.rs
+++ b/crates/payment_methods/src/configs/payment_connector_required_fields.rs
@@ -1514,7 +1514,23 @@ fn get_cards_required_fields() -> HashMap<Connector, RequiredFieldFinal> {
                 .concat(),
             ),
         ),
-        (Connector::Nuvei, fields(vec![], vec![], card_basic())),
+        (
+            Connector::Nuvei,
+            fields(
+                vec![],
+                vec![],
+                [
+                    card_basic(),
+                    vec![
+                        RequiredField::BillingEmail,
+                        RequiredField::BillingCountries(vec!["ALL"]),
+                        RequiredField::BillingFirstName("first_name", FieldType::UserFullName),
+                        RequiredField::BillingLastName("last_name", FieldType::UserFullName),
+                    ],
+                ]
+                .concat(),
+            ),
+        ),
         (
             Connector::Paybox,
             fields(
@@ -2310,6 +2326,19 @@ fn get_wallet_required_fields() -> HashMap<enums::PaymentMethodType, ConnectorFi
             connectors(vec![
                 (Connector::Stripe, fields(vec![], vec![], vec![])),
                 (Connector::Adyen, fields(vec![], vec![], vec![])),
+                (
+                    Connector::Nuvei,
+                    fields(
+                        vec![],
+                        vec![],
+                        vec![
+                            RequiredField::BillingEmail,
+                            RequiredField::BillingCountries(vec!["ALL"]),
+                            RequiredField::BillingFirstName("first_name", FieldType::UserFullName),
+                            RequiredField::BillingLastName("last_name", FieldType::UserFullName),
+                        ],
+                    ),
+                ),
                 (
                     Connector::Bankofamerica,
                     RequiredFieldFinal {
@@ -2465,7 +2494,19 @@ fn get_wallet_required_fields() -> HashMap<enums::PaymentMethodType, ConnectorFi
                     Connector::Novalnet,
                     fields(vec![], vec![], vec![RequiredField::BillingEmail]),
                 ),
-                (Connector::Nuvei, fields(vec![], vec![], vec![])),
+                (
+                    Connector::Nuvei,
+                    fields(
+                        vec![],
+                        vec![],
+                        vec![
+                            RequiredField::BillingEmail,
+                            RequiredField::BillingCountries(vec!["ALL"]),
+                            RequiredField::BillingFirstName("first_name", FieldType::UserFullName),
+                            RequiredField::BillingLastName("last_name", FieldType::UserFullName),
+                        ],
+                    ),
+                ),
                 (Connector::Airwallex, fields(vec![], vec![], vec![])),
                 (Connector::Authorizedotnet, fields(vec![], vec![], vec![])),
                 (Connector::Checkout, fields(vec![], vec![], vec![])),

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

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

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

Add support for hyperswitch side decrypt flow for applepay in Nuvei

- Hyperswitch can decrypt applepay token without involvement of connector if it has Apple pay processing certificate and private key.

# how did i test

Payment Request

```json
{
    "amount": 6500,
    "currency": "USD",
    "email": "email4@gmail.com",
    "customer_id": "hello5",
    "capture_method": "automatic",
    "confirm": true,
    "return_url": "https://hyperswitch-demo-store.netlify.app/?isTestingMode=true&hyperswitchClientUrl=https://beta.hyperswitch.io/v1&hyperswitchCustomPodUri=&hyperswitchCustomBackendUrl=&publishableKey=pk_snd_e6c328fa58824247865647d532583e66&secretKey=snd_H0f0rZqfaXlv6kz81O6tQptd2e250u5vlFsA1L50ogMglapamZmDzJ7qRlj4mNlM&profileId=pro_PxNHqEwbZM6rbIfgClSg&environment=Sandbox",
     "billing": {
        "address": {
            "zip": "560095",
            "country": "US",
            "first_name": "Sakil",
            "last_name": "Mostak",
            "line1": "Fasdf",
            "line2": "Fasdf",
            "city": "Fasdf"
        }
    },
    "payment_method_data": {
        "wallet": {
            "apple_pay": {
                "payment_data": "eyJkYXRhIjoiSWRNbUFu***************d****************2NDQ5NDlmMWUxNGZiYmM4NTdiNjk5N2NkYWJlMzczZGEyOTI3ZmU5NzcifSwidmVyc2lvbiI6IkVDX3YxIn0=",
                "payment_method": {
                    "display_name": "Visa 0492",
                    "network": "Visa",
                    "type": "debit"
                },
                "transaction_identifier": "85ea39d59610a6860eb723644949f1e14fbbc857b6997cdabe373da2927fe977"
            }
        }
    },
    "payment_method": "wallet",
    "payment_method_type": "apple_pay",
    "connector": [
        "nuvei"
    ],
    "browser_info": {
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "en-US",
        "color_depth": 24,
        "screen_height": 1117,
        "screen_width": 1728,
        "ip_address": "192.168.1.1",
        "time_zone": -330,
        "java_enabled": true,
        "java_script_enabled": true,
        "device_model": "Macintosh",
        "os_type": "macOS",
        "os_version": "10.15.7"
    },
    "payment_type": "normal"
}
```

## Response

```json
{
    "payment_id": "pay_7wu0YSHTd8LFDE8KD2UN",
    "merchant_id": "merchant_1758115709",
    "status": "succeeded",
    "amount": 6500,
    "net_amount": 6500,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": 6500,
    "connector": "nuvei",
    "client_secret": "pay_7wu0YSHTd8LFDE8KD2UN_secret_kIWxoLIlS4kexcOCmHz1",
    "created": "2025-09-18T07:35:21.765Z",
    "currency": "USD",
    "customer_id": "hello5",
    "customer": {
        "id": "hello5",
        "name": null,
        "email": "email4@gmail.com",
        "phone": null,
        "phone_country_code": null
    },
    "description": null,
    "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": {
            "apple_pay": {
                "last4": "0492",
                "card_network": "Visa",
                "type": "debit"
            }
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": {
        "address": {
            "city": "Fasdf",
            "country": "US",
            "line1": "Fasdf",
            "line2": "Fasdf",
            "line3": null,
            "zip": "560095",
            "state": null,
            "first_name": "Sakil",
            "last_name": "Mostak",
            "origin_zip": null
        },
        "phone": null,
        "email": null
    },
    "order_details": null,
    "email": "email4@gmail.com",
    "name": null,
    "phone": null,
    "return_url": "https://hyperswitch-demo-store.netlify.app/?isTestingMode=true&hyperswitchClientUrl=https://beta.hyperswitch.io/v1&hyperswitchCustomPodUri=&hyperswitchCustomBackendUrl=&publishableKey=pk_snd_e6c328fa58824247865647d532583e66&secretKey=snd_H0f0rZqfaXlv6kz81O6tQptd2e250u5vlFsA1L50ogMglapamZmDzJ7qRlj4mNlM&profileId=pro_PxNHqEwbZM6rbIfgClSg&environment=Sandbox",
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": null,
    "statement_descriptor_suffix": null,
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "apple_pay",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": {
        "customer_id": "hello5",
        "created_at": 1758180921,
        "expires": 1758184521,
        "secret": "epk_228ed6b0222a461b9497d73df63c5e11"
    },
    "manual_retry_allowed": null,
    "connector_transaction_id": "7110000000017082220",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": {
        "redirect_response": null,
        "search_tags": null,
        "apple_pay_recurring_details": null,
        "gateway_system": "direct"
    },
    "reference_id": "8937234111",
    "payment_link": null,
    "profile_id": "pro_G0scDt6GAZBxs3brIkts",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_4ioDaxsfaPf9R3aZCrE6",
    "incremental_authorization_allowed": false,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2025-09-18T07:50:21.765Z",
    "fingerprint": null,
    "browser_info": {
        "os_type": "macOS",
        "language": "en-US",
        "time_zone": -330,
        "ip_address": "192.168.1.1",
        "os_version": "10.15.7",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15",
        "color_depth": 24,
        "device_model": "Macintosh",
        "java_enabled": true,
        "screen_width": 1728,
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "screen_height": 1117,
        "java_script_enabled": true
    },
    "payment_channel": null,
    "payment_method_id": null,
    "network_transaction_id": "",
    "payment_method_status": null,
    "updated": "2025-09-18T07:35:25.366Z",
    "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,
    "force_3ds_challenge": false,
    "force_3ds_challenge_trigger": false,
    "issuer_error_code": null,
    "issuer_error_message": null,
    "is_iframe_redirection_enabled": null,
    "whole_connector_response": null,
    "enable_partial_authorization": null,
    "enable_overcapture": null,
    "is_overcapture_enabled": null,
    "network_details": null
}
```

<img width="1478" height="714" alt="Screenshot 2025-09-18 at 1 24 08 PM" src="https://github.com/user-attachments/assets/2711bf06-f543-40bd-bd08-159920b60be3" />

## Similarly for manual capture

<img width="1531" height="861" alt="Screenshot 2025-09-18 at 1 25 41 PM" src="https://github.com/user-attachments/assets/4984713a-8837-4d8a-9783-37cefedb17d7" />



## 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
