diff --git a/crates/router/src/compatibility/stripe/setup_intents/types.rs b/crates/router/src/compatibility/stripe/setup_intents/types.rs index d1d7de2364..82815ea4d0 100644 --- a/crates/router/src/compatibility/stripe/setup_intents/types.rs +++ b/crates/router/src/compatibility/stripe/setup_intents/types.rs @@ -125,6 +125,7 @@ impl From for payments::Address { pub struct StripeSetupIntentRequest { pub confirm: Option, pub customer: Option, + pub connector: Option>, pub description: Option, pub currency: Option, pub payment_method_data: Option, @@ -165,6 +166,18 @@ impl TryFrom for payments::PaymentsRequest { } None => (None, None), }; + let routable_connector: Option = + item.connector.and_then(|v| v.into_iter().next()); + + let routing = routable_connector + .map(api_types::RoutingAlgorithm::Single) + .map(|r| { + serde_json::to_value(r) + .into_report() + .change_context(errors::ApiErrorResponse::InternalServerError) + .attach_printable("converting to routing failed") + }) + .transpose()?; let ip_address = item .receipt_ipaddress .map(|ip| std::net::IpAddr::from_str(ip.as_str())) @@ -228,6 +241,7 @@ impl TryFrom for payments::PaymentsRequest { setup_future_usage: item.setup_future_usage, merchant_connector_details: item.merchant_connector_details, authentication_type, + routing, mandate_data: mandate_options, browser_info: Some( serde_json::to_value(crate::types::BrowserInformation { @@ -360,6 +374,7 @@ pub struct StripeSetupIntentResponse { pub object: String, pub status: StripeSetupStatus, pub client_secret: Option>, + pub metadata: Option, #[serde(with = "common_utils::custom_serde::iso8601::option")] pub created: Option, pub customer: Option, @@ -403,6 +418,7 @@ impl From for StripeSetupIntentResponse { charges: payment_intent::Charges::new(), created: resp.created, customer: resp.customer_id, + metadata: resp.udf, id: resp.payment_id, refunds: resp .refunds