Bug: [BUG] : payments response has `payment_method_billing` even if not passed in request.



### Bug Description

When a payment is created with `payment.billing`, in the response `payment.payment_method_data.billing` is also populated.

### Expected Behavior

`payment.pament_method_data.billing` should be empty or null.

### Actual Behavior

`payment.payment_method_data.billing` is not null, whereas it has the data of `payment.billing`

### Steps To Reproduce

- Create a payment using the below curl
```bash
curl --location 'https://integ-api.hyperswitch.io/payments' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_digX9Cd2d0ONVCCt2x8B1lgLLorGkw18S2gOR9fLzMu72hQmPpM7I01ppNJJXzZ6' \
--data-raw '{
    "amount": 6540,
    "currency": "USD",
    "confirm": false,
    "capture_method": "automatic",
    "capture_on": "2022-09-10T10:11:12Z",
    "amount_to_capture": 6540,
    "customer_id": "cus_PAxm0MeCGM5TowgDKPc9",
    "email": "guest@example.com",
    "name": "John Doe",
    "phone": "999999999",
    "phone_country_code": "+65",
    "description": "Its my first payment request",
    "authentication_type": "no_three_ds",
    "return_url": "https://duck.com",
    "payment_method": "card",
    "setup_future_usage": "on_session",
    "customer_acceptance": {
		"acceptance_type": "online",
		"accepted_at": "2022-09-10T10:11:12Z",
		"online": {
			"ip_address": "123.32.25.123",
			"user_agent": "Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.119 Mobile Safari/537.36"
		}
	},
    "payment_method_type": "debit",
    "payment_method_data": {
        "card": {
            "card_number": "4242424242424242",
            "card_exp_month": "12",
            "card_exp_year": "26",
            "card_holder_name": "joseph Doe",
            "card_cvc": "123"
        }
    },
    "billing": {
        "address": {
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "city": "San Fransico",
            "state": "California",
            "zip": "94122",
            "country": "US",
            "first_name": "sundari",
            "last_name": "sundari"
        }
    },
    "shipping": {
        "address": {
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "city": "San Fransico",
            "state": "California",
            "zip": "94122",
            "country": "US",
            "first_name": "sundari",
            "last_name": "sundari"
        }
    },
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "metadata": {
        "udf1": "value1",
        "new_customer": "true",
        "login_date": "2019-09-10T10:11:12Z"
    }
}'
```

- The response should not have `payment.payment_method_data.billing`.
- The response should have `payment.billing`.


### Context For The Bug

_No response_

### Environment

Are you using hyperswitch hosted version? No

### Have you spent some time checking if this bug 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?

