mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-01 02:57:02 +08:00 
			
		
		
		
	refactor(payment_methods): refactor merchant payment method list for wallets (#7866)
This commit is contained in:
		| @ -1922,7 +1922,10 @@ pub enum PaymentMethodType { | |||||||
|  |  | ||||||
| impl PaymentMethodType { | impl PaymentMethodType { | ||||||
|     pub fn should_check_for_customer_saved_payment_method_type(self) -> bool { |     pub fn should_check_for_customer_saved_payment_method_type(self) -> bool { | ||||||
|         matches!(self, Self::ApplePay | Self::GooglePay | Self::SamsungPay) |         matches!( | ||||||
|  |             self, | ||||||
|  |             Self::ApplePay | Self::GooglePay | Self::SamsungPay | Self::Paypal | Self::Klarna | ||||||
|  |         ) | ||||||
|     } |     } | ||||||
|     pub fn to_display_name(&self) -> String { |     pub fn to_display_name(&self) -> String { | ||||||
|         let display_name = match self { |         let display_name = match self { | ||||||
|  | |||||||
| @ -3459,61 +3459,6 @@ pub async fn list_payment_methods( | |||||||
|         response |         response | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     // Filter out wallet payment method from mca if customer has already saved it |  | ||||||
|     customer |  | ||||||
|         .as_ref() |  | ||||||
|         .async_map(|customer| async { |  | ||||||
|             let wallet_pm_exists = response |  | ||||||
|                 .iter() |  | ||||||
|                 .any(|mca| mca.payment_method == enums::PaymentMethod::Wallet); |  | ||||||
|             if wallet_pm_exists { |  | ||||||
|                 match db |  | ||||||
|                     .find_payment_method_by_customer_id_merchant_id_status( |  | ||||||
|                         &((&state).into()), |  | ||||||
|                         &key_store, |  | ||||||
|                         &customer.customer_id, |  | ||||||
|                         merchant_account.get_id(), |  | ||||||
|                         common_enums::PaymentMethodStatus::Active, |  | ||||||
|                         None, |  | ||||||
|                         merchant_account.storage_scheme, |  | ||||||
|                     ) |  | ||||||
|                     .await |  | ||||||
|                 { |  | ||||||
|                     Ok(customer_payment_methods) => { |  | ||||||
|                         let customer_wallet_pm = customer_payment_methods |  | ||||||
|                             .iter() |  | ||||||
|                             .filter(|cust_pm| { |  | ||||||
|                                 cust_pm.get_payment_method_type() == Some(enums::PaymentMethod::Wallet) |  | ||||||
|                             }) |  | ||||||
|                             .collect::<Vec<_>>(); |  | ||||||
|  |  | ||||||
|                         response.retain(|mca| { |  | ||||||
|                             !(mca.payment_method == enums::PaymentMethod::Wallet |  | ||||||
|                                 && customer_wallet_pm.iter().any(|cust_pm| { |  | ||||||
|                                     cust_pm.get_payment_method_subtype() == Some(mca.payment_method_type) |  | ||||||
|                                 })) |  | ||||||
|                         }); |  | ||||||
|  |  | ||||||
|                         logger::debug!("Filtered out wallet payment method from mca since customer has already saved it"); |  | ||||||
|                         Ok(()) |  | ||||||
|                     } |  | ||||||
|                     Err(error) => { |  | ||||||
|                         if error.current_context().is_db_not_found() { |  | ||||||
|                             Ok(()) |  | ||||||
|                         } else { |  | ||||||
|                             Err(error) |  | ||||||
|                                 .change_context(errors::ApiErrorResponse::InternalServerError) |  | ||||||
|                                 .attach_printable("failed to find payment methods for a customer") |  | ||||||
|                         } |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 Ok(()) |  | ||||||
|             } |  | ||||||
|         }) |  | ||||||
|         .await |  | ||||||
|         .transpose()?; |  | ||||||
|  |  | ||||||
|     let mut pmt_to_auth_connector: HashMap< |     let mut pmt_to_auth_connector: HashMap< | ||||||
|         enums::PaymentMethod, |         enums::PaymentMethod, | ||||||
|         HashMap<enums::PaymentMethodType, String>, |         HashMap<enums::PaymentMethodType, String>, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Amisha Prabhat
					Amisha Prabhat