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
FData: mandate::MandateBehaviour,
{
match resp.response {
Ok(_) => {
let db = &*state.store;
let token_store = state
.conf
@ -75,8 +77,10 @@ where
.await;
match existing_pm {
Ok(pm) => {
let pm_metadata =
create_payment_method_metadata(pm.metadata.as_ref(), connector_token)?;
let pm_metadata = create_payment_method_metadata(
pm.metadata.as_ref(),
connector_token,
)?;
if let Some(metadata) = pm_metadata {
payment_methods::cards::update_payment_method(db, pm, metadata)
.await
@ -86,7 +90,9 @@ where
}
Err(error) => {
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 => {
let pm_metadata =
create_payment_method_metadata(None, connector_token)?;
@ -99,12 +105,20 @@ where
pm_metadata,
)
.await
.change_context(errors::ApiErrorResponse::InternalServerError)
.change_context(
errors::ApiErrorResponse::InternalServerError,
)
.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")),
}?;
}
};
@ -127,6 +141,9 @@ where
None
};
Ok(pm_id)
}
Err(_) => Ok(None),
}
}
pub async fn save_in_locker(