Issue:
[REFACTOR]: [SHIFT4] Add amount conversion framework to Shift4

### :memo: Feature Description

Currently, amounts are represented as `i64` values throughout the application. We want to introduce a `Unit` struct that explicitly states the denomination. A new type, `MinorUnit`, has been added to standardize the flow of amounts across the application. This type will now be used by all the connector flows.

Rather than handling conversions in each connector, we will centralize the conversion logic in one place within the core of the application.

### :hammer: Possible Implementation

- For each connector, we need to create an amount conversion function. Connectors will specify the format they require, and the core framework will handle the conversion accordingly.
- Connectors should invoke the `convert` function to receive the amount in their required format.
- Refer to the [connector documentation](https://dev.shift4.com/docs/api#cards) to determine the required amount format for each connector.
- You can refer [this PR](https://github.com/juspay/hyperswitch/pull/4825) for more context.


🔖 Note: All the changes needed should be contained within `hyperswitch/crates/router/src/connector/` , `crates/router/src/types/api.rs` , `crates/router/tests/connectors/`


### :package: Have you spent some time checking if this feature request has been raised before?

- [ ] I checked and didn't find a similar issue

### :package: Have you read the Contributing Guidelines?

- [ ] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### :package: Submission Process:
- Ask the maintainers for assignment of the issue, you can request for assignment by commenting on the issue itself.
- Once assigned, submit a pull request (PR).
- Maintainers will review and provide feedback, if any. 
- Maintainers can unassign issues due to inactivity, [read more here](https://github.com/juspay/hyperswitch/wiki/Hacktoberfest-Contribution-Rules).

Refer [here](https://github.com/juspay/hyperswitch/blob/main/docs/TERMS_OF_CONTEST.md) for Terms and conditions for the contest.

###  :sparkles: Are you willing to submit a PR?


Resolution:
<think>
PR Context:
- Title: refactor(connector): add amount conversion framework to Shift4
- Merged: 2024-10-24T12:06:57Z
- Files changed: 4 files
- Commits: 4 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [X] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
This PR adds amount conversion framework to Shift4, for sending to connector.
Resolves #6122 

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** refactor(connector): add amount conversion framework to Shift4 (#6250)
Files to modify:


**crates/router/src/connector/shift4.rs**
  Remove:
    - struct: pub::Shift4
  Add:
    - function: pub::new
    - struct: pub::Shift4
    - impl: impl Shift4

**crates/router/src/connector/shift4/transformers.rs**
  Remove:
    - function: private::get_amount_required
    - function: private::get_amount_required
    - impl: impl TryFrom<&types::RouterData<T, types::CompleteAuthorizeData, types::PaymentsResponseData>> for (item.request.connector_meta.clone())
  Add:
    - function: private::try_from
    - struct: pub::Shift4RouterData
    - impl: impl TryFrom<(MinorUnit, T)> for Shift4RouterData<T>
    - impl: impl TryFrom<
        &Shift4RouterData<
            &types::RouterData<T, types::CompleteAuthorizeData, types::PaymentsResponseData>,
        >,
    > for (item.router_data.request.connector_meta.clone())

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

**crates/router/tests/connectors/shift4.rs**
  Modify existing code