Yes, I am willing to submit a PR!
diff --git a/crates/router/src/core/payments.rs b/crates/router/src/core/payments.rs
index b8a4c5dfc67..fb53e484afd 100644
--- a/crates/router/src/core/payments.rs
+++ b/crates/router/src/core/payments.rs
@@ -2122,6 +2122,7 @@ pub mod payment_address {
     pub struct PaymentAddress {
         shipping: Option<api::Address>,
         billing: Option<api::Address>,
+        unified_payment_method_billing: Option<api::Address>,
         payment_method_billing: Option<api::Address>,
     }
 
@@ -2131,20 +2132,26 @@ pub mod payment_address {
             billing: Option<api::Address>,
             payment_method_billing: Option<api::Address>,
         ) -> Self {
-            let payment_method_billing = match (payment_method_billing, billing.clone()) {
-                (Some(payment_method_billing), Some(order_billing)) => Some(api::Address {
-                    address: payment_method_billing.address.or(order_billing.address),
-                    phone: payment_method_billing.phone.or(order_billing.phone),
-                    email: payment_method_billing.email.or(order_billing.email),
-                }),
-                (Some(payment_method_billing), None) => Some(payment_method_billing),
-                (None, Some(order_billing)) => Some(order_billing),
-                (None, None) => None,
-            };
+            // Merge the billing details field from both `payment.billing` and `payment.payment_method_data.billing`
+            // The unified payment_method_billing will be used as billing address and passed to the connector module
+            // This unification is required in order to provide backwards compatibility
+            // so that if `payment.billing` is passed it should be sent to the connector module
+            let unified_payment_method_billing =
+                match (payment_method_billing.clone(), billing.clone()) {
+                    (Some(payment_method_billing), Some(order_billing)) => Some(api::Address {
+                        address: payment_method_billing.address.or(order_billing.address),
+                        phone: payment_method_billing.phone.or(order_billing.phone),
+                        email: payment_method_billing.email.or(order_billing.email),
+                    }),
+                    (Some(payment_method_billing), None) => Some(payment_method_billing),
+                    (None, Some(order_billing)) => Some(order_billing),
+                    (None, None) => None,
+                };
 
             Self {
                 shipping,
                 billing,
+                unified_payment_method_billing,
                 payment_method_billing,
             }
         }
@@ -2154,6 +2161,10 @@ pub mod payment_address {
         }
 
         pub fn get_payment_method_billing(&self) -> Option<&api::Address> {
+            self.unified_payment_method_billing.as_ref()
+        }
+
+        pub fn get_request_payment_method_billing(&self) -> Option<&api::Address> {
             self.payment_method_billing.as_ref()
         }
 
diff --git a/crates/router/src/core/payments/transformers.rs b/crates/router/src/core/payments/transformers.rs
index 315ddd3b39b..73d780c0960 100644
--- a/crates/router/src/core/payments/transformers.rs
+++ b/crates/router/src/core/payments/transformers.rs
@@ -467,7 +467,10 @@ where
     let payment_method_data_response = payment_method_data.map(|payment_method_data| {
         api_models::payments::PaymentMethodDataResponseWithBilling {
             payment_method_data,
-            billing: payment_data.address.get_payment_method_billing().cloned(),
+            billing: payment_data
+                .address
+                .get_request_payment_method_billing()
+                .cloned(),
         }
     });
 
diff --git a/crates/router/src/types/transformers.rs b/crates/router/src/types/transformers.rs
index 006c4503ce1..e9082299ab1 100644
--- a/crates/router/src/types/transformers.rs
+++ b/crates/router/src/types/transformers.rs
@@ -583,7 +583,7 @@ impl<'a> ForeignFrom<&'a api_types::ConfigUpdate> for storage::ConfigUpdate {
 
 impl<'a> From<&'a domain::Address> for api_types::Address {
     fn from(address: &domain::Address) -> Self {
-        // If all the fields of address are none, then
+        // If all the fields of address are none, then pass the address as None
         let address_details = if address.city.is_none()
             && address.line1.is_none()
             && address.line2.is_none()
@@ -608,12 +608,19 @@ impl<'a> From<&'a domain::Address> for api_types::Address {
             })
         };
 
-        Self {
-            address: address_details,
-            phone: Some(api_types::PhoneDetails {
+        // If all the fields of phone are none, then pass the phone as None
+        let phone_details = if address.phone_number.is_none() && address.country_code.is_none() {
+            None
+        } else {
+            Some(api_types::PhoneDetails {
                 number: address.phone_number.clone().map(Encryptable::into_inner),
                 country_code: address.country_code.clone(),
-            }),
+            })
+        };
+
+        Self {
+            address: address_details,
+            phone: phone_details,
             email: address.email.clone().map(pii::Email::from),
         }
     }
diff --git a/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/event.test.js b/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/event.test.js
index d18cc474f87..cad157942d1 100644
--- a/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/event.test.js	
+++ b/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/event.test.js	
@@ -87,3 +87,11 @@ pm.test(
       .true;
   },
 );
+
+// Response body should not have "payment.billing"
+pm.test(
+  "[POST]::/payments - Content check if 'payment.billing' is null",
+  function () {
+    pm.expect(jsonData?.billing).to.be.null
+  },
+);
diff --git a/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/request.json b/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/request.json
index 7a755ed4e6e..83e3a58da2e 100644
--- a/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/request.json	
+++ b/postman/collection-dir/stripe/Flow Testcases/Happy Cases/Scenario29-Create payment with payment method billing/Payments - Create/request.json	
@@ -60,19 +60,6 @@
           "email": "example@juspay.in"
         }
       },
