Skip to content

Commit

Permalink
chore: add customer, shipping and billing details to payment_response…
Browse files Browse the repository at this point in the history
… for payment list api (#5401)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
  • Loading branch information
prajjwalkumar17 and hyperswitch-bot[bot] committed Jul 22, 2024
1 parent e098415 commit 3de674b
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 4 deletions.
4 changes: 3 additions & 1 deletion crates/api_models/src/payments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,9 @@ pub struct CustomerDetails {
}

/// Details of customer attached to this payment
#[derive(Debug, Default, serde::Serialize, Clone, ToSchema, PartialEq, Setter)]
#[derive(
Debug, Default, serde::Serialize, serde::Deserialize, Clone, ToSchema, PartialEq, Setter,
)]
pub struct CustomerDetailsResponse {
/// The identifier for the customer.
#[schema(value_type = Option<String>, max_length = 64, min_length = 1, example = "cus_y3oqhf46pyzuxjbcn2giaqnb44")]
Expand Down
40 changes: 37 additions & 3 deletions crates/router/src/core/payments/transformers.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use std::{fmt::Debug, marker::PhantomData, str::FromStr};

use api_models::payments::{
CustomerDetailsResponse, FrmMessage, GetAddressFromPaymentMethodData, PaymentChargeRequest,
PaymentChargeResponse, RequestSurchargeDetails,
Address, CustomerDetailsResponse, FrmMessage, GetAddressFromPaymentMethodData,
PaymentChargeRequest, PaymentChargeResponse, RequestSurchargeDetails,
};
#[cfg(feature = "payouts")]
use api_models::payouts::PayoutAttemptResponse;
Expand Down Expand Up @@ -1036,7 +1036,7 @@ impl ForeignFrom<(storage::PaymentIntent, storage::PaymentAttempt)> for api::Pay
description: pi.description,
metadata: pi.metadata,
order_details: pi.order_details,
customer_id: pi.customer_id,
customer_id: pi.customer_id.clone(),
connector: pa.connector,
payment_method: pa.payment_method,
payment_method_type: pa.payment_method_type,
Expand All @@ -1060,6 +1060,40 @@ impl ForeignFrom<(storage::PaymentIntent, storage::PaymentAttempt)> for api::Pay
}
}),
merchant_order_reference_id: pi.merchant_order_reference_id,
customer: pi.customer_details.and_then(|customer_details|
match customer_details.into_inner().expose().parse_value::<CustomerData>("CustomerData"){
Ok(parsed_data) => Some(
CustomerDetailsResponse {
id: pi.customer_id,
name: parsed_data.name,
phone: parsed_data.phone,
email: parsed_data.email,
phone_country_code:parsed_data.phone_country_code
}),
Err(e) => {
router_env::logger::error!("Failed to parse 'CustomerDetailsResponse' from payment method data. Error: {e:?}");
None
}
}
),
billing: pi.billing_details.and_then(|billing_details|
match billing_details.into_inner().expose().parse_value::<Address>("Address") {
Ok(parsed_data) => Some(parsed_data),
Err(e) => {
router_env::logger::error!("Failed to parse 'BillingAddress' from payment method data. Error: {e:?}");
None
}
}
),
shipping: pi.shipping_details.and_then(|shipping_details|
match shipping_details.into_inner().expose().parse_value::<Address>("Address") {
Ok(parsed_data) => Some(parsed_data),
Err(e) => {
router_env::logger::error!("Failed to parse 'ShippingAddress' from payment method data. Error: {e:?}");
None
}
}
),
..Default::default()
}
}
Expand Down

0 comments on commit 3de674b

Please sign in to comment.