Issue:
[FEATURE] : [Billwerk] Add Payment and Refund Flows

### Feature Description

Add all the payment flows for non-3ds cards:
Authorise, Capture, Void, Psync
And the refund flows: 
Refund and Rsync

### Possible Implementation

Add all the payment flows for non-3ds cards:
Authorise, Capture, Void, Psync
And the refund flows: 
Refund and Rsync

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

Yes, I am willing to submit a PR!

Resolution:
<think>
PR Context:
- Title: feat(connector): [billwerk] implement payment and refund flows
- Merged: 2024-04-01T14:31:48Z
- Files changed: 20 files
- Commits: 25 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 -->
implement all the basic flows for Billwerk (Reepay):

- [Authorise/Charge](https://optimize-docs.billwerk.com/reference/createcharge)
- [Capture](https://optimize-docs.billwerk.com/reference/settlecharge)
- [Void](https://optimize-docs.bil
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): [billwerk] implement payment and refund flows (#4245)
Co-authored-by: hyperswitch-b
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/connector/billwerk.rs**
  Remove:
    - impl: impl ConnectorIntegration<
        api::PaymentMethodToken,
        types::PaymentMethodTokenizationData,
        types::PaymentsResponseData,
    > for Billwerk
  Add:
    - 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_5xx_error_response
    - function: private::get_5xx_error_response
    - function: private::get_5xx_error_response
    - function: private::get_5xx_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_5xx_error_response
    - function: private::get_5xx_error_response
    - impl: impl ConnectorIntegration<
        api::PaymentMethodToken,
        types::PaymentMethodTokenizationData,
        types::PaymentsResponseData,
    > for Billwerk

**crates/router/src/connector/billwerk/transformers.rs**
  Remove:
    - struct: pub::BillwerkPaymentsRequest
  Add:
    - function: private::try_from
    - function: private::try_from
    - struct: pub::BillwerkAuthType
    - struct: pub::BillwerkTokenRequest
    - struct: pub::BillwerkCaptureRequest
    - enum: pub::BillwerkTokenRequestIntent
    - enum: pub::BillwerkStrongAuthRule
    - enum: pub::BillwerkPaymentState
    - enum: pub::RefundState
    - impl: impl TryFrom<&BillwerkRouterData<&types::PaymentsCaptureRouterData>> for BillwerkCaptureRequest

**crates/router/src/connector/utils.rs**
  Add:
    - function: private::get_optional_billing_line1
    - function: private::get_optional_billing_line2
    - function: private::get_optional_billing_city
    - function: private::get_optional_billing_country
    - function: private::get_optional_billing_zip
    - function: private::get_optional_billing_state
    - function: private::get_optional_billing_first_name
    - function: private::get_optional_billing_last_name

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

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

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