feat(core): Add V2 Authentication to all available endpoints

## Type of Change

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description

This commit introduces V2 authentication mechanisms for various admin and client-side APIs :
- [x] Added V2AdminApiAuth and modified AdminApiAuthWithMerchantIdFromRoute for V2
- [x] Added V2ApiKeyAuth , V2AdminApiAuth and V2ClientAuth to the endpoints
- [x] Refactored functions to support V2 Auth as well as V1 Auth

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

## Motivation and Context

## How did you test it?

For   `/v2/merchant-accounts`


Request 
```
curl --location 'http://localhost:8080/v2/merchant-accounts' \
--header 'x-organization-id: org_d2lZPiRPOGbIMmFcb59A' \
--header 'Content-Type: application/json' \
--header 'Authorization: admin-api-key=test_admin' \
--data '{
    "merchant_name": "cloth_seller"
}'
```
Response

```
{
    "id": "cloth_seller_KdjFPBxrxWyX09jri2VB",
    "merchant_name": "cloth_seller",
    "merchant_details": null,
    "publishable_key": "pk_dev_735cafe5f43446e88d22bedec15b0139",
    "metadata": null,
    "organization_id": "org_d2lZPiRPOGbIMmFcb59A",
    "recon_status": "not_requested",
    "product_type": "orchestration"
}
```

For `/v2/organization`

Request

```
curl --location 'http://localhost:8080/v2/organization' \
--header 'Authorization: admin-api-key=test_admin' \
--header 'Content-Type: application/json' \
--data '{
    "organization_name": "random_org_1741776562"
}'
```
Response

```
{
    "id": "org_m4fLYdEFb7PNHynIfmZO",
    "organization_name": "random_org_1741776558",
    "organization_details": null,
    "metadata": null,
    "modified_at": "2025-03-12 10:49:18.475431",
    "created_at": "2025-03-12 10:49:18.475424"
}
```

This is how V2AdminApiAuth looks like 

```
pub struct V2AdminApiAuth;

#[async_trait]
impl<A> AuthenticateAndFetch<(), A> for V2AdminApiAuth
where
    A: SessionStateInfo + Sync,
{
    async fn authenticate_and_fetch(
        &self,
        request_headers: &HeaderMap,
        state: &A,
    ) -> RouterResult<((), AuthenticationType)> {
        let header_map_struct = HeaderMapStruct::new(&request_headers);
        let auth_string = header_map_struct.get_auth_string_from_header()?;
        let request_admin_api_key = auth_string
            .split(',')
            .find_map(|part| part.trim().strip_prefix("admin-api-key="))
            .ok_or_else(|| {
                report!(errors::ApiErrorResponse::Unauthorized)
                    .attach_printable("Unable to parse admin_api_key")
            })?;
        if request_admin_api_key.is_empty() {
            return Err(errors::ApiErrorResponse::Unauthorized)
                .attach_printable("Admin Api key is empty");
        }
        let conf = state.conf();

        let admin_api_key = &conf.secrets.get_inner().admin_api_key;

        if request_admin_api_key != admin_api_key.peek() {
            Err(report!(errors::ApiErrorResponse::Unauthorized)
                .attach_printable("Admin Authentication Failure"))?;
        }

        Ok(((), AuthenticationType::AdminApiKey))
    }
}
```
### What changes are done in authorization header

How it was earlier?

```
api-key = {{api-key}}
client-secret={{client_secret}} 
api-key = {{admin_api_key}}
```

Changed version

```
Authorization = api-key={{api-key}} 
Authorization = admin-api-key={{admin_api_key}}
Authorization = publishable-key={{publishable_key}},client-secret={{client_secret}} 
```


## Checklist
<!-- Put an `x` in the boxes that apply -->

- [ ] 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
<think>
PR Context:
- Title: feat: remove client_secret from payment_intent and update related code
- Merged: 2025-04-10T13:34:30Z
- Files changed: 24 files
- Commits: 21 commits

Implementation approach:
Your PR Description## Type of Change

- [x] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description

1. This commit changes how the client secret is generated 
2. Change how client secret is made in Create Payment Intent 
     Old
    `{Payment_id}_secret_{Secret}` `eg : pay_U42c409qyHwOkWo3vK60_secret_el9ksDkiB8hi6j9N78yo` 
     New 
     `cs_{Secret}` `eg: cs_0195d2be95ba7ef1a05066e163295562`
3. Cli
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat: remove client_secret from payment_intent and update related code (#7648)
Co-authored-by: hyper
Files to modify:


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

**crates/common_utils/src/id_type/global_id/payment.rs**
  Remove:
    - function: pub::generate_client_secret

**crates/common_utils/src/types.rs**
  Remove:
    - function: pub::get_string_repr
    - function: pub::new
    - function: private::from_str
    - function: private::deserialize
    - function: private::expecting
    - function: private::visit_str
    - function: private::serialize
    - function: private::to_sql
    - function: private::from_sql
    - function: private::build
    - function: private::test_serialize_client_secret
    - function: private::test_deserialize_client_secret
    - struct: pub::ClientSecret
    - struct: private::ClientSecretVisitor
    - impl: impl ClientSecret
    - impl: impl FromStr for ClientSecret
    - impl: impl Deserialize<'de> for ClientSecret
    - impl: impl Visitor<'_> for ClientSecretVisitor
    - impl: impl Serialize for ClientSecret
    - impl: impl ToSql<sql_types::Text, diesel::pg::Pg> for ClientSecret
    - impl: impl FromSql<sql_types::Text, DB> for ClientSecret
    - impl: impl Queryable<sql_types::Text, DB> for ClientSecret
    - mod: private::client_secret_type
    - mod: private::client_secret_tests

**crates/diesel_models/src/payment_intent.rs**
  Modify existing code

**crates/diesel_models/src/schema_v2.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/payments.rs**
  Remove:
    - function: pub::validate_client_secret

**crates/hyperswitch_domain_models/src/payments/payment_intent.rs**
  Modify existing code

**crates/router/src/core/payments.rs**
  Add:
    - function: private::get_client_secret
    - function: private::set_client_secret
    - function: private::get_client_secret
    - function: private::set_client_secret
    - function: private::get_client_secret
    - function: private::set_client_secret
    - function: private::get_client_secret
    - function: private::set_client_secret

**crates/router/src/core/payments/helpers.rs**
  Remove:
    - function: pub::authenticate_client_secret

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

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

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

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

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

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

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

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

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

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

**crates/router/src/services/authentication.rs**
  Modify existing code

**crates/router/src/types/transformers.rs**
  Modify existing code
{"issue_number": 7487, "pr_number": 7648, "commits_count": 1, "files_changed": 24, "response_length": 4053, "file_count": 23, "needs_breakdown": true}