refactor(connector): make the original_authorized_amount optional for MITs with connector_mandate_details (#5311)

This commit is contained in:
Shankar Singh C
2024-07-19 14:01:11 +05:30
committed by GitHub
parent eb01680284
commit a8e2f3ebc9

View File

@ -589,12 +589,30 @@ impl
Some(payments::MandateReferenceId::ConnectorMandateId(_)) => {
let original_amount = item
.router_data
.get_recurring_mandate_payment_data()?
.get_original_payment_amount()?;
.recurring_mandate_payment_data
.as_ref()
.and_then(|recurring_mandate_payment_data| {
recurring_mandate_payment_data.original_payment_authorized_amount
});
let original_currency = item
.router_data
.get_recurring_mandate_payment_data()?
.get_original_payment_currency()?;
.recurring_mandate_payment_data
.as_ref()
.and_then(|recurring_mandate_payment_data| {
recurring_mandate_payment_data.original_payment_authorized_currency
});
let original_authorized_amount = match original_amount.zip(original_currency) {
Some((original_amount, original_currency)) => {
Some(utils::get_amount_as_string(
&api::CurrencyUnit::Base,
original_amount,
original_currency,
)?)
}
None => None,
};
(
None,
None,
@ -602,11 +620,7 @@ impl
initiator: None,
merchant_intitiated_transaction: Some(MerchantInitiatedTransaction {
reason: None,
original_authorized_amount: Some(utils::get_amount_as_string(
&api::CurrencyUnit::Base,
original_amount,
original_currency,
)?),
original_authorized_amount,
previous_transaction_id: None,
}),
}),
@ -618,7 +632,8 @@ impl
.map(|network| network.to_lowercase())
.as_deref()
{
Some("discover") => {
//This is to make original_authorized_amount mandatory for discover card networks in NetworkMandateId flow
Some("004") => {
let original_amount = Some(
item.router_data
.get_recurring_mandate_payment_data()?
@ -653,12 +668,11 @@ impl
(original_amount, original_currency)
}
};
let original_authorized_amount = match (original_amount, original_currency) {
(Some(original_amount), Some(original_currency)) => Some(
let original_authorized_amount = match original_amount.zip(original_currency) {
Some((original_amount, original_currency)) => Some(
utils::to_currency_base_unit(original_amount, original_currency)?,
),
_ => None,
None => None,
};
commerce_indicator = "recurring".to_string();
(