Issue:
fix(mandate): add mandate_id column in payment_attempt table

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates

## Description
This change includes
- Adding a new column `mandate_id` in the table `payment_attempt`
- Similarly, adding `mandate_id` field in `PaymentAttempt` structs (which include `New`, `Update` variants)
- Storing `mandate_id`, if generated during payment creation, to the `PaymentAttempt` table (in `PostUpdateTracker`)
<!-- Describe your changes in detail -->


### Additional Changes

- [x] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!-- Provide links to the files with corresponding changes -->

## Motivation and Context
Originally, we didn't have any way to link a payment that is made to a specific mandate. Which makes it impossible to get the related mandate_id while performing a payment sync operation. This change will allow, the payments core to have access to the mandate that is related to the specific payment attempt while performing payment sync and further mandate related functionalities.
<!--
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 its 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)?
-->


## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed submitted code
- [ ] I added unit tests for my changes where possible
- [ ] I added a [CHANGELOG](/CHANGELOG.md) entry if applicable


Resolution:
<think>
PR Context:
- Title: feat(connector): [Bluesnap] add cards 3DS support 
- Merged: 2023-05-08T13:59:01Z
- Files changed: 15 files
- Commits: 17 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [X] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Updating support for [Bluesnap](https://developers.bluesnap.com/v8976-JSON/reference/bluesnap-payment-api-json) payment gateway
Payment Method: card
Flow: [3DS](https://developers.bluesnap.com/reference/3-d-secure-for-api#3-d-secure-with-pla
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [Bluesnap] add cards 3DS support  (#1057)
Co-authored-by: Jagan Elavarasan <jaganel
Files to modify:


**crates/api_models/src/payments.rs**
  Modify existing code

**crates/router/src/compatibility/wrap.rs**
  Modify existing code

**crates/router/src/connector/authorizedotnet.rs**
  Modify existing code

**crates/router/src/connector/bluesnap.rs**
  Add:
    - function: private::get_headers
    - function: private::get_content_type
    - function: private::get_url
    - function: private::get_request_body
    - function: private::build_request
    - function: private::handle_response
    - function: private::get_error_response
    - function: private::get_error_response
    - function: private::get_headers
    - function: private::get_content_type
    - function: private::get_url
    - function: private::get_request_body
    - function: private::build_request
    - function: private::get_flow_type
    - impl: impl api::ConnectorCustomer for Bluesnap
    - impl: impl ConnectorIntegration<
        api::CreateConnectorCustomer,
        types::ConnectorCustomerData,
        types::PaymentsResponseData,
    > for Bluesnap
    - impl: impl api::PaymentsCompleteAuthorize for Bluesnap
    - impl: impl services::ConnectorRedirectResponse for Bluesnap

**crates/router/src/connector/bluesnap/transformers.rs**
  Add:
    - function: private::try_from
    - struct: pub::BluesnapThreeDSecureInfo
    - impl: impl TryFrom<&types::PaymentsCompleteAuthorizeRouterData> for BluesnapPaymentsRequest

**crates/router/src/connector/utils.rs**
  Add:
    - function: private::get_connector_customer_id
    - function: pub::get_http_header

**crates/router/src/core/errors.rs**
  Modify existing code

**crates/router/src/core/payments.rs**
  Modify existing code

**crates/router/src/core/payments/flows.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_start.rs**
  Modify existing code

**crates/router/src/core/payments/transformers.rs**
  Modify existing code

**crates/router/src/services/api.rs**
  Modify existing code

**crates/router/src/types.rs**
  Modify existing code

**crates/router/src/utils.rs**
  Add:
    - function: pub::to_currency_base_unit
    - function: pub::to_currency_base_unit_asf64