mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 11:06:50 +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