mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
refactor(core): use previously used connector (#431)
This commit is contained in:
@ -100,7 +100,12 @@ where
|
|||||||
|
|
||||||
let connector_details = operation
|
let connector_details = operation
|
||||||
.to_domain()?
|
.to_domain()?
|
||||||
.get_connector(&merchant_account, state, &req)
|
.get_connector(
|
||||||
|
&merchant_account,
|
||||||
|
state,
|
||||||
|
&req,
|
||||||
|
payment_data.payment_attempt.connector.as_ref(),
|
||||||
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let connector_details = route_connector(
|
let connector_details = route_connector(
|
||||||
|
|||||||
@ -596,13 +596,13 @@ pub async fn get_customer_from_details(
|
|||||||
|
|
||||||
pub async fn get_connector_default(
|
pub async fn get_connector_default(
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
request_connector: Option<api_enums::Connector>,
|
request_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||||
let connectors = &state.conf.connectors;
|
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(
|
let connector_data = api::ConnectorData::get_connector_by_name(
|
||||||
connectors,
|
connectors,
|
||||||
&connector.to_string(),
|
connector_name,
|
||||||
api::GetToken::Connector,
|
api::GetToken::Connector,
|
||||||
)?;
|
)?;
|
||||||
Ok(api::ConnectorCallType::Single(connector_data))
|
Ok(api::ConnectorCallType::Single(connector_data))
|
||||||
|
|||||||
@ -125,6 +125,7 @@ pub trait Domain<F: Clone, R>: Send + Sync {
|
|||||||
merchant_account: &storage::MerchantAccount,
|
merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
request: &R,
|
request: &R,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse>;
|
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,8 +193,9 @@ where
|
|||||||
_merchant_account: &storage::MerchantAccount,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsRetrieveRequest,
|
_request: &api::PaymentsRetrieveRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
||||||
helpers::get_connector_default(state, None).await
|
helpers::get_connector_default(state, previously_used_connector).await
|
||||||
}
|
}
|
||||||
|
|
||||||
#[instrument(skip_all)]
|
#[instrument(skip_all)]
|
||||||
@ -258,8 +260,9 @@ where
|
|||||||
_merchant_account: &storage::MerchantAccount,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsCaptureRequest,
|
_request: &api::PaymentsCaptureRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsCancelRequest,
|
_request: &api::PaymentsCancelRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
request: &api::PaymentsRequest,
|
request: &api::PaymentsRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
request: &api::PaymentsRequest,
|
request: &api::PaymentsRequest,
|
||||||
|
_previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::VerifyRequest,
|
_request: &api::VerifyRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
request: &api::PaymentsSessionRequest,
|
request: &api::PaymentsSessionRequest,
|
||||||
|
_previously_used_connector: Option<&String>,
|
||||||
) -> RouterResult<api::ConnectorCallType> {
|
) -> RouterResult<api::ConnectorCallType> {
|
||||||
let connectors = &state.conf.connectors;
|
let connectors = &state.conf.connectors;
|
||||||
let db = &state.store;
|
let db = &state.store;
|
||||||
|
|||||||
@ -249,7 +249,8 @@ where
|
|||||||
_merchant_account: &storage::MerchantAccount,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsStartRequest,
|
_request: &api::PaymentsStartRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsRequest,
|
_request: &api::PaymentsRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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,
|
_merchant_account: &storage::MerchantAccount,
|
||||||
state: &AppState,
|
state: &AppState,
|
||||||
_request: &api::PaymentsRequest,
|
_request: &api::PaymentsRequest,
|
||||||
|
previously_used_connector: Option<&String>,
|
||||||
) -> CustomResult<api::ConnectorCallType, errors::ApiErrorResponse> {
|
) -> 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