Issue:
[FEATURE] Checkout.com support for Applepay, Googlepay and Webhooks

### Feature Description

Scope:
- [ ] Add support for Applepay, Googlepay digital wallets #875 
- [ ] Enable tokenization for respective Googlepay/ Applepay endpoint to make wallet payment #875 
- [ ] Webhook support for asynchronous payment status #875 
- [ ] Webhook support for asynchronous refund status #875 
- [ ] Webhook support for asynchronous dispute status #875 




### Possible Implementation

In order to ensure that the payment flow is agnostic to the processor, this will need integration of pre-decrypted Applepay and Googlepay flow

Reference links:
https://www.checkout.com/docs/payments/payment-methods/google-pay/pay-with-a-pre-decrypted-google-pay-token
https://www.checkout.com/docs/payments/payment-methods/apple-pay/pay-with-a-pre-decrypted-apple-pay-token

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

- [X] I checked and didn't find 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?

None

Resolution:
<think>
PR Context:
- Title: feat(connector): [Checkout] add GooglePay, ApplePay and Webhooks support 
- Merged: 2023-04-20T21:47:04Z
- Files changed: 8 files
- Commits: 14 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [X] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates

## Description
<!-- Describe your changes in detail -->

- Added Wallets ( GooglePay, ApplePay ) and Webhooks support for [checkout](https://www.checkout.com/docs) 
- Introduced tokenization and then called the respective endpoint to make wallet payment [GooglePay](https://www.checkout.com/docs/payments/payment-methods/google-pay
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [Checkout] add GooglePay, ApplePay and Webhooks support  (#875)
Co-authored-by: Aru
Files to modify:


**crates/router/src/connector/checkout.rs**
  Add:
    - function: private::build_headers
    - impl: impl ConnectorCommonExt<Flow, Request, Response> for Checkout

**crates/router/src/connector/checkout/transformers.rs**
  Remove:
    - enum: pub::Source
  Add:
    - function: private::try_from
    - function: private::try_from
    - function: pub::is_refund_event
    - function: pub::is_chargeback_event
    - function: private::from
    - function: private::from
    - struct: pub::CheckoutGooglePayData
    - struct: pub::CheckoutApplePayData
    - struct: pub::CheckoutApplePayHeader
    - struct: pub::CheckoutTokenResponse
    - struct: pub::WalletSource
    - struct: pub::CheckoutWebhookData
    - struct: pub::CheckoutWebhookBody
    - struct: pub::CheckoutWebhookObjectResource
    - enum: pub::TokenRequest
    - enum: pub::CheckoutSourceTypes
    - enum: pub::CheckoutTxnType
    - impl: impl TryFrom<&types::TokenizationRouterData> for TokenRequest
    - impl: impl TryFrom<types::ResponseRouterData<F, CheckoutTokenResponse, T, types::PaymentsResponseData>> for types::RouterData<F, T, types::PaymentsResponseData>
    - impl: impl From<CheckoutTxnType> for api::IncomingWebhookEvent
    - impl: impl From<CheckoutTxnType> for api_models::enums::DisputeStage

**crates/router/src/connector/utils.rs**
  Add:
    - function: private::get_payment_method_token

**crates/router/tests/connectors/checkout.rs**
  Add:
    - function: private::get_data
    - function: private::get_auth_token
    - function: private::get_default_payment_info
    - function: private::payment_method_details
    - function: private::should_capture_authorized_payment
    - function: private::should_partially_capture_authorized_payment
    - function: private::should_sync_authorized_payment
    - function: private::should_void_authorized_payment
    - impl: impl ConnectorActions for CheckoutTest

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