fix(mandate): allow card details to be provided in case of network transaction id (#1138)

This commit is contained in:
Nishant Joshi
2023-05-13 14:58:53 +05:30
committed by GitHub
parent 7eed8e7f3e
commit cc121d0feb
2 changed files with 15 additions and 4 deletions

View File

@ -120,7 +120,9 @@ fn get_pm_and_subsequent_auth_detail(
expiration_date: ccard.get_expiry_date_as_yyyymm("-"),
card_code: Some(ccard.card_cvc.clone()),
}),
None,
Some(ProcessingOptions {
is_subsequent_auth: true,
}),
None,
))
}
@ -151,6 +153,7 @@ struct TransactionRequest {
currency_code: String,
payment: PaymentDetails,
processing_options: Option<ProcessingOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
subsequent_auth_information: Option<SubsequentAuthInformation>,
authorization_indicator_type: Option<AuthorizationIndicator>,
}

View File

@ -765,10 +765,18 @@ where
{
let connector = payment_data.payment_attempt.connector.to_owned();
let is_mandate = payment_data
.mandate_id
.as_ref()
.and_then(|inner| inner.mandate_reference_id.as_ref())
.map(|mandate_reference| match mandate_reference {
api_models::payments::MandateReferenceId::ConnectorMandateId(_) => true,
api_models::payments::MandateReferenceId::NetworkMandateId(_) => false,
})
.unwrap_or(false);
let payment_data_and_tokenization_action = match connector {
Some(_) if payment_data.mandate_id.is_some() => {
(payment_data, TokenizationAction::SkipConnectorTokenization)
}
Some(_) if is_mandate => (payment_data, TokenizationAction::SkipConnectorTokenization),
Some(connector) if is_operation_confirm(&operation) => {
let payment_method = &payment_data
.payment_attempt