Repository: juspay/hyperswitch
Pull request #7266: ci(cypress): add Braintree connector configs for cypress test flows
Author: login: arindam-sahoo
Labels: name: A-CI-CD
description: Area: Continuous Integration/Deployment
name: A-connector-integration
description: Area: Connector integration
name: C-feature
description: Category: Feature request or enhancement
Created: 2025-02-13T11:25:00Z | Merged: 2025-04-24T07:23:48Z

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [x] CI/CD

## Description
<!-- Describe your changes in detail -->
Adding Cypress Test Case Flows related Configs for the `Braintree` Payment Processor.

~_Note: The Connector Update Test will fail until https://github.com/juspay/hyperswitch/pull/7622 is not merged to the `main` branch._~ (#7622 is Merged)

### 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).
-->
Missing Configs for `Braintree` Connector.

## 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)?
-->

<img width="700" alt="image" src="https://github.com/user-attachments/assets/28d84bc1-1890-4b22-baf4-e94de421c233" />


## Checklist
<!-- Put an `x` in the boxes that apply -->

- [ ] I formatted the code `cargo +nightly fmt --all`
- [ ] I addressed lints thrown by `cargo clippy`
- [ ] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible



Diff:
diff --git a/cypress-tests/cypress/e2e/configs/Payment/Braintree.js b/cypress-tests/cypress/e2e/configs/Payment/Braintree.js
new file mode 100644
index 00000000000..c9200fb2bcb
--- /dev/null
+++ b/cypress-tests/cypress/e2e/configs/Payment/Braintree.js
@@ -0,0 +1,564 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  ...successfulNo3DSCardDetails,
+  card_number: "4012000077777777",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const paymentMethodDataNo3DSResponse = {
+  card: {
+    last4: "1881",
+    card_type: "CREDIT",
+    card_network: "Visa",
+    card_issuer: "PT BANK HSBC INDONESIA",
+    card_issuing_country: "INDONESIA",
+    card_isin: "400934",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const paymentMethodData3DSResponse = {
+  card: {
+    last4: "7777",
+    card_type: "DEBIT",
+    card_network: "Visa",
+    card_issuer: "VISA PRODUCTION SUPPORT CLIENT BID 1",
+    card_issuing_country: "UNITEDSTATES",
+    card_isin: "401200",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const unsettledTransactionRefundResponse = {
+  status: 200,
+  body: {
+    status: "failed",
+    error_message:
+      "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+  },
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    Capture: {
+      Request: {
+        amount_to_capture: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 6000,
+        },
+      },
+    },
+    PartialCapture: {
+      Request: {
+        amount_to_capture: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "partially_captured",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 2000,
+        },
+      },
+    },
+    Refund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: unsettledTransactionRefundResponse,
+    },
+    PartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: unsettledTransactionRefundResponse,
+    },
+    manualPaymentRefund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: unsettledTransactionRefundResponse,
+    },
+    manualPaymentPartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: unsettledTransactionRefundResponse,
+    },
+    MandateMultiUseNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: multiUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    "3DSManualCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    MandateSingleUseNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: singleUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    MandateSingleUseNo3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: singleUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    MITManualCapture: {
+      Request: {},
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+        },
+      },
+    },
+    MandateMultiUseNo3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: multiUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    ZeroAuthMandate: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: singleUseMandateData,
+      },
+      Response: {
+        status: 501,
+        body: {
+          error: {
+            code: "IR_00",
+            message: "Setup Mandate flow for Braintree is not implemented",
+          },
+        },
+      },
+    },
+    SaveCardUseNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        setup_future_usage: "on_session",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+        },
+      },
+    },
+    SaveCardUseNo3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        setup_future_usage: "on_session",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    SaveCardUseNo3DSAutoCaptureOffSession: {
+      Request: {
+        payment_method: "card",
+        payment_method_type: "debit",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        setup_future_usage: "off_session",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    SaveCardConfirmAutoCaptureOffSession: {
+      Request: {
+        setup_future_usage: "off_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+        },
+      },
+    },
+    SaveCardUseNo3DSManualCaptureOffSession: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        setup_future_usage: "off_session",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    SaveCardConfirmManualCaptureOffSession: {
+      Request: {
+        setup_future_usage: "off_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+        },
+      },
+    },
+    ZeroAuthPaymentIntent: {
+      Request: {
+        amount: 0,
+        setup_future_usage: "off_session",
+        currency: "USD",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          setup_future_usage: "off_session",
+        },
+      },
+    },
+    ZeroAuthConfirmPayment: {
+      Request: {
+        payment_type: "setup_mandate",
+        payment_method: "card",
+        payment_method_type: "credit",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+      },
+      Response: {
+        status: 501,
+        body: {
+          error: {
+            code: "IR_00",
+            message: "Setup Mandate flow for Braintree is not implemented",
+          },
+        },
+      },
+    },
+    PaymentMethodIdMandate3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        mandate_data: null,
+        authentication_type: "three_ds",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    SaveCardUse3DSAutoCaptureOffSession: {
+      Request: {
+        payment_method: "card",
+        payment_method_type: "debit",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        setup_future_usage: "off_session",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    PaymentMethodIdMandateNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: null,
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    PaymentMethodIdMandateNo3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: null,
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    PaymentMethodIdMandate3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: null,
+        authentication_type: "three_ds",
+        customer_acceptance: customerAcceptance,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+  },
+};
diff --git a/cypress-tests/cypress/e2e/configs/Payment/Utils.js b/cypress-tests/cypress/e2e/configs/Payment/Utils.js
index 7f44a1e47dd..0e99723ff3c 100644
--- a/cypress-tests/cypress/e2e/configs/Payment/Utils.js
+++ b/cypress-tests/cypress/e2e/configs/Payment/Utils.js
@@ -3,6 +3,7 @@ import { execConfig, validateConfig } from "../../../utils/featureFlags.js";
 import { connectorDetails as adyenConnectorDetails } from "./Adyen.js";
 import { connectorDetails as bankOfAmericaConnectorDetails } from "./BankOfAmerica.js";
 import { connectorDetails as bluesnapConnectorDetails } from "./Bluesnap.js";
+import { connectorDetails as braintreeConnectorDetails } from "./Braintree.js";
 import { connectorDetails as checkoutConnectorDetails } from "./Checkout.js";
 import { connectorDetails as commonConnectorDetails } from "./Commons.js";
 import { updateDefaultStatusCode } from "./Modifiers.js";
@@ -35,6 +36,7 @@ const connectorDetails = {
   adyen: adyenConnectorDetails,
   bankofamerica: bankOfAmericaConnectorDetails,
   bluesnap: bluesnapConnectorDetails,
+  braintree: braintreeConnectorDetails,
   checkout: checkoutConnectorDetails,
   commons: commonConnectorDetails,
   cybersource: cybersourceConnectorDetails,
@@ -319,7 +321,7 @@ export function updateBusinessProfile(
 export const CONNECTOR_LISTS = {
   // Exclusion lists (skip these connectors)
   EXCLUDE: {
-    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "fiuu", "paypal"],
+    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "braintree", "fiuu", "paypal"],
     // Add more exclusion lists
   },
 
diff --git a/cypress-tests/cypress/support/commands.js b/cypress-tests/cypress/support/commands.js
index 048fe78c44d..5cbccb3dc45 100644
--- a/cypress-tests/cypress/support/commands.js
+++ b/cypress-tests/cypress/support/commands.js
@@ -2167,7 +2167,9 @@ Cypress.Commands.add(
               }
             } else if (response.body.authentication_type === "no_three_ds") {
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
               }
               expect(response.body.customer_id).to.equal(
                 globalState.get("customerId")
@@ -2211,7 +2213,9 @@ Cypress.Commands.add(
               );
             } else if (response.body.authentication_type === "no_three_ds") {
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
               }
               expect(response.body.customer_id).to.equal(
                 globalState.get("customerId")
@@ -2601,11 +2605,15 @@ Cypress.Commands.add(
               );
               cy.log(nextActionUrl);
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
               }
             } else if (response.body.authentication_type === "no_three_ds") {
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
                 if (setupFutureUsage === "off_session") {
                   expect(
                     response.body.connector_mandate_id,
@@ -2630,11 +2638,15 @@ Cypress.Commands.add(
               );
               cy.log(nextActionUrl);
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
               }
             } else if (response.body.authentication_type === "no_three_ds") {
               for (const key in resData.body) {
-                expect(resData.body[key]).to.equal(response.body[key]);
+                expect(resData.body[key], [key]).to.deep.equal(
+                  response.body[key]
+                );
                 if (setupFutureUsage === "off_session") {
                   expect(
                     response.body.connector_mandate_id,


Reviews:
user: login: likhinbopanna
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T11:39:03Z
user: login: Gnanasundari24
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:46:31Z
user: login: likhinbopanna
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T12:34:20Z
user: login: pixincreate
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-12T06:30:54Z
user: login: arindam-sahoo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-15T06:36:31Z
user: login: arindam-sahoo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-15T06:39:37Z
user: login: pixincreate
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-15T18:01:39Z
user: login: arindam-sahoo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T03:59:11Z
user: login: arindam-sahoo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T04:07:45Z
user: login: likhinbopanna
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-16T07:08:27Z
user: login: Gnanasundari24
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T10:10:54Z

Review comments:
diff_hunk: @@ -0,0 +1,533 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: Gnanasundari24
body: Can you verify payment method data in the response aswell
created_at: 2025-04-03T13:44:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,533 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: Gnanasundari24
body: 

Can you verify payment method data in the response aswell

created_at: 2025-04-03T13:45:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,533 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: Gnanasundari24
body: Verify same in response

created_at: 2025-04-03T13:45:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,533 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: Gnanasundari24
body: Verify all places PMD in response 
created_at: 2025-04-03T13:45:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const payment_method_data_no3ds_response = {
+  card: {
+    last4: "1881",
+    card_type: "CREDIT",
+    card_network: "Visa",
+    card_issuer: "PT BANK HSBC INDONESIA",
+    card_issuing_country: "INDONESIA",
+    card_isin: "400934",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const payment_method_data_3ds_response = {
+  card: {
+    last4: "7777",
+    card_type: "DEBIT",
+    card_network: "Visa",
+    card_issuer: "VISA PRODUCTION SUPPORT CLIENT BID 1",
+    card_issuing_country: "UNITEDSTATES",
+    card_isin: "401200",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: payment_method_data_3ds_response,
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    Capture: {
+      Request: {
+        amount_to_capture: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 6000,
+        },
+      },
+    },
+    PartialCapture: {
+      Request: {
+        amount_to_capture: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "partially_captured",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 2000,
+        },
+      },
+    },
+    Refund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    PartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    manualPaymentRefund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    manualPaymentPartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    MandateMultiUseNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: multiUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: payment_method_data_no3ds_response,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: pixincreate
body: ```suggestion
          payment_method_data: paymentMethodDataNo3dsResponse,
```

can you maintain `camelCase` here and every where below?
created_at: 2025-04-12T06:29:11Z
author_association: CONTRIBUTOR
diff_hunk: @@ -319,7 +321,7 @@ export function updateBusinessProfile(
 export const CONNECTOR_LISTS = {
   // Exclusion lists (skip these connectors)
   EXCLUDE: {
-    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "fiuu", "paypal"],
+    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "braintree", "fiuu", "paypal"],
path: cypress-tests/cypress/e2e/configs/Payment/Utils.js
user: login: pixincreate
body: connector does not support NTID?
created_at: 2025-04-12T06:30:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const payment_method_data_no3ds_response = {
+  card: {
+    last4: "1881",
+    card_type: "CREDIT",
+    card_network: "Visa",
+    card_issuer: "PT BANK HSBC INDONESIA",
+    card_issuing_country: "INDONESIA",
+    card_isin: "400934",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const payment_method_data_3ds_response = {
+  card: {
+    last4: "7777",
+    card_type: "DEBIT",
+    card_network: "Visa",
+    card_issuer: "VISA PRODUCTION SUPPORT CLIENT BID 1",
+    card_issuing_country: "UNITEDSTATES",
+    card_isin: "401200",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: payment_method_data_3ds_response,
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: payment_method_data_no3ds_response,
+        },
+      },
+    },
+    Capture: {
+      Request: {
+        amount_to_capture: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 6000,
+        },
+      },
+    },
+    PartialCapture: {
+      Request: {
+        amount_to_capture: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "partially_captured",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 2000,
+        },
+      },
+    },
+    Refund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    PartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    manualPaymentRefund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    manualPaymentPartialRefund: {
+      Request: {
+        amount: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
+    },
+    MandateMultiUseNo3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        mandate_data: multiUseMandateData,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: payment_method_data_no3ds_response,
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: arindam-sahoo
body: Done in 494d6480e36e94f7a759ea51103f8d78ffab63a8
created_at: 2025-04-15T06:36:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -319,7 +321,7 @@ export function updateBusinessProfile(
 export const CONNECTOR_LISTS = {
   // Exclusion lists (skip these connectors)
   EXCLUDE: {
-    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "fiuu", "paypal"],
+    CONNECTOR_AGNOSTIC_NTID: ["bankofamerica", "braintree", "fiuu", "paypal"],
path: cypress-tests/cypress/e2e/configs/Payment/Utils.js
user: login: arindam-sahoo
body: It does not support NTID for Testing Environments, not sure about Prod, I checked it whether a Saved Payment Method, whether it has a NTID Id or not, it does not, and as suggested by @likhinbopanna, if there is not a NTID for its Saved Payment Method, its not gonna support NTID in that Env.
created_at: 2025-04-15T06:39:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: pixincreate
body: ```suggestion
const successfulNo3DSCardDetails = {
  card_number: "4009348888881881",
  card_exp_month: "10",
  card_exp_year: "30",
  card_holder_name: "Juspay Hyperswitch",
  card_cvc: "737",
};

const successful3DSCardDetails = {
  ...successfulNo3DSCardDetails,
  card_number: "4012000077777777",
};
```

other than the card number, rest all are same. this would suffice?
created_at: 2025-04-15T17:59:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const paymentMethodDataNo3DSResponse = {
+  card: {
+    last4: "1881",
+    card_type: "CREDIT",
+    card_network: "Visa",
+    card_issuer: "PT BANK HSBC INDONESIA",
+    card_issuing_country: "INDONESIA",
+    card_isin: "400934",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const paymentMethodData3DSResponse = {
+  card: {
+    last4: "7777",
+    card_type: "DEBIT",
+    card_network: "Visa",
+    card_issuer: "VISA PRODUCTION SUPPORT CLIENT BID 1",
+    card_issuing_country: "UNITEDSTATES",
+    card_isin: "401200",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    Capture: {
+      Request: {
+        amount_to_capture: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 6000,
+        },
+      },
+    },
+    PartialCapture: {
+      Request: {
+        amount_to_capture: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "partially_captured",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 2000,
+        },
+      },
+    },
+    Refund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: pixincreate
body: this response body has been repeated multiple times, i feel, this can also be reused.
created_at: 2025-04-15T18:00:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: arindam-sahoo
body: Ohh, Didn't know how to do this on JS. Still getting the hang of this language!
created_at: 2025-04-16T03:59:11Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,587 @@
+import { customerAcceptance } from "./Commons";
+
+const successfulNo3DSCardDetails = {
+  card_number: "4009348888881881",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const successful3DSCardDetails = {
+  card_number: "4012000077777777",
+  card_exp_month: "10",
+  card_exp_year: "30",
+  card_holder_name: "Juspay Hyperswitch",
+  card_cvc: "737",
+};
+
+const singleUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    single_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const multiUseMandateData = {
+  customer_acceptance: customerAcceptance,
+  mandate_type: {
+    multi_use: {
+      amount: 8000,
+      currency: "USD",
+    },
+  },
+};
+
+const paymentMethodDataNo3DSResponse = {
+  card: {
+    last4: "1881",
+    card_type: "CREDIT",
+    card_network: "Visa",
+    card_issuer: "PT BANK HSBC INDONESIA",
+    card_issuing_country: "INDONESIA",
+    card_isin: "400934",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+const paymentMethodData3DSResponse = {
+  card: {
+    last4: "7777",
+    card_type: "DEBIT",
+    card_network: "Visa",
+    card_issuer: "VISA PRODUCTION SUPPORT CLIENT BID 1",
+    card_issuing_country: "UNITEDSTATES",
+    card_isin: "401200",
+    card_extended_bin: null,
+    card_exp_month: "10",
+    card_exp_year: "30",
+    card_holder_name: "Juspay Hyperswitch",
+    payment_checks: null,
+    authentication_data: null,
+  },
+  billing: null,
+};
+
+export const connectorDetails = {
+  card_pm: {
+    PaymentIntent: {
+      Request: {
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+        },
+      },
+    },
+    No3DSAutoCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    PaymentIntentWithShippingCost: {
+      Request: {
+        currency: "USD",
+        shipping_cost: 50,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_payment_method",
+          shipping_cost: 50,
+        },
+      },
+    },
+    PaymentConfirmWithShippingCost: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          shipping_cost: 50,
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    "3DSAutoCapture": {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successful3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_customer_action",
+          payment_method_data: paymentMethodData3DSResponse,
+        },
+      },
+    },
+    No3DSManualCapture: {
+      Request: {
+        payment_method: "card",
+        payment_method_data: {
+          card: successfulNo3DSCardDetails,
+        },
+        currency: "USD",
+        customer_acceptance: null,
+        setup_future_usage: "on_session",
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "requires_capture",
+          payment_method_data: paymentMethodDataNo3DSResponse,
+        },
+      },
+    },
+    Capture: {
+      Request: {
+        amount_to_capture: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "succeeded",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 6000,
+        },
+      },
+    },
+    PartialCapture: {
+      Request: {
+        amount_to_capture: 2000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "partially_captured",
+          amount: 6000,
+          amount_capturable: 0,
+          amount_received: 2000,
+        },
+      },
+    },
+    Refund: {
+      Request: {
+        amount: 6000,
+      },
+      Response: {
+        status: 200,
+        body: {
+          status: "failed",
+          error_message:
+            "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
+        },
+      },
path: cypress-tests/cypress/e2e/configs/Payment/Braintree.js
user: login: arindam-sahoo
body: Was thinking of using
```js
const unsettledTransactionRefundBody = {
  status: "failed",
  error_message:
    "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
}
```
So should I use this ☝️, or 👇
```js
const unsettledTransactionRefundResponse = {
  status: 200,
  body: {
    status: "failed",
    error_message:
      "Cannot refund or reverse unless the transaction status is SETTLING or SETTLED.",
  },
}
```
created_at: 2025-04-16T04:07:45Z
author_association: CONTRIBUTOR

PR comments:
user: login: semanticdiff-com[bot]
created_at: 2025-02-13T11:25:03Z
body: Review changes with &nbsp;<a href="https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes"><picture><source media="(prefers-color-scheme: dark)" srcset="https://app.semanticdiff.com/images/github_button.svg?theme=dark&smaller=4"><source media="(prefers-color-scheme: light)" srcset="https://app.semanticdiff.com/images/github_button.svg?theme=light&smaller=4"><img src="https://app.semanticdiff.com/images/github_button.svg?theme=light&smaller=4" align="center" alt="SemanticDiff"></picture></a>
<details>
<summary>Changed Files</summary>
<br/>

| File | Status |
| :--- | :---   |
| [<img src="https://app.semanticdiff.com/static/file-icons/javascript.svg" width="20" height="20" align="center">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/support/commands.js)&nbsp;&nbsp;[cypress\-tests/cypress/support/commands\.js](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/support/commands.js) | [<img src="https://app.semanticdiff.com/images/progressbar.svg?progress=94">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/support/commands.js) &nbsp;94% smaller |
| [<img src="https://app.semanticdiff.com/static/file-icons/javascript.svg" width="20" height="20" align="center">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Utils.js)&nbsp;&nbsp;[cypress\-tests/cypress/e2e/configs/Payment/Utils\.js](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Utils.js) | [<img src="https://app.semanticdiff.com/images/progressbar.svg?progress=1">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Utils.js) &nbsp;1% smaller |
| [<img src="https://app.semanticdiff.com/static/file-icons/javascript.svg" width="20" height="20" align="center">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Braintree.js)&nbsp;&nbsp;[cypress\-tests/cypress/e2e/configs/Payment/Braintree\.js](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Braintree.js) | [<img src="https://app.semanticdiff.com/images/progressbar.svg?progress=0">](https://app.semanticdiff.com/gh/juspay/hyperswitch/pull/7266/changes#cypress-tests/cypress/e2e/configs/Payment/Braintree.js) &nbsp;0% smaller |

</details>
author_association: NONE
user: login: arindam-sahoo
created_at: 2025-04-04T06:24:06Z
body: Yesterday, I added Payment Method Data Assertions in all the places where cards were used, and some test cases failed. I referenced the configs of Stripe, and saw that the Payment Method Data were not checked in the following configs:

- `MandateMultiUseNo3DSAutoCapture`
- `MandateMultiUseNo3DSManualCapture`
- `MandateSingleUseNo3DSAutoCapture`
- `MandateSingleUseNo3DSManualCapture`
- `ZeroAuthMandate`
- `SaveCardUseNo3DSAutoCapture`
- `SaveCardUseNo3DSManualCapture`
- `PaymentMethodIdMandate3DSAutoCapture`
- `PaymentMethodIdMandate3DSManualCapture`
- `PaymentMethodIdMandate3DSAutoCapture`

If the checks are added, the test cases are failing although payment method data are same in actual and expected. So, knowing why the checks are not there in Stripe's configs will actually help me get a lead.
author_association: CONTRIBUTOR