fix(payment_method): do not save card in locker in case of error from connector (#1341)

This commit is contained in:
Kartikeya Hegde
2023-07-04 13:11:19 +05:30
committed by GitHub
parent cebe993660
commit 9794079c79

View File

@ -31,6 +31,8 @@ pub async fn save_payment_method<F: Clone, FData>(
where where
FData: mandate::MandateBehaviour, FData: mandate::MandateBehaviour,
{ {
match resp.response {
Ok(_) => {
let db = &*state.store; let db = &*state.store;
let token_store = state let token_store = state
.conf .conf
@ -75,8 +77,10 @@ where
.await; .await;
match existing_pm { match existing_pm {
Ok(pm) => { Ok(pm) => {
let pm_metadata = let pm_metadata = create_payment_method_metadata(
create_payment_method_metadata(pm.metadata.as_ref(), connector_token)?; pm.metadata.as_ref(),
connector_token,
)?;
if let Some(metadata) = pm_metadata { if let Some(metadata) = pm_metadata {
payment_methods::cards::update_payment_method(db, pm, metadata) payment_methods::cards::update_payment_method(db, pm, metadata)
.await .await
@ -86,7 +90,9 @@ where
} }
Err(error) => { Err(error) => {
match error.current_context() { match error.current_context() {
errors::StorageError::DatabaseError(err) => match err.current_context() { errors::StorageError::DatabaseError(err) => match err
.current_context()
{
storage_models::errors::DatabaseError::NotFound => { storage_models::errors::DatabaseError::NotFound => {
let pm_metadata = let pm_metadata =
create_payment_method_metadata(None, connector_token)?; create_payment_method_metadata(None, connector_token)?;
@ -99,12 +105,20 @@ where
pm_metadata, pm_metadata,
) )
.await .await
.change_context(errors::ApiErrorResponse::InternalServerError) .change_context(
errors::ApiErrorResponse::InternalServerError,
)
.attach_printable("Failed to add payment method in db") .attach_printable("Failed to add payment method in db")
} }
_ => Err(report!(errors::ApiErrorResponse::InternalServerError)), _ => {
Err(report!(errors::ApiErrorResponse::InternalServerError)
.attach_printable(
"Database Error while finding payment method",
))
}
}, },
_ => Err(report!(errors::ApiErrorResponse::InternalServerError)), _ => Err(report!(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Error while finding payment method")),
}?; }?;
} }
}; };
@ -128,6 +142,9 @@ where
}; };
Ok(pm_id) Ok(pm_id)
} }
Err(_) => Ok(None),
}
}
pub async fn save_in_locker( pub async fn save_in_locker(
state: &AppState, state: &AppState,