-      "billing": {
-        "address": {
-          "line1": "1467",
-          "line2": "Harrison Street",
-          "line3": "Harrison Street",
-          "city": "San Fransico",
-          "state": "California",
-          "zip": "94122",
-          "country": "US",
-          "first_name": "sundari",
-          "last_name": "sundari"
-        }
-      },
       "shipping": {
         "address": {
           "line1": "1467",
diff --git a/postman/collection-dir/stripe/QuickStart/Payments - Create/event.test.js b/postman/collection-dir/stripe/QuickStart/Payments - Create/event.test.js
index 3d51aaa49a8..93d36d988d4 100644
--- a/postman/collection-dir/stripe/QuickStart/Payments - Create/event.test.js	
+++ b/postman/collection-dir/stripe/QuickStart/Payments - Create/event.test.js	
@@ -97,3 +97,11 @@ pm.test(
       .true;
   },
 );
+
+// Response body should not have "payment_method_data.billing"
+pm.test(
+  "[POST]::/payments - Content check if 'payment_method_data.billing' should be null",
+  function () {
+    pm.expect(jsonData?.payment_method_data?.billing).to.be.null;
+  },
+);
diff --git a/postman/collection-json/stripe.postman_collection.json b/postman/collection-json/stripe.postman_collection.json
index c3d6371fd7d..46829047bd2 100644
--- a/postman/collection-json/stripe.postman_collection.json
+++ b/postman/collection-json/stripe.postman_collection.json
@@ -2451,6 +2451,14 @@
                   "      .true;",
                   "  },",
                   ");",
+                  "",
+                  "// Response body should not have \"payment_method_data.billing\"",
+                  "pm.test(",
+                  "  \"[POST]::/payments - Content check if 'payment_method_data.billing' should be null\",",
+                  "  function () {",
+                  "    pm.expect(jsonData?.payment_method_data?.billing).to.be.null;",
+                  "  },",
+                  ");",
                   ""
                 ],
                 "type": "text/javascript"
@@ -20865,6 +20873,14 @@
                           "      .true;",
                           "  },",
                           ");",
+                          "",
+                          "// Response body should not have \"payment.billing\"",
+                          "pm.test(",
+                          "  \"[POST]::/payments - Content check if 'payment.billing' is null\",",
+                          "  function () {",
+                          "    pm.expect(jsonData?.billing).to.be.null",
+                          "  },",
+                          ");",
                           ""
                         ],
                         "type": "text/javascript"
@@ -20890,7 +20906,7 @@
                           "language": "json"
                         }
                       },
