diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index e89025c9f6..5571df56a2 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -743,11 +743,11 @@ pub struct AdditionalCardInfo { pub card_type: Option, pub card_issuing_country: Option, pub bank_code: Option, - pub last4: String, - pub card_isin: String, - pub card_exp_month: Secret, - pub card_exp_year: Secret, - pub card_holder_name: Secret, + pub last4: Option, + pub card_isin: Option, + pub card_exp_month: Option>, + pub card_exp_year: Option>, + pub card_holder_name: Option>, } #[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)] @@ -1165,15 +1165,15 @@ pub struct ApplepayPaymentMethod { #[derive(Eq, PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)] pub struct CardResponse { - pub last4: String, + pub last4: Option, pub card_type: Option, pub card_network: Option, pub card_issuer: Option, pub card_issuing_country: Option, - pub card_isin: String, - pub card_exp_month: Secret, - pub card_exp_year: Secret, - pub card_holder_name: Secret, + pub card_isin: Option, + pub card_exp_month: Option>, + pub card_exp_year: Option>, + pub card_holder_name: Option>, } #[derive(Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize, ToSchema)] diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs index bda8aacc7c..2953a5a390 100644 --- a/crates/router/src/core/payments/helpers.rs +++ b/crates/router/src/core/payments/helpers.rs @@ -2612,8 +2612,8 @@ pub async fn get_additional_payment_data( ) -> api_models::payments::AdditionalPaymentData { match pm_data { api_models::payments::PaymentMethodData::Card(card_data) => { - let card_isin = card_data.card_number.clone().get_card_isin(); - let last4 = card_data.card_number.clone().get_last4(); + let card_isin = Some(card_data.card_number.clone().get_card_isin()); + let last4 = Some(card_data.card_number.clone().get_last4()); if card_data.card_issuer.is_some() && card_data.card_network.is_some() && card_data.card_type.is_some() @@ -2627,19 +2627,23 @@ pub async fn get_additional_payment_data( card_type: card_data.card_type.to_owned(), card_issuing_country: card_data.card_issuing_country.to_owned(), bank_code: card_data.bank_code.to_owned(), - card_exp_month: card_data.card_exp_month.clone(), - card_exp_year: card_data.card_exp_year.clone(), - card_holder_name: card_data.card_holder_name.clone(), + card_exp_month: Some(card_data.card_exp_month.clone()), + card_exp_year: Some(card_data.card_exp_year.clone()), + card_holder_name: Some(card_data.card_holder_name.clone()), last4: last4.clone(), card_isin: card_isin.clone(), }, )) } else { - let card_info = db - .get_card_info(&card_isin.clone()) + let card_info = card_isin + .clone() + .async_and_then(|card_isin| async move { + db.get_card_info(&card_isin) + .await + .map_err(|error| services::logger::warn!(card_info_error=?error)) + .ok() + }) .await - .map_err(|error| services::logger::warn!(card_info_error=?error)) - .ok() .flatten() .map(|card_info| { api_models::payments::AdditionalPaymentData::Card(Box::new( @@ -2651,9 +2655,9 @@ pub async fn get_additional_payment_data( card_issuing_country: card_info.card_issuing_country, last4: last4.clone(), card_isin: card_isin.clone(), - card_exp_month: card_data.card_exp_month.clone(), - card_exp_year: card_data.card_exp_year.clone(), - card_holder_name: card_data.card_holder_name.clone(), + card_exp_month: Some(card_data.card_exp_month.clone()), + card_exp_year: Some(card_data.card_exp_year.clone()), + card_holder_name: Some(card_data.card_holder_name.clone()), }, )) }); @@ -2666,9 +2670,9 @@ pub async fn get_additional_payment_data( card_issuing_country: None, last4, card_isin, - card_exp_month: card_data.card_exp_month.clone(), - card_exp_year: card_data.card_exp_year.clone(), - card_holder_name: card_data.card_holder_name.clone(), + card_exp_month: Some(card_data.card_exp_month.clone()), + card_exp_year: Some(card_data.card_exp_year.clone()), + card_holder_name: Some(card_data.card_holder_name.clone()), }, ))) }