Issue:
Connector changes for 3ds in v2

In v2, the `PreProcessing` and `CompleteAuthorize` flows will not be present.

We will introduce new flows `PreAuthenticate`, `Authenticate` and `PostAuthenticate` to better represent the domain.

Resolution:
<think>
PR Context:
- Title: feat(router): Add Connector changes for 3ds (v2)
- Merged: 2025-09-11T14:33:57Z
- Files changed: 8 files
- Commits: 1 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->

- Add `PreAuthenticate`, `Authenticate` and `PostAuthenticate` connector integration and implement them for cybersource

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] T
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(router): Add Connector changes for 3ds (v2) (#9117)
Files to modify:


**crates/hyperswitch_connectors/src/connectors/cybersource.rs**
  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_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::get_request_body
    - function: private::build_request
    - function: private::handle_response
    - function: private::get_error_response
    - function: private::get_5xx_error_response
    - impl: impl api::PaymentsPreAuthenticate for Cybersource
    - impl: impl api::PaymentsPostAuthenticate for Cybersource
    - impl: impl api::PaymentsAuthenticate for Cybersource
    - impl: impl ConnectorIntegration<PreAuthenticate, PaymentsPreAuthenticateData, PaymentsResponseData> for Cybersource
    - impl: impl ConnectorIntegration<Authenticate, PaymentsAuthenticateData, PaymentsResponseData> for Cybersource
    - impl: impl ConnectorIntegration<PostAuthenticate, PaymentsPostAuthenticateData, PaymentsResponseData> for Cybersource
    - impl: impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData> for Cybersource

**crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs**
  Remove:
    - struct: pub::CybersourceConsumerAuthValidateResponse
    - struct: pub::CybersourceThreeDSMetadata
    - struct: pub::CybersourceConsumerAuthInformationEnrollmentResponse
    - struct: pub::ClientAuthCheckInfoResponse
    - enum: pub::CybersourceAuthEnrollmentStatus
    - enum: pub::CybersourcePreProcessingResponse
    - impl: impl TryFrom<&CybersourceRouterData<&PaymentsCompleteAuthorizeRouterData>> for [serde(rename_all = "SCREAMING_SNAKE_CASE")]
  Add:
    - function: private::from
    - function: private::try_from
    - impl: impl From<&CybersourceRouterData<&PaymentsPreAuthenticateRouterData>> for ClientReferenceInformation
    - impl: impl TryFrom<&CybersourceRouterData<&PaymentsPreAuthenticateRouterData>> for CybersourceAuthSetupRequest
    - impl: impl TryFrom<&CybersourceRouterData<&PaymentsAuthenticateRouterData>> for (item.router_data.connector_request_reference_id.clone())
    - impl: impl TryFrom<&CybersourceRouterData<&PaymentsPostAuthenticateRouterData>> for (item.router_data.connector_request_reference_id.clone())

**crates/hyperswitch_connectors/src/default_implementations.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/router_request_types.rs**
  Add:
    - function: private::try_from
    - function: private::try_from
    - function: private::try_from
    - struct: pub::PaymentsPreAuthenticateData
    - struct: pub::PaymentsAuthenticateData
    - struct: pub::PaymentsPostAuthenticateData
    - impl: impl TryFrom<PaymentsAuthorizeData> for PaymentsPreAuthenticateData
    - impl: impl TryFrom<PaymentsAuthorizeData> for PaymentsAuthenticateData
    - impl: impl TryFrom<PaymentsAuthorizeData> for PaymentsPostAuthenticateData

**crates/hyperswitch_domain_models/src/types.rs**
  Modify existing code

**crates/hyperswitch_interfaces/src/api/payments.rs**
  Add:
    - trait: pub::PaymentsPreAuthenticate
    - trait: pub::PaymentsAuthenticate
    - trait: pub::PaymentsPostAuthenticate

**crates/hyperswitch_interfaces/src/api/payments_v2.rs**
  Add:
    - trait: pub::PaymentsPreAuthenticateV2
    - trait: pub::PaymentsAuthenticateV2
    - trait: pub::PaymentsPostAuthenticateV2

**crates/hyperswitch_interfaces/src/types.rs**
  Modify existing code