mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	fix(core): save payment_method_type when creating a record in the payment_method table (#1378)
This commit is contained in:
		| @ -84,6 +84,7 @@ impl Feature<api::Authorize, types::PaymentsAuthorizeData> for types::PaymentsAu | ||||
|                 resp.to_owned(), | ||||
|                 maybe_customer, | ||||
|                 merchant_account, | ||||
|                 self.request.payment_method_type.clone(), | ||||
|             ) | ||||
|             .await?; | ||||
|  | ||||
|  | ||||
| @ -67,6 +67,7 @@ impl Feature<api::Verify, types::VerifyRequestData> for types::VerifyRouterData | ||||
|             resp.to_owned(), | ||||
|             maybe_customer, | ||||
|             merchant_account, | ||||
|             self.request.payment_method_type.clone(), | ||||
|         ) | ||||
|         .await?; | ||||
|  | ||||
| @ -177,12 +178,14 @@ impl types::VerifyRouterData { | ||||
|                 .await | ||||
|                 .to_verify_failed_response()?; | ||||
|  | ||||
|                 let payment_method_type = self.request.payment_method_type.clone(); | ||||
|                 let pm_id = tokenization::save_payment_method( | ||||
|                     state, | ||||
|                     connector, | ||||
|                     resp.to_owned(), | ||||
|                     maybe_customer, | ||||
|                     merchant_account, | ||||
|                     payment_method_type, | ||||
|                 ) | ||||
|                 .await?; | ||||
|  | ||||
|  | ||||
| @ -729,13 +729,14 @@ where | ||||
|  | ||||
| #[instrument(skip_all)] | ||||
| pub(crate) async fn get_payment_method_create_request( | ||||
|     payment_method: Option<&api::PaymentMethodData>, | ||||
|     payment_method_type: Option<storage_enums::PaymentMethod>, | ||||
|     payment_method_data: Option<&api::PaymentMethodData>, | ||||
|     payment_method: Option<storage_enums::PaymentMethod>, | ||||
|     payment_method_type: Option<storage_enums::PaymentMethodType>, | ||||
|     customer: &domain::Customer, | ||||
| ) -> RouterResult<api::PaymentMethodCreate> { | ||||
|     match payment_method { | ||||
|         Some(pm_data) => match payment_method_type { | ||||
|             Some(payment_method_type) => match pm_data { | ||||
|     match payment_method_data { | ||||
|         Some(pm_data) => match payment_method { | ||||
|             Some(payment_method) => match pm_data { | ||||
|                 api::PaymentMethodData::Card(card) => { | ||||
|                     let card_detail = api::CardDetail { | ||||
|                         card_number: card.card_number.clone(), | ||||
| @ -745,8 +746,8 @@ pub(crate) async fn get_payment_method_create_request( | ||||
|                     }; | ||||
|                     let customer_id = customer.customer_id.clone(); | ||||
|                     let payment_method_request = api::PaymentMethodCreate { | ||||
|                         payment_method: payment_method_type.foreign_into(), | ||||
|                         payment_method_type: None, | ||||
|                         payment_method: payment_method.foreign_into(), | ||||
|                         payment_method_type: payment_method_type.map(ForeignInto::foreign_into), | ||||
|                         payment_method_issuer: card.card_issuer.clone(), | ||||
|                         payment_method_issuer_code: None, | ||||
|                         card: Some(card_detail), | ||||
| @ -761,8 +762,8 @@ pub(crate) async fn get_payment_method_create_request( | ||||
|                 } | ||||
|                 _ => { | ||||
|                     let payment_method_request = api::PaymentMethodCreate { | ||||
|                         payment_method: payment_method_type.foreign_into(), | ||||
|                         payment_method_type: None, | ||||
|                         payment_method: payment_method.foreign_into(), | ||||
|                         payment_method_type: payment_method_type.map(ForeignInto::foreign_into), | ||||
|                         payment_method_issuer: None, | ||||
|                         payment_method_issuer_code: None, | ||||
|                         card: None, | ||||
|  | ||||
| @ -15,6 +15,7 @@ use crate::{ | ||||
|         self, | ||||
|         api::{self, PaymentMethodCreateExt}, | ||||
|         domain, | ||||
|         storage::enums as storage_enums, | ||||
|     }, | ||||
|     utils::OptionExt, | ||||
| }; | ||||
| @ -25,6 +26,7 @@ pub async fn save_payment_method<F: Clone, FData>( | ||||
|     resp: types::RouterData<F, FData, types::PaymentsResponseData>, | ||||
|     maybe_customer: &Option<domain::Customer>, | ||||
|     merchant_account: &domain::MerchantAccount, | ||||
|     payment_method_type: Option<storage_enums::PaymentMethodType>, | ||||
| ) -> RouterResult<Option<String>> | ||||
| where | ||||
|     FData: mandate::MandateBehaviour, | ||||
| @ -53,6 +55,7 @@ where | ||||
|         let payment_method_create_request = helpers::get_payment_method_create_request( | ||||
|             Some(&resp.request.get_payment_method_data()), | ||||
|             Some(resp.payment_method), | ||||
|             payment_method_type, | ||||
|             &customer, | ||||
|         ) | ||||
|         .await?; | ||||
|  | ||||
| @ -885,6 +885,7 @@ impl<F: Clone> TryFrom<PaymentAdditionalData<'_, F>> for types::VerifyRequestDat | ||||
|             router_return_url, | ||||
|             email: payment_data.email, | ||||
|             return_url: payment_data.payment_intent.return_url, | ||||
|             payment_method_type: attempt.payment_method_type.clone(), | ||||
|         }) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -339,6 +339,7 @@ pub struct VerifyRequestData { | ||||
|     pub router_return_url: Option<String>, | ||||
|     pub email: Option<Email>, | ||||
|     pub return_url: Option<String>, | ||||
|     pub payment_method_type: Option<storage_enums::PaymentMethodType>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Clone)] | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Pa1NarK
					Pa1NarK