refactor(payment_methods): refactor merchant payment method list for wallets (#7866)

This commit is contained in:
Amisha Prabhat
2025-04-28 13:13:36 +05:30
committed by GitHub
parent 8381071c26
commit 48b473dee2
2 changed files with 4 additions and 56 deletions

View File

@ -1922,7 +1922,10 @@ pub enum PaymentMethodType {
impl PaymentMethodType {
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 {
let display_name = match self {

View File

@ -3459,61 +3459,6 @@ pub async fn list_payment_methods(
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<
enums::PaymentMethod,
HashMap<enums::PaymentMethodType, String>,