Skip to content

Commit 2515d75

Browse files
feat(router): add merchant_configuration_id in netcetera metadata and make other merchant configurations optional (#7348)
1 parent 61fa0a7 commit 2515d75

File tree

8 files changed

+70
-39
lines changed

8 files changed

+70
-39
lines changed

crates/connector_configs/src/common_config.rs

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ pub struct ApiModelMetaData {
107107
pub locale: Option<String>,
108108
pub card_brands: Option<Vec<String>>,
109109
pub merchant_category_code: Option<String>,
110+
pub merchant_configuration_id: Option<String>,
110111
}
111112

112113
#[serde_with::skip_serializing_none]

crates/connector_configs/src/connector.rs

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ pub struct ConfigMetadata {
118118
pub locale: Option<InputData>,
119119
pub card_brands: Option<InputData>,
120120
pub merchant_category_code: Option<InputData>,
121+
pub merchant_configuration_id: Option<InputData>,
121122
}
122123

123124
#[serde_with::skip_serializing_none]

crates/connector_configs/toml/development.toml

+11-5
Original file line numberDiff line numberDiff line change
@@ -4059,7 +4059,7 @@ private_key="Base64 encoded PEM formatted private key"
40594059
name="mcc"
40604060
label="MCC"
40614061
placeholder="Enter MCC"
4062-
required=true
4062+
required=false
40634063
type="Text"
40644064
[netcetera.metadata.endpoint_prefix]
40654065
name="endpoint_prefix"
@@ -4071,25 +4071,31 @@ type="Text"
40714071
name="merchant_country_code"
40724072
label="3 digit numeric country code"
40734073
placeholder="Enter 3 digit numeric country code"
4074-
required=true
4074+
required=false
40754075
type="Text"
40764076
[netcetera.metadata.merchant_name]
40774077
name="merchant_name"
40784078
label="Name of the merchant"
40794079
placeholder="Enter Name of the merchant"
4080-
required=true
4080+
required=false
40814081
type="Text"
40824082
[netcetera.metadata.three_ds_requestor_name]
40834083
name="three_ds_requestor_name"
40844084
label="ThreeDS requestor name"
40854085
placeholder="Enter ThreeDS requestor name"
4086-
required=true
4086+
required=false
40874087
type="Text"
40884088
[netcetera.metadata.three_ds_requestor_id]
40894089
name="three_ds_requestor_id"
40904090
label="ThreeDS request id"
40914091
placeholder="Enter ThreeDS request id"
4092-
required=true
4092+
required=false
4093+
type="Text"
4094+
[netcetera.metadata.merchant_configuration_id]
4095+
name="merchant_configuration_id"
4096+
label="Merchant Configuration ID"
4097+
placeholder="Enter Merchant Configuration ID"
4098+
required=false
40934099
type="Text"
40944100

40954101
[taxjar]

crates/connector_configs/toml/production.toml

+11-5
Original file line numberDiff line numberDiff line change
@@ -2995,31 +2995,37 @@ type="Text"
29952995
name="mcc"
29962996
label="MCC"
29972997
placeholder="Enter MCC"
2998-
required=true
2998+
required=false
29992999
type="Text"
30003000
[netcetera.metadata.merchant_country_code]
30013001
name="merchant_country_code"
30023002
label="3 digit numeric country code"
30033003
placeholder="Enter 3 digit numeric country code"
3004-
required=true
3004+
required=false
30053005
type="Text"
30063006
[netcetera.metadata.merchant_name]
30073007
name="merchant_name"
30083008
label="Name of the merchant"
30093009
placeholder="Enter Name of the merchant"
3010-
required=true
3010+
required=false
30113011
type="Text"
30123012
[netcetera.metadata.three_ds_requestor_name]
30133013
name="three_ds_requestor_name"
30143014
label="ThreeDS requestor name"
30153015
placeholder="Enter ThreeDS requestor name"
3016-
required=true
3016+
required=false
30173017
type="Text"
30183018
[netcetera.metadata.three_ds_requestor_id]
30193019
name="three_ds_requestor_id"
30203020
label="ThreeDS request id"
30213021
placeholder="Enter ThreeDS request id"
3022-
required=true
3022+
required=false
3023+
type="Text"
3024+
[netcetera.metadata.merchant_configuration_id]
3025+
name="merchant_configuration_id"
3026+
label="Merchant Configuration ID"
3027+
placeholder="Enter Merchant Configuration ID"
3028+
required=false
30233029
type="Text"
30243030

30253031
[taxjar]

crates/connector_configs/toml/sandbox.toml

+11-5
Original file line numberDiff line numberDiff line change
@@ -4001,31 +4001,37 @@ type="Text"
40014001
name="mcc"
40024002
label="MCC"
40034003
placeholder="Enter MCC"
4004-
required=true
4004+
required=false
40054005
type="Text"
40064006
[netcetera.metadata.merchant_country_code]
40074007
name="merchant_country_code"
40084008
label="3 digit numeric country code"
40094009
placeholder="Enter 3 digit numeric country code"
4010-
required=true
4010+
required=false
40114011
type="Text"
40124012
[netcetera.metadata.merchant_name]
40134013
name="merchant_name"
40144014
label="Name of the merchant"
40154015
placeholder="Enter Name of the merchant"
4016-
required=true
4016+
required=false
40174017
type="Text"
40184018
[netcetera.metadata.three_ds_requestor_name]
40194019
name="three_ds_requestor_name"
40204020
label="ThreeDS requestor name"
40214021
placeholder="Enter ThreeDS requestor name"
4022-
required=true
4022+
required=false
40234023
type="Text"
40244024
[netcetera.metadata.three_ds_requestor_id]
40254025
name="three_ds_requestor_id"
40264026
label="ThreeDS request id"
40274027
placeholder="Enter ThreeDS request id"
4028-
required=true
4028+
required=false
4029+
type="Text"
4030+
[netcetera.metadata.merchant_configuration_id]
4031+
name="merchant_configuration_id"
4032+
label="Merchant Configuration ID"
4033+
placeholder="Enter Merchant Configuration ID"
4034+
required=false
40294035
type="Text"
40304036

40314037

crates/router/src/connector/netcetera/transformers.rs

+12-11
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,13 @@ pub struct NetceteraErrorDetails {
253253

254254
#[derive(Debug, Serialize, Deserialize)]
255255
pub struct NetceteraMetaData {
256-
pub mcc: String,
257-
pub merchant_country_code: String,
258-
pub merchant_name: String,
256+
pub mcc: Option<String>,
257+
pub merchant_country_code: Option<String>,
258+
pub merchant_name: Option<String>,
259259
pub endpoint_prefix: String,
260-
pub three_ds_requestor_name: String,
261-
pub three_ds_requestor_id: String,
260+
pub three_ds_requestor_name: Option<String>,
261+
pub three_ds_requestor_id: Option<String>,
262+
pub merchant_configuration_id: Option<String>,
262263
}
263264

264265
impl TryFrom<&Option<common_utils::pii::SecretSerdeValue>> for NetceteraMetaData {
@@ -515,13 +516,13 @@ impl TryFrom<&NetceteraRouterData<&types::authentication::ConnectorAuthenticatio
515516
.parse_value("NetceteraMetaData")
516517
.change_context(errors::ConnectorError::RequestEncodingFailed)?;
517518
let merchant_data = netcetera_types::MerchantData {
518-
merchant_configuration_id: None,
519-
mcc: Some(connector_meta_data.mcc),
520-
merchant_country_code: Some(connector_meta_data.merchant_country_code),
521-
merchant_name: Some(connector_meta_data.merchant_name),
519+
merchant_configuration_id: connector_meta_data.merchant_configuration_id,
520+
mcc: connector_meta_data.mcc,
521+
merchant_country_code: connector_meta_data.merchant_country_code,
522+
merchant_name: connector_meta_data.merchant_name,
522523
notification_url: request.return_url.clone(),
523-
three_ds_requestor_id: Some(connector_meta_data.three_ds_requestor_id),
524-
three_ds_requestor_name: Some(connector_meta_data.three_ds_requestor_name),
524+
three_ds_requestor_id: connector_meta_data.three_ds_requestor_id,
525+
three_ds_requestor_name: connector_meta_data.three_ds_requestor_name,
525526
white_list_status: None,
526527
trust_list_status: None,
527528
seller_info: None,

crates/router/src/core/payments/helpers.rs

+21-11
Original file line numberDiff line numberDiff line change
@@ -6542,7 +6542,7 @@ pub fn validate_mandate_data_and_future_usage(
65426542
pub enum UnifiedAuthenticationServiceFlow {
65436543
ClickToPayInitiate,
65446544
ExternalAuthenticationInitiate {
6545-
acquirer_details: authentication::types::AcquirerDetails,
6545+
acquirer_details: Option<authentication::types::AcquirerDetails>,
65466546
card_number: ::cards::CardNumber,
65476547
token: String,
65486548
},
@@ -6607,7 +6607,7 @@ pub async fn decide_action_for_unified_authentication_service<F: Clone>(
66076607

66086608
pub enum PaymentExternalAuthenticationFlow {
66096609
PreAuthenticationFlow {
6610-
acquirer_details: authentication::types::AcquirerDetails,
6610+
acquirer_details: Option<authentication::types::AcquirerDetails>,
66116611
card_number: ::cards::CardNumber,
66126612
token: String,
66136613
},
@@ -6684,17 +6684,27 @@ pub async fn get_payment_external_authentication_flow_during_confirm<F: Clone>(
66846684
connector_data.merchant_connector_id.as_ref(),
66856685
)
66866686
.await?;
6687-
let acquirer_details: authentication::types::AcquirerDetails = payment_connector_mca
6687+
let acquirer_details = payment_connector_mca
66886688
.get_metadata()
6689-
.get_required_value("merchant_connector_account.metadata")?
6690-
.peek()
66916689
.clone()
6692-
.parse_value("AcquirerDetails")
6693-
.change_context(errors::ApiErrorResponse::PreconditionFailed {
6694-
message:
6695-
"acquirer_bin and acquirer_merchant_id not found in Payment Connector's Metadata"
6696-
.to_string(),
6697-
})?;
6690+
.and_then(|metadata| {
6691+
metadata
6692+
.peek()
6693+
.clone()
6694+
.parse_value::<authentication::types::AcquirerDetails>("AcquirerDetails")
6695+
.change_context(errors::ApiErrorResponse::PreconditionFailed {
6696+
message:
6697+
"acquirer_bin and acquirer_merchant_id not found in Payment Connector's Metadata"
6698+
.to_string(),
6699+
})
6700+
.inspect_err(|err| {
6701+
logger::error!(
6702+
"Failed to parse acquirer details from Payment Connector's Metadata: {:?}",
6703+
err
6704+
);
6705+
})
6706+
.ok()
6707+
});
66986708
Some(PaymentExternalAuthenticationFlow::PreAuthenticationFlow {
66996709
card_number,
67006710
token,

crates/router/src/core/payments/operations/payment_confirm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,7 @@ impl<F: Clone + Send + Sync> Domain<F, api::PaymentsRequest, PaymentData<F>> for
981981
card_number,
982982
token,
983983
business_profile,
984-
Some(acquirer_details),
984+
acquirer_details,
985985
Some(payment_data.payment_attempt.payment_id.clone()),
986986
payment_data.payment_attempt.organization_id.clone(),
987987
)
@@ -1219,7 +1219,7 @@ impl<F: Clone + Send + Sync> Domain<F, api::PaymentsRequest, PaymentData<F>> for
12191219
state,
12201220
pre_auth_response,
12211221
authentication.clone(),
1222-
Some(acquirer_details),
1222+
acquirer_details,
12231223
).await?;
12241224
payment_data.authentication = Some(updated_authentication.clone());
12251225

0 commit comments

Comments
 (0)