refactor(routing): add support to accept the saving_percentage in decision engine response (#8388)

This commit is contained in:
Shankar Singh C
2025-06-20 18:22:08 +05:30
committed by GitHub
parent c8b35dacb8
commit 639b92c133
2 changed files with 23 additions and 8 deletions

View File

@ -67,17 +67,32 @@ pub struct DecidedGateway {
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct DebitRoutingOutput {
pub co_badged_card_networks: Vec<common_enums::CardNetwork>,
pub co_badged_card_networks_info: Vec<CoBadgedCardNetworksInfo>,
pub issuer_country: common_enums::CountryAlpha2,
pub is_regulated: bool,
pub regulated_name: Option<common_enums::RegulatedName>,
pub card_type: common_enums::CardType,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct CoBadgedCardNetworksInfo {
pub network: common_enums::CardNetwork,
pub saving_percentage: f64,
}
impl DebitRoutingOutput {
pub fn get_co_badged_card_networks(&self) -> Vec<common_enums::CardNetwork> {
self.co_badged_card_networks_info
.iter()
.map(|data| data.network.clone())
.collect()
}
}
impl From<&DebitRoutingOutput> for payment_methods::CoBadgedCardData {
fn from(output: &DebitRoutingOutput) -> Self {
Self {
co_badged_card_networks: output.co_badged_card_networks.clone(),
co_badged_card_networks: output.get_co_badged_card_networks(),
issuer_country_code: output.issuer_country,
is_regulated: output.is_regulated,
regulated_name: output.regulated_name.clone(),
@ -96,7 +111,7 @@ impl TryFrom<(payment_methods::CoBadgedCardData, String)> for DebitRoutingReques
})?;
Ok(Self {
co_badged_card_networks: output.co_badged_card_networks,
co_badged_card_networks_info: output.co_badged_card_networks,
issuer_country: output.issuer_country_code,
is_regulated: output.is_regulated,
regulated_name: output.regulated_name,
@ -114,7 +129,7 @@ pub struct CoBadgedCardRequest {
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct DebitRoutingRequestData {
pub co_badged_card_networks: Vec<common_enums::CardNetwork>,
pub co_badged_card_networks_info: Vec<common_enums::CardNetwork>,
pub issuer_country: common_enums::CountryAlpha2,
pub is_regulated: bool,
pub regulated_name: Option<common_enums::RegulatedName>,

View File

@ -256,8 +256,8 @@ where
get_debit_routing_output::<F, D>(state, payment_data, acquirer_country).await?;
logger::debug!(
"Sorted co-badged networks: {:?}",
debit_routing_output.co_badged_card_networks
"Sorted co-badged networks info: {:?}",
debit_routing_output.co_badged_card_networks_info
);
let key_store = db
@ -281,7 +281,7 @@ where
&profile_id,
&key_store,
vec![connector_data.clone()],
debit_routing_output.co_badged_card_networks.clone(),
debit_routing_output.get_co_badged_card_networks(),
)
.await
.map_err(|error| {
@ -455,7 +455,7 @@ where
&profile_id,
&key_store,
connector_data_list.clone(),
debit_routing_output.co_badged_card_networks.clone(),
debit_routing_output.get_co_badged_card_networks(),
)
.await
.map_err(|error| {