Issue:
[FEATURE] Add Facilitapay connector

Facilitapay connector is yet another payment processor.

Docs: https://sandbox-portal.facilitapay.com/#/docs

Resolution:
<think>
PR Context:
- Title: feat(connector): Introduce connector template code for Facilitapay
- Merged: 2025-03-27T13:33:42Z
- Files changed: 24 files
- Commits: 3 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 -->

This PR introduces template code for new connector named `Facilitapay`.

Docs: https://sandbox-portal.facilitapay.com/#/docs

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema

</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): Introduce connector template code for Facilitapay (#7631)
Files to modify:


**crates/common_enums/src/connector_enums.rs**
  Modify existing code

**crates/connector_configs/src/connector.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/connectors.rs**
  Add:
    - mod: pub::facilitapay

**crates/hyperswitch_connectors/src/connectors/facilitapay.rs**
  Add:
    - function: pub::new
    - function: private::build_headers
    - function: private::id
    - function: private::get_currency_unit
    - function: private::common_get_content_type
    - function: private::base_url
    - function: private::get_auth_header
    - function: private::build_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::handle_response
    - function: private::get_error_response
    - function: private::get_headers
    - function: private::get_content_type
    - function: private::get_url
    - function: private::build_request
    - function: private::handle_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::handle_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::handle_response
    - function: private::get_error_response
    - function: private::get_headers
    - function: private::get_content_type
    - function: private::get_url
    - function: private::build_request
    - function: private::handle_response
    - function: private::get_error_response
    - function: private::get_webhook_object_reference_id
    - function: private::get_webhook_event_type
    - function: private::get_webhook_resource_object
    - struct: pub::Facilitapay
    - impl: impl Facilitapay
    - impl: impl api::Payment for Facilitapay
    - impl: impl api::PaymentSession for Facilitapay
    - impl: impl api::ConnectorAccessToken for Facilitapay
    - impl: impl api::MandateSetup for Facilitapay
    - impl: impl api::PaymentAuthorize for Facilitapay
    - impl: impl api::PaymentSync for Facilitapay
    - impl: impl api::PaymentCapture for Facilitapay
    - impl: impl api::PaymentVoid for Facilitapay
    - impl: impl api::Refund for Facilitapay
    - impl: impl api::RefundExecute for Facilitapay
    - impl: impl api::RefundSync for Facilitapay
    - impl: impl api::PaymentToken for Facilitapay
    - impl: impl ConnectorIntegration<PaymentMethodToken, PaymentMethodTokenizationData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorCommonExt<Flow, Request, Response> for Facilitapay
    - impl: impl ConnectorCommon for Facilitapay
    - impl: impl ConnectorValidation for Facilitapay
    - impl: impl ConnectorIntegration<Session, PaymentsSessionData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<AccessTokenAuth, AccessTokenRequestData, AccessToken> for Facilitapay
    - impl: impl ConnectorIntegration<SetupMandate, SetupMandateRequestData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<PSync, PaymentsSyncData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<Capture, PaymentsCaptureData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<Void, PaymentsCancelData, PaymentsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<Execute, RefundsData, RefundsResponseData> for Facilitapay
    - impl: impl ConnectorIntegration<RSync, RefundsData, RefundsResponseData> for Facilitapay
    - impl: impl webhooks::IncomingWebhook for Facilitapay
    - impl: impl ConnectorSpecifications for Facilitapay
    - mod: pub::transformers

**crates/hyperswitch_connectors/src/connectors/facilitapay/transformers.rs**
  Add:
    - function: private::from
    - function: private::try_from
    - function: private::try_from
    - function: private::from
    - function: private::try_from
    - function: private::try_from
    - function: private::from
    - function: private::try_from
    - function: private::try_from
    - struct: pub::FacilitapayRouterData
    - struct: pub::FacilitapayPaymentsRequest
    - struct: pub::FacilitapayCard
    - struct: pub::FacilitapayAuthType
    - struct: pub::FacilitapayPaymentsResponse
    - struct: pub::FacilitapayRefundRequest
    - struct: pub::RefundResponse
    - struct: pub::FacilitapayErrorResponse
    - enum: pub::FacilitapayPaymentStatus
    - enum: pub::RefundStatus
    - impl: impl From<(StringMinorUnit, T)> for FacilitapayRouterData<T>
    - impl: impl TryFrom<&FacilitapayRouterData<&PaymentsAuthorizeRouterData>> for FacilitapayPaymentsRequest
    - impl: impl TryFrom<&ConnectorAuthType> for FacilitapayAuthType
    - impl: impl From<FacilitapayPaymentStatus> for common_enums::AttemptStatus
    - impl: impl TryFrom<ResponseRouterData<F, FacilitapayPaymentsResponse, T, PaymentsResponseData>> for RouterData<F, T, PaymentsResponseData>
    - impl: impl TryFrom<&FacilitapayRouterData<&RefundsRouterData<F>>> for FacilitapayRefundRequest
    - impl: impl From<RefundStatus> for enums::RefundStatus
    - impl: impl TryFrom<RefundsResponseRouterData<Execute, RefundResponse>> for RefundsRouterData<Execute>
    - impl: impl TryFrom<RefundsResponseRouterData<RSync, RefundResponse>> for RefundsRouterData<RSync>

**crates/hyperswitch_connectors/src/default_implementations.rs**
  Modify existing code

**crates/hyperswitch_connectors/src/default_implementations_v2.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/configs.rs**
  Modify existing code

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

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

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

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

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

**crates/router/tests/connectors/facilitapay.rs**
  Add:
    - function: private::get_data
    - function: private::get_auth_token
    - function: private::get_name
    - function: private::get_default_payment_info
    - function: private::payment_method_details
    - function: private::should_only_authorize_payment
    - 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
    - function: private::should_refund_manually_captured_payment
    - function: private::should_partially_refund_manually_captured_payment
    - function: private::should_sync_manually_captured_refund
    - function: private::should_make_payment
    - function: private::should_sync_auto_captured_payment
    - function: private::should_refund_auto_captured_payment
    - function: private::should_partially_refund_succeeded_payment
    - function: private::should_refund_succeeded_payment_multiple_times
    - function: private::should_sync_refund
    - function: private::should_fail_payment_for_incorrect_cvc
    - function: private::should_fail_payment_for_invalid_exp_month
    - function: private::should_fail_payment_for_incorrect_expiry_year
    - function: private::should_fail_void_payment_for_auto_capture
    - function: private::should_fail_capture_for_invalid_payment
    - function: private::should_fail_for_refund_amount_higher_than_payment_amount
    - struct: private::FacilitapayTest
    - impl: impl ConnectorActions for FacilitapayTest
    - impl: impl utils::Connector for FacilitapayTest

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

**crates/test_utils/src/connector_auth.rs**
  Modify existing code