mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 00:49:42 +08:00
refactor(core): use previously used connector (#431)
This commit is contained in:
@ -100,7 +100,12 @@ where
|
||||
|
||||
let connector_details = operation
|
||||
.to_domain()?
|
||||
.get_connector(&merchant_account, state, &req)
|
||||
.get_connector(
|
||||
&merchant_account,
|
||||
state,
|
||||
&req,
|
||||
payment_data.payment_attempt.connector.as_ref(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let connector_details = route_connector(
|
||||
|
||||
@ -596,13 +596,13 @@ pub async fn get_customer_from_details(
|
||||
|
||||
pub async fn get_connector_default(
|
||||
state: &AppState,
|
||||
request_connector: Option<api_enums::Connector>,
|
||||
request_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
let connectors = &state.conf.connectors;
|
||||
if let Some(connector) = request_connector {
|
||||
if let Some(connector_name) = request_connector {
|
||||
let connector_data = api::ConnectorData::get_connector_by_name(
|
||||
connectors,
|
||||
&connector.to_string(),
|
||||
connector_name,
|
||||
api::GetToken::Connector,
|
||||
)?;
|
||||
Ok(api::ConnectorCallType::Single(connector_data))
|
||||
|
||||
@ -125,6 +125,7 @@ pub trait Domain<F: Clone, R>: Send + Sync {
|
||||
merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
request: &R,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse>;
|
||||
}
|
||||
|
||||
@ -192,8 +193,9 @@ where
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsRetrieveRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
@ -258,8 +260,9 @@ where
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsCaptureRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
@ -312,7 +315,8 @@ where
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsCancelRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
@ -253,8 +253,16 @@ impl<F: Clone + Send> Domain<F, api::PaymentsRequest> for PaymentConfirm {
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
request: &api::PaymentsRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, request.connector).await
|
||||
// Use a new connector in the confirm call or use the same one which was passed when
|
||||
// creating the payment or if none is passed then use the routing algorithm
|
||||
let request_connector = request.connector.map(|connector| connector.to_string());
|
||||
helpers::get_connector_default(
|
||||
state,
|
||||
request_connector.as_ref().or(previously_used_connector),
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -257,8 +257,10 @@ impl<F: Clone + Send> Domain<F, api::PaymentsRequest> for PaymentCreate {
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
request: &api::PaymentsRequest,
|
||||
_previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, request.connector).await
|
||||
let request_connector = request.connector.map(|connector| connector.to_string());
|
||||
helpers::get_connector_default(state, request_connector.as_ref()).await
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -254,8 +254,9 @@ where
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::VerifyRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -269,6 +269,7 @@ where
|
||||
merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
request: &api::PaymentsSessionRequest,
|
||||
_previously_used_connector: Option<&String>,
|
||||
) -> RouterResult<api::ConnectorCallType> {
|
||||
let connectors = &state.conf.connectors;
|
||||
let db = &state.store;
|
||||
|
||||
@ -249,7 +249,8 @@ where
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsStartRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,8 +101,9 @@ impl<F: Clone + Send> Domain<F, api::PaymentsRequest> for PaymentStatus {
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -273,8 +273,9 @@ impl<F: Clone + Send> Domain<F, api::PaymentsRequest> for PaymentUpdate {
|
||||
_merchant_account: &storage::MerchantAccount,
|
||||
state: &AppState,
|
||||
_request: &api::PaymentsRequest,
|
||||
previously_used_connector: Option<&String>,
|
||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||
helpers::get_connector_default(state, None).await
|
||||
helpers::get_connector_default(state, previously_used_connector).await
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user