mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 09:07:09 +08:00
feat(core): add merchant order reference id (#5197)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -179,6 +179,7 @@ pub struct AdyenPaymentRequest<'a> {
|
||||
line_items: Option<Vec<LineItem>>,
|
||||
channel: Option<Channel>,
|
||||
metadata: Option<pii::SecretSerdeValue>,
|
||||
merchant_order_reference: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
@ -2610,6 +2611,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -2672,6 +2674,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -2725,6 +2728,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
};
|
||||
Ok(request)
|
||||
}
|
||||
@ -2779,6 +2783,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
};
|
||||
Ok(request)
|
||||
}
|
||||
@ -2829,6 +2834,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
};
|
||||
Ok(request)
|
||||
}
|
||||
@ -2879,6 +2885,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
};
|
||||
Ok(request)
|
||||
}
|
||||
@ -2939,6 +2946,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -3034,6 +3042,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -3109,6 +3118,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -3167,6 +3177,7 @@ impl<'a>
|
||||
shopper_statement: item.router_data.request.statement_descriptor.clone(),
|
||||
shopper_ip: item.router_data.request.get_ip_address_as_optional(),
|
||||
metadata: item.router_data.request.metadata.clone(),
|
||||
merchant_order_reference: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,6 +78,7 @@ pub struct KlarnaPaymentsRequest {
|
||||
purchase_country: enums::CountryAlpha2,
|
||||
purchase_currency: enums::Currency,
|
||||
merchant_reference1: Option<String>,
|
||||
merchant_reference2: Option<String>,
|
||||
shipping_address: Option<KlarnaShippingAddress>,
|
||||
}
|
||||
|
||||
@ -213,6 +214,7 @@ impl TryFrom<&KlarnaRouterData<&types::PaymentsAuthorizeRouterData>> for KlarnaP
|
||||
})
|
||||
.collect(),
|
||||
merchant_reference1: Some(item.router_data.connector_request_reference_id.clone()),
|
||||
merchant_reference2: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
auto_capture: request.is_auto_capture()?,
|
||||
shipping_address: get_address_info(item.router_data.get_optional_shipping())
|
||||
.transpose()?,
|
||||
|
||||
@ -397,7 +397,7 @@ impl TryFrom<&PaypalRouterData<&types::PaymentsAuthorizeRouterData>> for PaypalP
|
||||
|
||||
let purchase_units = vec![PurchaseUnitRequest {
|
||||
reference_id: Some(connector_request_reference_id.clone()),
|
||||
custom_id: Some(connector_request_reference_id.clone()),
|
||||
custom_id: item.router_data.request.merchant_order_reference_id.clone(),
|
||||
invoice_id: Some(connector_request_reference_id),
|
||||
amount,
|
||||
payee,
|
||||
|
||||
@ -3136,6 +3136,7 @@ mod tests {
|
||||
charges: None,
|
||||
frm_metadata: None,
|
||||
customer_details: None,
|
||||
merchant_order_reference_id: None,
|
||||
};
|
||||
let req_cs = Some("1".to_string());
|
||||
assert!(authenticate_client_secret(req_cs.as_ref(), &payment_intent).is_ok());
|
||||
@ -3196,6 +3197,7 @@ mod tests {
|
||||
charges: None,
|
||||
frm_metadata: None,
|
||||
customer_details: None,
|
||||
merchant_order_reference_id: None,
|
||||
};
|
||||
let req_cs = Some("1".to_string());
|
||||
assert!(authenticate_client_secret(req_cs.as_ref(), &payment_intent,).is_err())
|
||||
@ -3255,6 +3257,7 @@ mod tests {
|
||||
charges: None,
|
||||
frm_metadata: None,
|
||||
customer_details: None,
|
||||
merchant_order_reference_id: None,
|
||||
};
|
||||
let req_cs = Some("1".to_string());
|
||||
assert!(authenticate_client_secret(req_cs.as_ref(), &payment_intent).is_err())
|
||||
|
||||
@ -1262,6 +1262,7 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
|
||||
request_external_three_ds_authentication: None,
|
||||
frm_metadata: m_frm_metadata,
|
||||
customer_details,
|
||||
merchant_order_reference_id: None,
|
||||
},
|
||||
&m_key_store,
|
||||
storage_scheme,
|
||||
|
||||
@ -1117,6 +1117,7 @@ impl PaymentCreate {
|
||||
charges,
|
||||
frm_metadata: request.frm_metadata.clone(),
|
||||
customer_details,
|
||||
merchant_order_reference_id: request.merchant_order_reference_id.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -372,6 +372,11 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa
|
||||
.request_external_three_ds_authentication
|
||||
.or(payment_intent.request_external_three_ds_authentication);
|
||||
|
||||
payment_intent.merchant_order_reference_id = request
|
||||
.merchant_order_reference_id
|
||||
.clone()
|
||||
.or(payment_intent.merchant_order_reference_id);
|
||||
|
||||
Self::populate_payment_attempt_with_request(&mut payment_attempt, request);
|
||||
|
||||
let creds_identifier = request
|
||||
@ -707,6 +712,11 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
|
||||
let metadata = payment_data.payment_intent.metadata.clone();
|
||||
let frm_metadata = payment_data.payment_intent.frm_metadata.clone();
|
||||
let session_expiry = payment_data.payment_intent.session_expiry;
|
||||
let merchant_order_reference_id = payment_data
|
||||
.payment_intent
|
||||
.merchant_order_reference_id
|
||||
.clone();
|
||||
|
||||
payment_data.payment_intent = state
|
||||
.store
|
||||
.update_payment_intent(
|
||||
@ -736,6 +746,7 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
|
||||
.request_external_three_ds_authentication,
|
||||
frm_metadata,
|
||||
customer_details,
|
||||
merchant_order_reference_id,
|
||||
},
|
||||
key_store,
|
||||
storage_scheme,
|
||||
|
||||
@ -880,6 +880,7 @@ where
|
||||
.set_updated(Some(payment_intent.modified_at))
|
||||
.set_charges(charges_response)
|
||||
.set_frm_metadata(payment_intent.frm_metadata)
|
||||
.set_merchant_order_reference_id(payment_intent.merchant_order_reference_id)
|
||||
.to_owned(),
|
||||
headers,
|
||||
))
|
||||
@ -1305,6 +1306,11 @@ impl<F: Clone> TryFrom<PaymentAdditionalData<'_, F>> for types::PaymentsAuthoriz
|
||||
None => None,
|
||||
};
|
||||
|
||||
let merchant_order_reference_id = payment_data
|
||||
.payment_intent
|
||||
.merchant_order_reference_id
|
||||
.clone();
|
||||
|
||||
Ok(Self {
|
||||
payment_method_data: From::from(
|
||||
payment_method_data.get_required_value("payment_method_data")?,
|
||||
@ -1350,6 +1356,7 @@ impl<F: Clone> TryFrom<PaymentAdditionalData<'_, F>> for types::PaymentsAuthoriz
|
||||
.transpose()?,
|
||||
customer_acceptance: payment_data.customer_acceptance,
|
||||
charges,
|
||||
merchant_order_reference_id,
|
||||
integrity_object: None,
|
||||
})
|
||||
}
|
||||
|
||||
@ -789,6 +789,7 @@ impl ForeignFrom<&SetupMandateRouterData> for PaymentsAuthorizeData {
|
||||
authentication_data: None,
|
||||
customer_acceptance: data.request.customer_acceptance.clone(),
|
||||
charges: None, // TODO: allow charges on mandates?
|
||||
merchant_order_reference_id: None,
|
||||
integrity_object: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,6 +55,7 @@ impl VerifyConnectorData {
|
||||
authentication_data: None,
|
||||
customer_acceptance: None,
|
||||
charges: None,
|
||||
merchant_order_reference_id: None,
|
||||
integrity_object: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,6 +226,7 @@ pub async fn generate_sample_data(
|
||||
charges: None,
|
||||
frm_metadata: Default::default(),
|
||||
customer_details: None,
|
||||
merchant_order_reference_id: Default::default(),
|
||||
};
|
||||
let payment_attempt = PaymentAttemptBatchNew {
|
||||
attempt_id: attempt_id.clone(),
|
||||
|
||||
@ -937,6 +937,7 @@ impl Default for PaymentAuthorizeType {
|
||||
customer_acceptance: None,
|
||||
charges: None,
|
||||
integrity_object: None,
|
||||
merchant_order_reference_id: None,
|
||||
};
|
||||
Self(data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user