fix(list): fix card network filtering (#684)

This commit is contained in:
Nishant Joshi
2023-02-28 16:39:35 +05:30
committed by GitHub
parent 03096effcf
commit 718c8a423a
2 changed files with 16 additions and 5 deletions

View File

@ -343,6 +343,10 @@ impl<'de> serde::Deserialize<'de> for ListPaymentMethodRequest {
map.next_value()?, map.next_value()?,
)?; )?;
} }
"card_network" => match output.card_networks.as_mut() {
Some(inner) => inner.push(map.next_value()?),
None => output.card_networks = Some(vec![map.next_value()?]),
},
_ => {} _ => {}
} }
} }

View File

@ -727,6 +727,7 @@ async fn filter_payment_methods(
let filter4 = filter_pm_card_network_based( let filter4 = filter_pm_card_network_based(
payment_method_object.card_networks.as_ref(), payment_method_object.card_networks.as_ref(),
req.card_networks.as_ref(), req.card_networks.as_ref(),
&payment_method_object.payment_method_type,
); );
let filter3 = if let Some(payment_intent) = payment_intent { let filter3 = if let Some(payment_intent) = payment_intent {
@ -797,14 +798,20 @@ fn filter_pm_based_on_config<'a>(
fn filter_pm_card_network_based( fn filter_pm_card_network_based(
pm_card_networks: Option<&Vec<api_enums::CardNetwork>>, pm_card_networks: Option<&Vec<api_enums::CardNetwork>>,
request_card_networks: Option<&Vec<api_enums::CardNetwork>>, request_card_networks: Option<&Vec<api_enums::CardNetwork>>,
pm_type: &api_enums::PaymentMethodType,
) -> bool { ) -> bool {
logger::debug!(pm_card_networks=?pm_card_networks); logger::debug!(pm_card_networks=?pm_card_networks);
logger::debug!(request_card_networks=?request_card_networks); logger::debug!(request_card_networks=?request_card_networks);
match (pm_card_networks, request_card_networks) { match pm_type {
(Some(pm_card_networks), Some(request_card_networks)) => request_card_networks api_enums::PaymentMethodType::Credit | api_enums::PaymentMethodType::Debit => {
.iter() match (pm_card_networks, request_card_networks) {
.all(|card_network| pm_card_networks.contains(card_network)), (Some(pm_card_networks), Some(request_card_networks)) => request_card_networks
(None, Some(_)) => false, .iter()
.all(|card_network| pm_card_networks.contains(card_network)),
(None, Some(_)) => false,
_ => true,
}
}
_ => true, _ => true,
} }
} }