fix(router): add customer_id validation for payment method create flow (#2543)

This commit is contained in:
Shankar Singh C
2023-10-12 15:00:56 +05:30
committed by GitHub
parent 0889a6ed06
commit 53d7604603
3 changed files with 17 additions and 15 deletions

View File

@ -54,6 +54,7 @@ use crate::{
}; };
#[instrument(skip_all)] #[instrument(skip_all)]
#[allow(clippy::too_many_arguments)]
pub async fn create_payment_method( pub async fn create_payment_method(
db: &dyn db::StorageInterface, db: &dyn db::StorageInterface,
req: &api::PaymentMethodCreate, req: &api::PaymentMethodCreate,
@ -62,7 +63,12 @@ pub async fn create_payment_method(
merchant_id: &str, merchant_id: &str,
pm_metadata: Option<serde_json::Value>, pm_metadata: Option<serde_json::Value>,
payment_method_data: Option<Encryption>, payment_method_data: Option<Encryption>,
) -> errors::CustomResult<storage::PaymentMethod, errors::StorageError> { key_store: &domain::MerchantKeyStore,
) -> errors::CustomResult<storage::PaymentMethod, errors::ApiErrorResponse> {
db.find_customer_by_customer_id_merchant_id(customer_id, merchant_id, key_store)
.await
.to_not_found_response(errors::ApiErrorResponse::CustomerNotFound)?;
let response = db let response = db
.insert_payment_method(storage::PaymentMethodNew { .insert_payment_method(storage::PaymentMethodNew {
customer_id: customer_id.to_string(), customer_id: customer_id.to_string(),
@ -76,7 +82,9 @@ pub async fn create_payment_method(
payment_method_data, payment_method_data,
..storage::PaymentMethodNew::default() ..storage::PaymentMethodNew::default()
}) })
.await?; .await
.change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Failed to add payment method in db")?;
Ok(response) Ok(response)
} }
@ -141,10 +149,9 @@ pub async fn add_payment_method(
&resp.merchant_id, &resp.merchant_id,
pm_metadata.cloned(), pm_metadata.cloned(),
pm_data_encrypted, pm_data_encrypted,
key_store,
) )
.await .await?;
.change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Failed to save Payment Method")?;
} }
Ok(resp).map(services::ApplicationResponse::Json) Ok(resp).map(services::ApplicationResponse::Json)

View File

@ -126,12 +126,9 @@ where
merchant_id, merchant_id,
pm_metadata, pm_metadata,
pm_data_encrypted, pm_data_encrypted,
key_store,
) )
.await .await
.change_context(
errors::ApiErrorResponse::InternalServerError,
)
.attach_printable("Failed to add payment method in db")
} }
_ => { _ => {
Err(report!(errors::ApiErrorResponse::InternalServerError) Err(report!(errors::ApiErrorResponse::InternalServerError)
@ -155,10 +152,9 @@ where
merchant_id, merchant_id,
pm_metadata, pm_metadata,
pm_data_encrypted, pm_data_encrypted,
key_store,
) )
.await .await?;
.change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Failed to add payment method in db")?;
}; };
Some(locker_response.0.payment_method_id) Some(locker_response.0.payment_method_id)
} else { } else {

View File

@ -247,10 +247,9 @@ pub async fn save_payout_data_to_locker(
&merchant_account.merchant_id, &merchant_account.merchant_id,
None, None,
card_details_encrypted, card_details_encrypted,
key_store,
) )
.await .await?;
.change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Failed to save payment method")?;
Ok(()) Ok(())
} }