Issue:
[FEATURE] : Billwerk payments integration 

### Feature Description

Billwerk Payments is a payment gateway provider focused on Northern Europe countries.

### Possible Implementation

Product: [https://www.billwerk.plus/payments/](https://www.billwerk.plus/payments/)
Docs: [https://docs.reepay.com/](https://docs.reepay.com/)

### 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?

None

Resolution:
<think>
PR Context:
- Title: feat(connector): [billwerk] add connector template code
- Merged: 2024-03-27T08:22:28Z
- Files changed: 20 files
- Commits: 12 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 -->
Add Billwerk Template connector code
https://reference.reepay.com/api/

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [x] This PR modifies application configuration/environm
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [billwerk] add connector template code (#4123)
Co-authored-by: hyperswitch-bot[bot]
Files to modify:


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

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

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

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

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

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

**crates/router/src/connector/billwerk/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::BillwerkRouterData
    - struct: pub::BillwerkPaymentsRequest
    - struct: pub::BillwerkCard
    - struct: pub::BillwerkAuthType
    - struct: pub::BillwerkPaymentsResponse
    - struct: pub::BillwerkRefundRequest
    - struct: pub::RefundResponse
    - struct: pub::BillwerkErrorResponse
    - enum: pub::BillwerkPaymentStatus
    - enum: pub::RefundStatus
    - impl: impl TryFrom<(
        &types::api::CurrencyUnit,
        types::storage::enums::Currency,
        i64,
        T,
    )> for BillwerkRouterData<T>
    - impl: impl TryFrom<&BillwerkRouterData<&types::PaymentsAuthorizeRouterData>> for BillwerkPaymentsRequest
    - impl: impl TryFrom<&types::ConnectorAuthType> for BillwerkAuthType
    - impl: impl From<BillwerkPaymentStatus> for enums::AttemptStatus
    - impl: impl TryFrom<types::ResponseRouterData<F, BillwerkPaymentsResponse, T, types::PaymentsResponseData>> for types::RouterData<F, T, types::PaymentsResponseData>
    - impl: impl TryFrom<&BillwerkRouterData<&types::RefundsRouterData<F>>> for BillwerkRefundRequest
    - 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/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/billwerk.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::BillwerkTest
    - impl: impl ConnectorActions for BillwerkTest
    - impl: impl utils::Connector for BillwerkTest

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

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