diff --git a/crates/router/src/connector/nmi/transformers.rs b/crates/router/src/connector/nmi/transformers.rs index c6d763fe568..e0c26974c18 100644 --- a/crates/router/src/connector/nmi/transformers.rs +++ b/crates/router/src/connector/nmi/transformers.rs @@ -1,6 +1,10 @@ use api_models::webhooks; use cards::CardNumber; -use common_utils::{errors::CustomResult, ext_traits::XmlExt, pii}; +use common_utils::{ + errors::CustomResult, + ext_traits::XmlExt, + pii::{self, Email}, +}; use error_stack::{IntoReport, Report, ResultExt}; use masking::{ExposeInterface, PeekInterface, Secret}; use serde::{Deserialize, Serialize}; @@ -241,12 +245,13 @@ pub struct NmiCompleteRequest { transaction_type: TransactionType, security_key: Secret, orderid: Option, - ccnumber: CardNumber, - ccexp: Secret, + customer_vault_id: String, + email: Option, cardholder_auth: Option, cavv: Option, xid: Option, eci: Option, + cvv: Secret, three_ds_version: Option, directory_server_id: Option, } @@ -261,6 +266,7 @@ pub struct NmiRedirectResponseData { three_ds_version: Option, order_id: Option, directory_server_id: Option, + customer_vault_id: Option, } impl TryFrom<&NmiRouterData<&types::PaymentsCompleteAuthorizeRouterData>> for NmiCompleteRequest { @@ -285,16 +291,20 @@ impl TryFrom<&NmiRouterData<&types::PaymentsCompleteAuthorizeRouterData>> for Nm field_name: "three_ds_data", })?; - let (ccnumber, ccexp, ..) = - get_card_details(item.router_data.request.payment_method_data.clone())?; + let (_, _, cvv) = get_card_details(item.router_data.request.payment_method_data.clone())?; Ok(Self { amount: item.amount, transaction_type, security_key: auth_type.api_key, orderid: three_ds_data.order_id, - ccnumber, - ccexp, + customer_vault_id: three_ds_data.customer_vault_id.ok_or( + errors::ConnectorError::MissingRequiredField { + field_name: "customer_vault_id", + }, + )?, + email: item.router_data.request.email.clone(), + cvv, cardholder_auth: three_ds_data.card_holder_auth, cavv: three_ds_data.cavv, xid: three_ds_data.xid, diff --git a/crates/router/src/services/api.rs b/crates/router/src/services/api.rs index 72f2610a3e9..9c81d5dfe96 100644 --- a/crates/router/src/services/api.rs +++ b/crates/router/src/services/api.rs @@ -1869,11 +1869,17 @@ pub fn build_redirection_form( responseForm.appendChild(item4); var item5=document.createElement('input'); - item4.type='hidden'; - item4.name='orderId'; - item4.value='{order_id}'; + item5.type='hidden'; + item5.name='orderId'; + item5.value='{order_id}'; responseForm.appendChild(item5); + var item6=document.createElement('input'); + item6.type='hidden'; + item6.name='customerVaultId'; + item6.value='{customer_vault_id}'; + responseForm.appendChild(item6); + document.body.appendChild(responseForm); responseForm.submit(); }});