Issue:
[REFACTOR] Worldpay payments integration

### Feature Description

WorldPay payments integration currently makes use of modular APIs which gives more control over the integration. This approach is not best compatible with HyperSwitch due to WP's 3DS flows - which requires sending PAN (card numbers) in multiple places. For `on_session` transactions, this would contribute to the added complexity since data is not stored in such transactions (or stored for ~15mins in redis cache).

Migrating to WP's standard payments API follows payment resource creation in an uniform way.

### Possible Implementation

Migrate from modular APIs [[ref](https://developer.worldpay.com/products/access/card-payments)] to standard payment APIs [[ref](https://developer.worldpay.com/products/access/payments/openapi)].

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

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

### Have you read the Contributing Guidelines?

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

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!

Resolution:
<think>
PR Context:
- Title: feat(connector): [worldpay] add support for mandates
- Merged: 2024-11-08T13:37:39Z
- Files changed: 9 files
- Commits: 16 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
Described in #6316 point `#6`


### 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.

F
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [worldpay] add support for mandates (#6479)
Co-authored-by: hyperswitch-bot[bot] <1
Files to modify:


**crates/hyperswitch_connectors/src/connectors/worldpay.rs**
  Add:
    - function: private::validate_mandate_payment
    - function: private::is_webhook_source_verification_mandatory
    - function: private::get_headers
    - function: private::get_content_type
    - function: private::get_url
    - function: private::get_request_body

**crates/hyperswitch_connectors/src/connectors/worldpay/requests.rs**
  Add:
    - struct: pub::TokenCreation
    - struct: pub::CustomerAgreement
    - enum: pub::TokenCreationType
    - enum: pub::CustomerAgreementType
    - enum: pub::StoredCardUsageType
    - enum: pub::ThreeDsPreference

**crates/hyperswitch_connectors/src/connectors/worldpay/response.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/connectors/worldpay/transformers.rs**
  Add:
    - function: private::try_from
    - function: private::get_settlement_info
    - function: private::get_return_url
    - function: private::get_auth_type
    - function: private::get_browser_info
    - function: private::get_payment_method_data
    - function: private::get_setup_future_usage
    - function: private::get_off_session
    - function: private::get_mandate_id
    - function: private::get_currency
    - function: private::get_optional_billing_address
    - function: private::get_connector_meta_data
    - function: private::get_payment_method
    - function: private::get_payment_method_type
    - function: private::get_connector_request_reference_id
    - function: private::get_is_mandate_payment
    - function: private::get_return_url
    - function: private::get_auth_type
    - function: private::get_browser_info
    - function: private::get_payment_method_data
    - function: private::get_setup_future_usage
    - function: private::get_off_session
    - function: private::get_mandate_id
    - function: private::get_currency
    - function: private::get_optional_billing_address
    - function: private::get_connector_meta_data
    - function: private::get_payment_method
    - function: private::get_payment_method_type
    - function: private::get_connector_request_reference_id
    - function: private::get_is_mandate_payment
    - function: private::get_settlement_info
    - function: private::create_three_ds_request
    - function: private::get_token_and_agreement
    - impl: impl TryFrom<Option<&pii::SecretSerdeValue>> for WorldpayConnectorMetadataObject
    - impl: impl WorldpayPaymentsRequestData for RouterData<SetupMandate, SetupMandateRequestData, PaymentsResponseData>
    - impl: impl WorldpayPaymentsRequestData for RouterData<Authorize, PaymentsAuthorizeData, PaymentsResponseData>

**crates/hyperswitch_connectors/src/utils.rs**
  Add:
    - function: private::get_router_return_url

**crates/hyperswitch_domain_models/src/errors/api_error_response.rs**
  Modify existing code

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

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

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