mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 09:07:09 +08:00
fix(payments): add connector metadata parsing and order category to payment router data (#9825)
This commit is contained in:
@ -370,7 +370,13 @@ impl<F: Clone> UpdateTracker<F, payments::PaymentIntentData<F>, PaymentsUpdateIn
|
||||
order_details: intent.order_details,
|
||||
allowed_payment_method_types: intent.allowed_payment_method_types,
|
||||
metadata: intent.metadata,
|
||||
connector_metadata: intent.connector_metadata,
|
||||
connector_metadata: intent
|
||||
.connector_metadata
|
||||
.map(|cm| cm.encode_to_value())
|
||||
.transpose()
|
||||
.change_context(errors::ApiErrorResponse::InternalServerError)
|
||||
.attach_printable("Failed to serialize connector_metadata")?
|
||||
.map(masking::Secret::new),
|
||||
feature_metadata: intent.feature_metadata,
|
||||
payment_link_config: intent.payment_link_config,
|
||||
request_incremental_authorization: Some(intent.request_incremental_authorization),
|
||||
|
||||
@ -7,6 +7,7 @@ use api_models::payments::{
|
||||
MandateIds, NetworkDetails, RequestSurchargeDetails,
|
||||
};
|
||||
use common_enums::{Currency, RequestIncrementalAuthorization};
|
||||
#[cfg(feature = "v1")]
|
||||
use common_utils::{
|
||||
consts::X_HS_LATENCY,
|
||||
fp_utils, pii,
|
||||
@ -15,6 +16,15 @@ use common_utils::{
|
||||
StringMajorUnitForConnector,
|
||||
},
|
||||
};
|
||||
#[cfg(feature = "v2")]
|
||||
use common_utils::{
|
||||
ext_traits::Encode,
|
||||
fp_utils, pii,
|
||||
types::{
|
||||
self as common_utils_type, AmountConvertor, MinorUnit, StringMajorUnit,
|
||||
StringMajorUnitForConnector,
|
||||
},
|
||||
};
|
||||
use diesel_models::{
|
||||
ephemeral_key,
|
||||
payment_attempt::{
|
||||
@ -377,6 +387,14 @@ pub async fn construct_payment_router_data_for_authorize<'a>(
|
||||
.change_context(errors::ApiErrorResponse::InternalServerError)
|
||||
.attach_printable("Failed to parse AdditionalPaymentData from payment_data.payment_attempt.payment_method_data")?;
|
||||
|
||||
let connector_metadata = payment_data.payment_intent.connector_metadata.clone();
|
||||
|
||||
let order_category = connector_metadata.as_ref().and_then(|cm| {
|
||||
cm.noon
|
||||
.as_ref()
|
||||
.and_then(|noon| noon.order_category.clone())
|
||||
});
|
||||
|
||||
// TODO: few fields are repeated in both routerdata and request
|
||||
let request = types::PaymentsAuthorizeData {
|
||||
payment_method_data: payment_data
|
||||
@ -403,7 +421,7 @@ pub async fn construct_payment_router_data_for_authorize<'a>(
|
||||
customer_name: None,
|
||||
payment_experience: None,
|
||||
order_details: None,
|
||||
order_category: None,
|
||||
order_category,
|
||||
session_token: None,
|
||||
enrolled_for_3ds: true,
|
||||
related_transaction_id: None,
|
||||
|
||||
@ -304,10 +304,9 @@ pub async fn construct_refund_router_data<'a, F>(
|
||||
.attach_printable("Failed to get optional customer id")?;
|
||||
|
||||
let braintree_metadata = payment_intent
|
||||
.get_optional_connector_metadata()
|
||||
.change_context(errors::ApiErrorResponse::InternalServerError)
|
||||
.attach_printable("Failed parsing ConnectorMetadata")?
|
||||
.and_then(|cm| cm.braintree);
|
||||
.connector_metadata
|
||||
.as_ref()
|
||||
.and_then(|cm| cm.braintree.clone());
|
||||
|
||||
let merchant_account_id = braintree_metadata
|
||||
.as_ref()
|
||||
|
||||
@ -143,7 +143,7 @@ pub struct KafkaPaymentIntent<'a> {
|
||||
pub order_details: Option<&'a Vec<Secret<OrderDetailsWithAmount>>>,
|
||||
|
||||
pub allowed_payment_method_types: Option<&'a Vec<common_enums::PaymentMethodType>>,
|
||||
pub connector_metadata: Option<&'a Secret<Value>>,
|
||||
pub connector_metadata: Option<&'a api_models::payments::ConnectorMetadata>,
|
||||
pub payment_link_id: Option<&'a String>,
|
||||
pub updated_by: &'a String,
|
||||
pub surcharge_applicable: Option<bool>,
|
||||
|
||||
@ -96,7 +96,7 @@ pub struct KafkaPaymentIntentEvent<'a> {
|
||||
pub order_details: Option<&'a Vec<Secret<OrderDetailsWithAmount>>>,
|
||||
|
||||
pub allowed_payment_method_types: Option<&'a Vec<common_enums::PaymentMethodType>>,
|
||||
pub connector_metadata: Option<&'a Secret<Value>>,
|
||||
pub connector_metadata: Option<&'a api_models::payments::ConnectorMetadata>,
|
||||
pub payment_link_id: Option<&'a String>,
|
||||
pub updated_by: &'a String,
|
||||
pub surcharge_applicable: Option<bool>,
|
||||
|
||||
Reference in New Issue
Block a user