mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-31 01:57:45 +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