Issue:
feat(connector): [ACI] Currency Unit Conversion

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->


### 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.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
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 it is 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 --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the 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): [ProphetPay] Template generation
- Merged: 2023-10-19T08:02:13Z
- Files changed: 16 files
- Commits: 4 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 -->

Default connector template for prophetpay
### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [ProphetPay] Template generation (#2610)
Co-authored-by: Arjun Karthik <m.arjunkart
Files to modify:


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

**crates/router/src/configs/settings.rs**
  Modify existing code

**crates/router/src/connector.rs**
  Add:
    - mod: pub::prophetpay

**crates/router/src/connector/prophetpay.rs**
  Add:
    - 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::Prophetpay
    - impl: impl api::payments::MandateSetup for Prophetpay
    - impl: impl api::Payment for Prophetpay
    - impl: impl api::PaymentSession for Prophetpay
    - impl: impl api::ConnectorAccessToken for Prophetpay
    - impl: impl api::PaymentAuthorize for Prophetpay
    - impl: impl api::PaymentSync for Prophetpay
    - impl: impl api::PaymentCapture for Prophetpay
    - impl: impl api::PaymentVoid for Prophetpay
    - impl: impl api::Refund for Prophetpay
    - impl: impl api::RefundExecute for Prophetpay
    - impl: impl api::RefundSync for Prophetpay
    - impl: impl api::PaymentToken for Prophetpay
    - impl: impl ConnectorIntegration<
        api::PaymentMethodToken,
        types::PaymentMethodTokenizationData,
        types::PaymentsResponseData,
    > for Prophetpay
    - impl: impl ConnectorCommonExt<Flow, Request, Response> for Prophetpay
    - impl: impl ConnectorCommon for Prophetpay
    - impl: impl ConnectorValidation for Prophetpay
    - impl: impl ConnectorIntegration<api::Session, types::PaymentsSessionData, types::PaymentsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::AccessTokenAuth, types::AccessTokenRequestData, types::AccessToken> for Prophetpay
    - impl: impl ConnectorIntegration<
        api::SetupMandate,
        types::SetupMandateRequestData,
        types::PaymentsResponseData,
    > for Prophetpay
    - impl: impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::PaymentsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::PaymentsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsResponseData> for Prophetpay
    - impl: impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponseData> for Prophetpay
    - impl: impl api::IncomingWebhook for Prophetpay
    - mod: pub::transformers

**crates/router/src/connector/prophetpay/transformers.rs**
  Add:
    - function: private::try_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::ProphetpayRouterData
    - struct: pub::ProphetpayPaymentsRequest
    - struct: pub::ProphetpayCard
    - struct: pub::ProphetpayAuthType
    - struct: pub::ProphetpayPaymentsResponse
    - struct: pub::ProphetpayRefundRequest
    - struct: pub::RefundResponse
    - struct: pub::ProphetpayErrorResponse
    - enum: pub::ProphetpayPaymentStatus
    - enum: pub::RefundStatus
    - impl: impl TryFrom<(
        &types::api::CurrencyUnit,
        types::storage::enums::Currency,
        i64,
        T,
    )> for ProphetpayRouterData<T>
    - impl: impl TryFrom<&ProphetpayRouterData<&types::PaymentsAuthorizeRouterData>> for ProphetpayPaymentsRequest
    - impl: impl TryFrom<&types::ConnectorAuthType> for ProphetpayAuthType
    - impl: impl From<ProphetpayPaymentStatus> for enums::AttemptStatus
    - impl: impl TryFrom<
        types::ResponseRouterData<F, ProphetpayPaymentsResponse, T, types::PaymentsResponseData>,
    > for types::RouterData<F, T, types::PaymentsResponseData>
    - impl: impl TryFrom<&ProphetpayRouterData<&types::RefundsRouterData<F>>> for ProphetpayRefundRequest
    - impl: impl From<RefundStatus> for enums::RefundStatus
    - impl: impl TryFrom<types::RefundsResponseRouterData<api::Execute, RefundResponse>> for types::RefundsRouterData<api::Execute>
    - impl: impl TryFrom<types::RefundsResponseRouterData<api::RSync, RefundResponse>> for types::RefundsRouterData<api::RSync>

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

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

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

**crates/router/tests/connectors/prophetpay.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::ProphetpayTest
    - impl: impl ConnectorActions for ProphetpayTest
    - impl: impl utils::Connector for ProphetpayTest

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