Issue:
Implement verify flow for Adyen

Implement Verify flow for the connectors. Verify flow makes sure if the card is valid or not for future payments like mandate etc.

Resolution:
<think>
PR Context:
- Title: feat(connector): Mandates for alternate payment methods via Adyen
- Merged: 2023-05-09T14:40:57Z
- Files changed: 23 files
- Commits: 30 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [X] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Add mandate support for gpay, apple_pay and klarna
Closes #1045 

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment va
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): Mandates for alternate payment methods via Adyen (#1046)
Co-authored-by: Manoj Ghor
Files to modify:


**crates/router/src/compatibility/stripe/errors.rs**
  Modify existing code

**crates/router/src/connector/adyen.rs**
  Add:
    - function: private::get_headers
    - function: private::get_url
    - function: private::get_request_body
    - function: private::build_request
    - function: private::handle_response
    - function: private::get_error_response

**crates/router/src/connector/adyen/transformers.rs**
  Add:
    - struct: pub::MandateData

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

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

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

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

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

**crates/router/src/core/mandate.rs**
  Add:
    - function: private::foreign_try_from
    - impl: impl ForeignTryFrom<Result<types::PaymentsResponseData, types::ErrorResponse>> for Option<pii::SecretSerdeValue>

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

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

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

**crates/router/src/types.rs**
  Remove:
    - impl: impl From<(&&mut RouterData<F1, T1, PaymentsResponseData>, T2)>
  Add:
    - function: private::from
    - impl: impl From<&VerifyRouterData> for PaymentsAuthorizeData
    - impl: impl From<(&RouterData<F1, T1, PaymentsResponseData>, T2)>

**crates/router/tests/connectors/adyen_ui.rs**
  Add:
    - function: private::should_make_adyen_gpay_payment
    - function: private::should_make_adyen_gpay_mandate_payment
    - function: private::should_make_adyen_gpay_zero_dollar_mandate_payment
    - function: private::should_make_adyen_klarna_mandate_payment
    - function: private::should_make_adyen_gpay_payment_test
    - function: private::should_make_adyen_gpay_mandate_payment_test
    - function: private::should_make_adyen_gpay_zero_dollar_mandate_payment_test
    - function: private::should_make_adyen_klarna_mandate_payment_test
    - struct: private::AdyenSeleniumTest
    - impl: impl SeleniumTest for AdyenSeleniumTest

**crates/router/tests/connectors/bambora.rs**
  Modify existing code

**crates/router/tests/connectors/forte.rs**
  Modify existing code

**crates/router/tests/connectors/main.rs**
  Add:
    - mod: private::adyen_ui

**crates/router/tests/connectors/nexinets.rs**
  Modify existing code

**crates/router/tests/connectors/paypal.rs**
  Modify existing code

**crates/router/tests/connectors/selenium.rs**
  Add:
    - function: private::is_text_present_now

**crates/router/tests/connectors/utils.rs**
  Modify existing code

**crates/router/tests/connectors/zen.rs**
  Modify existing code