fix(payments): all AdditionalCardInfo fields optional (#1840)

Co-authored-by: Sangamesh Kulkarni <59434228+Sangamesh26@users.noreply.github.com>
This commit is contained in:
Abhishek Marrivagu
2023-08-01 18:28:55 +05:30
committed by GitHub
parent e047a11ded
commit a1cb255765
2 changed files with 29 additions and 25 deletions

View File

@ -743,11 +743,11 @@ pub struct AdditionalCardInfo {
pub card_type: Option<String>,
pub card_issuing_country: Option<String>,
pub bank_code: Option<String>,
pub last4: String,
pub card_isin: String,
pub card_exp_month: Secret<String>,
pub card_exp_year: Secret<String>,
pub card_holder_name: Secret<String>,
pub last4: Option<String>,
pub card_isin: Option<String>,
pub card_exp_month: Option<Secret<String>>,
pub card_exp_year: Option<Secret<String>>,
pub card_holder_name: Option<Secret<String>>,
}
#[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<String>,
pub card_type: Option<String>,
pub card_network: Option<api_enums::CardNetwork>,
pub card_issuer: Option<String>,
pub card_issuing_country: Option<String>,
pub card_isin: String,
pub card_exp_month: Secret<String>,
pub card_exp_year: Secret<String>,
pub card_holder_name: Secret<String>,
pub card_isin: Option<String>,
pub card_exp_month: Option<Secret<String>>,
pub card_exp_year: Option<Secret<String>>,
pub card_holder_name: Option<Secret<String>>,
}
#[derive(Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize, ToSchema)]

View File

@ -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()),
},
)))
}