mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	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
					Abhishek Marrivagu
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							e047a11ded
						
					
				
				
					commit
					a1cb255765
				
			| @ -743,11 +743,11 @@ pub struct AdditionalCardInfo { | |||||||
|     pub card_type: Option<String>, |     pub card_type: Option<String>, | ||||||
|     pub card_issuing_country: Option<String>, |     pub card_issuing_country: Option<String>, | ||||||
|     pub bank_code: Option<String>, |     pub bank_code: Option<String>, | ||||||
|     pub last4: String, |     pub last4: Option<String>, | ||||||
|     pub card_isin: String, |     pub card_isin: Option<String>, | ||||||
|     pub card_exp_month: Secret<String>, |     pub card_exp_month: Option<Secret<String>>, | ||||||
|     pub card_exp_year: Secret<String>, |     pub card_exp_year: Option<Secret<String>>, | ||||||
|     pub card_holder_name: Secret<String>, |     pub card_holder_name: Option<Secret<String>>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)] | #[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)] | #[derive(Eq, PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)] | ||||||
| pub struct CardResponse { | pub struct CardResponse { | ||||||
|     pub last4: String, |     pub last4: Option<String>, | ||||||
|     pub card_type: Option<String>, |     pub card_type: Option<String>, | ||||||
|     pub card_network: Option<api_enums::CardNetwork>, |     pub card_network: Option<api_enums::CardNetwork>, | ||||||
|     pub card_issuer: Option<String>, |     pub card_issuer: Option<String>, | ||||||
|     pub card_issuing_country: Option<String>, |     pub card_issuing_country: Option<String>, | ||||||
|     pub card_isin: String, |     pub card_isin: Option<String>, | ||||||
|     pub card_exp_month: Secret<String>, |     pub card_exp_month: Option<Secret<String>>, | ||||||
|     pub card_exp_year: Secret<String>, |     pub card_exp_year: Option<Secret<String>>, | ||||||
|     pub card_holder_name: Secret<String>, |     pub card_holder_name: Option<Secret<String>>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize, ToSchema)] | #[derive(Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize, ToSchema)] | ||||||
|  | |||||||
| @ -2612,8 +2612,8 @@ pub async fn get_additional_payment_data( | |||||||
| ) -> api_models::payments::AdditionalPaymentData { | ) -> api_models::payments::AdditionalPaymentData { | ||||||
|     match pm_data { |     match pm_data { | ||||||
|         api_models::payments::PaymentMethodData::Card(card_data) => { |         api_models::payments::PaymentMethodData::Card(card_data) => { | ||||||
|             let card_isin = card_data.card_number.clone().get_card_isin(); |             let card_isin = Some(card_data.card_number.clone().get_card_isin()); | ||||||
|             let last4 = card_data.card_number.clone().get_last4(); |             let last4 = Some(card_data.card_number.clone().get_last4()); | ||||||
|             if card_data.card_issuer.is_some() |             if card_data.card_issuer.is_some() | ||||||
|                 && card_data.card_network.is_some() |                 && card_data.card_network.is_some() | ||||||
|                 && card_data.card_type.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_type: card_data.card_type.to_owned(), | ||||||
|                         card_issuing_country: card_data.card_issuing_country.to_owned(), |                         card_issuing_country: card_data.card_issuing_country.to_owned(), | ||||||
|                         bank_code: card_data.bank_code.to_owned(), |                         bank_code: card_data.bank_code.to_owned(), | ||||||
|                         card_exp_month: card_data.card_exp_month.clone(), |                         card_exp_month: Some(card_data.card_exp_month.clone()), | ||||||
|                         card_exp_year: card_data.card_exp_year.clone(), |                         card_exp_year: Some(card_data.card_exp_year.clone()), | ||||||
|                         card_holder_name: card_data.card_holder_name.clone(), |                         card_holder_name: Some(card_data.card_holder_name.clone()), | ||||||
|                         last4: last4.clone(), |                         last4: last4.clone(), | ||||||
|                         card_isin: card_isin.clone(), |                         card_isin: card_isin.clone(), | ||||||
|                     }, |                     }, | ||||||
|                 )) |                 )) | ||||||
|             } else { |             } else { | ||||||
|                 let card_info = db |                 let card_info = card_isin | ||||||
|                     .get_card_info(&card_isin.clone()) |                     .clone() | ||||||
|  |                     .async_and_then(|card_isin| async move { | ||||||
|  |                         db.get_card_info(&card_isin) | ||||||
|                             .await |                             .await | ||||||
|                             .map_err(|error| services::logger::warn!(card_info_error=?error)) |                             .map_err(|error| services::logger::warn!(card_info_error=?error)) | ||||||
|                             .ok() |                             .ok() | ||||||
|  |                     }) | ||||||
|  |                     .await | ||||||
|                     .flatten() |                     .flatten() | ||||||
|                     .map(|card_info| { |                     .map(|card_info| { | ||||||
|                         api_models::payments::AdditionalPaymentData::Card(Box::new( |                         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, |                                 card_issuing_country: card_info.card_issuing_country, | ||||||
|                                 last4: last4.clone(), |                                 last4: last4.clone(), | ||||||
|                                 card_isin: card_isin.clone(), |                                 card_isin: card_isin.clone(), | ||||||
|                                 card_exp_month: card_data.card_exp_month.clone(), |                                 card_exp_month: Some(card_data.card_exp_month.clone()), | ||||||
|                                 card_exp_year: card_data.card_exp_year.clone(), |                                 card_exp_year: Some(card_data.card_exp_year.clone()), | ||||||
|                                 card_holder_name: card_data.card_holder_name.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, |                         card_issuing_country: None, | ||||||
|                         last4, |                         last4, | ||||||
|                         card_isin, |                         card_isin, | ||||||
|                         card_exp_month: card_data.card_exp_month.clone(), |                         card_exp_month: Some(card_data.card_exp_month.clone()), | ||||||
|                         card_exp_year: card_data.card_exp_year.clone(), |                         card_exp_year: Some(card_data.card_exp_year.clone()), | ||||||
|                         card_holder_name: card_data.card_holder_name.clone(), |                         card_holder_name: Some(card_data.card_holder_name.clone()), | ||||||
|                     }, |                     }, | ||||||
|                 ))) |                 ))) | ||||||
|             } |             } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user