Issue:
[FEATURE]: [Cybersource] Currency Unit Conversion

### :memo: Feature Description

- Each currency can be described in terms of base or minor units. 
- For instance, when dealing with USD currency, the Cent is considered as the minor unit, while the Dollar is considered the base unit. 
- In Hyperswitch, the amount value is expected to be always provided in minor units. 
- For example: In USD, If the amount is 1 in base unit (Dollar), then it will be equivalent to 100 in minor units (Cent)
- Some of the connectors integrated require the amount to be converted to a desirable unit before being passed to them. 
- We have functions `to_currency_base_unit` and `to_currency_lower_unit` in place to convert the minor unit amount to its decimal equivalent and vice versa. These conversions are handled explicitly based on the connector.


### :hammer: Possible Implementation

- ConnectorCommon trait have been implemented for the connector. 
- This trait contains `get_currency_unit` method. This method needs to be implemented. 
- It will define what type of conversion needs to be done during `connector_router_data` creation. Concurrently handle the creation of `connector_router_data` to be passed for the connector request body creation.
- You can check this PR for further reference https://github.com/juspay/hyperswitch/pull/2196

:bookmark: Note: All the changes needed should be contained within `hyperswitch/crates/router/src/connector/`

### :package: Have you spent some time checking if this feature request has been raised before?

- [X] I checked and didn't find a similar issue

### :package: Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### :sparkles: Are you willing to submit a PR?


Resolution:
<think>
PR Context:
- Title: refactor(connector): [CyberSource] Enhance currency Mapping with ConnectorCurrencyCommon Trait
- Merged: 2023-10-25T09:38:44Z
- Files changed: 3 files
- Commits: 10 commits

Implementation approach:
## Type of Change

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
This PR implements `get_currency_unit` for cybersource to convert payments from `Base` to `Minor` it also implements router data to handle the conversion.

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** refactor(connector): [CyberSource] Enhance currency Mapping with ConnectorCurrencyCommon Trait (#262
Files to modify:


**crates/router/src/connector/cybersource.rs**
  Add:
    - function: private::get_currency_unit

**crates/router/src/connector/cybersource/transformers.rs**
  Add:
    - function: private::try_from
    - struct: pub::CybersourceRouterData
    - impl: impl TryFrom<(
        &types::api::CurrencyUnit,
        types::storage::enums::Currency,
        i64,
        T,
    )> for CybersourceRouterData<T>

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