-                      "raw": "{\"amount\":6540,\"currency\":\"USD\",\"confirm\":true,\"business_country\":\"US\",\"business_label\":\"default\",\"capture_method\":\"automatic\",\"capture_on\":\"2022-09-10T10:11:12Z\",\"amount_to_capture\":6540,\"customer_id\":\"bernard123\",\"email\":\"guest@example.com\",\"name\":\"John Doe\",\"phone\":\"999999999\",\"phone_country_code\":\"+65\",\"description\":\"Its my first payment request\",\"authentication_type\":\"no_three_ds\",\"return_url\":\"https://duck.com\",\"setup_future_usage\":\"on_session\",\"payment_method\":\"card\",\"payment_method_type\":\"debit\",\"payment_method_data\":{\"card\":{\"card_number\":\"4242424242424242\",\"card_exp_month\":\"01\",\"card_exp_year\":\"26\",\"card_holder_name\":\"joseph Doe\",\"card_cvc\":\"123\"},\"billing\":{\"address\":{\"line1\":\"1467\",\"line2\":\"Harrison Street\",\"line3\":\"Harrisoff Street\",\"city\":\"San Fransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"Narayan\",\"last_name\":\"Doe\"},\"email\":\"example@juspay.in\"}},\"billing\":{\"address\":{\"line1\":\"1467\",\"line2\":\"Harrison Street\",\"line3\":\"Harrison Street\",\"city\":\"San Fransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"sundari\",\"last_name\":\"sundari\"}},\"shipping\":{\"address\":{\"line1\":\"1467\",\"line2\":\"Harrison Street\",\"line3\":\"Harrison Street\",\"city\":\"San Fransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"sundari\",\"last_name\":\"sundari\"}},\"statement_descriptor_name\":\"joseph\",\"statement_descriptor_suffix\":\"JS\",\"metadata\":{\"udf1\":\"value1\",\"new_customer\":\"true\",\"login_date\":\"2019-09-10T10:11:12Z\"},\"routing\":{\"type\":\"single\",\"data\":\"stripe\"}}"
+                      "raw": "{\"amount\":6540,\"currency\":\"USD\",\"confirm\":true,\"business_country\":\"US\",\"business_label\":\"default\",\"capture_method\":\"automatic\",\"capture_on\":\"2022-09-10T10:11:12Z\",\"amount_to_capture\":6540,\"customer_id\":\"bernard123\",\"email\":\"guest@example.com\",\"name\":\"John Doe\",\"phone\":\"999999999\",\"phone_country_code\":\"+65\",\"description\":\"Its my first payment request\",\"authentication_type\":\"no_three_ds\",\"return_url\":\"https://duck.com\",\"setup_future_usage\":\"on_session\",\"payment_method\":\"card\",\"payment_method_type\":\"debit\",\"payment_method_data\":{\"card\":{\"card_number\":\"4242424242424242\",\"card_exp_month\":\"01\",\"card_exp_year\":\"26\",\"card_holder_name\":\"joseph Doe\",\"card_cvc\":\"123\"},\"billing\":{\"address\":{\"line1\":\"1467\",\"line2\":\"Harrison Street\",\"line3\":\"Harrisoff Street\",\"city\":\"San Fransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"Narayan\",\"last_name\":\"Doe\"},\"email\":\"example@juspay.in\"}},\"shipping\":{\"address\":{\"line1\":\"1467\",\"line2\":\"Harrison Street\",\"line3\":\"Harrison Street\",\"city\":\"San Fransico\",\"state\":\"California\",\"zip\":\"94122\",\"country\":\"US\",\"first_name\":\"sundari\",\"last_name\":\"sundari\"}},\"statement_descriptor_name\":\"joseph\",\"statement_descriptor_suffix\":\"JS\",\"metadata\":{\"udf1\":\"value1\",\"new_customer\":\"true\",\"login_date\":\"2019-09-10T10:11:12Z\"},\"routing\":{\"type\":\"single\",\"data\":\"stripe\"}}"
                     },
                     "url": {
                       "raw": "{{baseUrl}}/payments",

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

- [x] Bugfix

## Description
<!-- Describe your changes in detail -->
This PR fixes the inconsistency in payments response. More details can be found in the linked issue.


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


## 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)?
-->
- Added postman test cases
- Create a payment without `payment_method_billing`.
```bash
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_RenK6PvquNMkUrABw8BOK9A8zbl4Zh270G1zjFDc7KMGkc5XJY5mgAnv6iDbnKIn' \
--data-raw '{
    "amount": 6540,
    "currency": "USD",
    "confirm": true,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "card_number": "4000000000000101",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe",
            "card_cvc": "123"
        }
    },
    "billing": {
        "address": {
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrisoff Street",
            "city": "San Fransico",
            "state": "California",
            "zip": "94122",
            "country": "US",
            "first_name": "Narayan",
            "last_name": "Doe"
        },
        "email": "example@juspay.in"
    }
}'
```
- Response
```json
{
    "payment_id": "pay_ZjoHfCqtenTCCd0fBUEc",
    "merchant_id": "merchant_1710395888",
    "status": "succeeded",
    "amount": 6540,
    "net_amount": 6540,
    "amount_capturable": 0,
    "amount_received": 6540,
    "connector": "stripe",
    "client_secret": "pay_ZjoHfCqtenTCCd0fBUEc_secret_6SzPF2EQfTFVpedXJaqE",
    "created": "2024-03-15T09:37:12.679Z",
    "currency": "USD",
    "customer_id": 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": null,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "0101",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "400000",
            "card_extended_bin": "40000000",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe"
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrisoff Street",
            "zip": "94122",
            "state": "California",
            "first_name": "Narayan",
            "last_name": "Doe"
        },
        "phone": null,
        "email": "example@juspay.in"
    },
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "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": null,
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "pi_3OuXCPD5R7gDAGff05AoM0mg",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pi_3OuXCPD5R7gDAGff05AoM0mg",
    "payment_link": null,
    "profile_id": "pro_uMo0FiDFjCIAtLfdHK1J",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_NYBLuh0YMth90TWWn3k5",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-03-15T09:52:12.679Z",
    "fingerprint": null,
    "payment_method_id": null,
    "payment_method_status": null
}
```
- Create a payment with `payment_method_billing`.
```bash
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_RenK6PvquNMkUrABw8BOK9A8zbl4Zh270G1zjFDc7KMGkc5XJY5mgAnv6iDbnKIn' \
--data-raw '{
    "amount": 6540,
    "currency": "USD",
    "confirm": true,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "card_number": "4000000000000101",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe",
            "card_cvc": "123"
        },
        "billing": {
            "address": {
                "line1": "1467",
                "line2": "Harrison Street",
                "line3": "Harrisoff Street",
                "city": "San Fransico",
                "state": "California",
                "zip": "94122",
                "country": "US",
                "first_name": "Narayan",
                "last_name": "Doe"
            },
            "email": "example@juspay.in"
        }
    }
}'
```
- Response
```json
{
    "payment_id": "pay_4T2Q81rgIeAO7gOxpIQM",
    "merchant_id": "merchant_1710395888",
    "status": "succeeded",
    "amount": 6540,
    "net_amount": 6540,
    "amount_capturable": 0,
    "amount_received": 6540,
    "connector": "stripe",
    "client_secret": "pay_4T2Q81rgIeAO7gOxpIQM_secret_GXFlAK6whO0llT5nLQaf",
    "created": "2024-03-15T09:39:37.428Z",
    "currency": "USD",
    "customer_id": 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": null,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "0101",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "400000",
            "card_extended_bin": "40000000",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe"
        },
        "billing": {
            "address": {
                "city": "San Fransico",
                "country": "US",
                "line1": "1467",
                "line2": "Harrison Street",
                "line3": "Harrisoff Street",
                "zip": "94122",
                "state": "California",
                "first_name": "Narayan",
                "last_name": "Doe"
            },
            "phone": null,
            "email": "example@juspay.in"
        }
    },
    "payment_token": null,
    "shipping": null,
    "billing": null,
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "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": null,
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "pi_3OuXEkD5R7gDAGff1EBDw2dH",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pi_3OuXEkD5R7gDAGff1EBDw2dH",
    "payment_link": null,
    "profile_id": "pro_uMo0FiDFjCIAtLfdHK1J",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_NYBLuh0YMth90TWWn3k5",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-03-15T09:54:37.428Z",
    "fingerprint": null,
    "payment_method_id": null,
    "payment_method_status": null
}
```

- Create a payment with both billing.
```bash
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_RenK6PvquNMkUrABw8BOK9A8zbl4Zh270G1zjFDc7KMGkc5XJY5mgAnv6iDbnKIn' \
--data-raw '{
    "amount": 6540,
    "currency": "USD",
    "confirm": true,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "card_number": "4000000000000101",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe",
            "card_cvc": "123"
        },
        "billing": {
            "address": {
                "state": "Karnataka",
                "zip": "94122",
                "country": "IN",
                "first_name": "Narayan",
                "last_name": "Doe"
            },
            "email": "example@juspay.in"
        }
    },
    "billing": {
            "address": {
                "line1": "1467",
                "line2": "Harrison Street",
                "line3": "Harrisoff Street",
                "city": "San Fransico",
                "state": "California",
                "zip": "94122",
                "country": "US",
                "first_name": "Chaser",
                "last_name": "Dough"
            },
            "email": "example@juspay.in"
        }
}'
```

- Response ( both billing should be different )
```json
{
    "payment_id": "pay_nsM4uQjQ3S9QbrjBDhzj",
    "merchant_id": "merchant_1710395888",
    "status": "succeeded",
    "amount": 6540,
    "net_amount": 6540,
    "amount_capturable": 0,
    "amount_received": 6540,
    "connector": "stripe",
    "client_secret": "pay_nsM4uQjQ3S9QbrjBDhzj_secret_iV3hnUtQwC95aWDhEcV0",
    "created": "2024-03-15T09:40:56.482Z",
    "currency": "USD",
    "customer_id": 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": null,
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "0101",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "400000",
            "card_extended_bin": "40000000",
            "card_exp_month": "10",
            "card_exp_year": "25",
            "card_holder_name": "joseph Doe"
        },
        "billing": {
            "address": {
                "city": null,
                "country": "IN",
                "line1": null,
                "line2": null,
                "line3": null,
                "zip": "94122",
                "state": "Karnataka",
                "first_name": "Narayan",
                "last_name": "Doe"
            },
            "phone": null,
            "email": "example@juspay.in"
        }
    },
    "payment_token": null,
    "shipping": null,
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrisoff Street",
            "zip": "94122",
            "state": "California",
            "first_name": "Chaser",
            "last_name": "Dough"
        },
        "phone": null,
        "email": "example@juspay.in"
    },
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "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": null,
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "pi_3OuXG1D5R7gDAGff0sH2G6LI",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pi_3OuXG1D5R7gDAGff0sH2G6LI",
    "payment_link": null,
    "profile_id": "pro_uMo0FiDFjCIAtLfdHK1J",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_NYBLuh0YMth90TWWn3k5",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-03-15T09:55:56.482Z",
    "fingerprint": null,
    "payment_method_id": null,
    "payment_method_status": null
}
```

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