mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +08:00 
			
		
		
		
	fix(router): add customer_id validation for payment method create flow (#2543)
				
					
				
			This commit is contained in:
		| @ -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) | ||||||
|  | |||||||
| @ -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 { | ||||||
|  | |||||||
| @ -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(()) | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Shankar Singh C
					Shankar Singh C