Skip to content

Commit

Permalink
refactor(customers_v2): include minor fixes for customer v2 flows (#6876
Browse files Browse the repository at this point in the history
)
  • Loading branch information
SanchithHegde authored Dec 20, 2024
1 parent 81b324c commit 5cdeaf8
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 8 deletions.
16 changes: 16 additions & 0 deletions api-reference-v2/openapi_spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -14585,6 +14585,7 @@
"id",
"status",
"amount",
"customer_id",
"connector",
"client_secret",
"created",
Expand All @@ -14606,6 +14607,13 @@
"amount": {
"$ref": "#/components/schemas/ConfirmIntentAmountDetailsResponse"
},
"customer_id": {
"type": "string",
"description": "The identifier for the customer",
"example": "12345_cus_01926c58bc6e77c09e809964e72af8c8",
"maxLength": 64,
"minLength": 32
},
"connector": {
"type": "string",
"description": "The connector used for the payment",
Expand Down Expand Up @@ -16330,6 +16338,7 @@
"id",
"status",
"amount",
"customer_id",
"client_secret",
"created"
],
Expand All @@ -16347,6 +16356,13 @@
"amount": {
"$ref": "#/components/schemas/ConfirmIntentAmountDetailsResponse"
},
"customer_id": {
"type": "string",
"description": "The identifier for the customer",
"example": "12345_cus_01926c58bc6e77c09e809964e72af8c8",
"maxLength": 64,
"minLength": 32
},
"connector": {
"type": "string",
"description": "The connector used for the payment",
Expand Down
8 changes: 5 additions & 3 deletions crates/api_models/src/events/customer.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use common_utils::events::{ApiEventMetric, ApiEventsType};

use crate::customers::{CustomerDeleteResponse, CustomerRequest, CustomerResponse};
use crate::customers::{
CustomerDeleteResponse, CustomerRequest, CustomerResponse, CustomerUpdateRequestInternal,
};

#[cfg(all(any(feature = "v1", feature = "v2"), not(feature = "customer_v2")))]
impl ApiEventMetric for CustomerDeleteResponse {
Expand Down Expand Up @@ -55,7 +57,7 @@ impl ApiEventMetric for CustomerResponse {
}

#[cfg(all(any(feature = "v1", feature = "v2"), not(feature = "customer_v2")))]
impl ApiEventMetric for crate::customers::CustomerUpdateRequestInternal {
impl ApiEventMetric for CustomerUpdateRequestInternal {
fn get_api_event_type(&self) -> Option<ApiEventsType> {
Some(ApiEventsType::Customer {
customer_id: self.customer_id.clone(),
Expand All @@ -64,7 +66,7 @@ impl ApiEventMetric for crate::customers::CustomerUpdateRequestInternal {
}

#[cfg(all(feature = "v2", feature = "customer_v2"))]
impl ApiEventMetric for crate::customers::CustomerUpdateRequestInternal {
impl ApiEventMetric for CustomerUpdateRequestInternal {
fn get_api_event_type(&self) -> Option<ApiEventsType> {
Some(ApiEventsType::Customer {
customer_id: Some(self.id.clone()),
Expand Down
18 changes: 18 additions & 0 deletions crates/api_models/src/payments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4803,6 +4803,15 @@ pub struct PaymentsConfirmIntentResponse {
/// Amount related information for this payment and attempt
pub amount: ConfirmIntentAmountDetailsResponse,

/// The identifier for the customer
#[schema(
min_length = 32,
max_length = 64,
example = "12345_cus_01926c58bc6e77c09e809964e72af8c8",
value_type = String
)]
pub customer_id: Option<id_type::GlobalCustomerId>,

/// The connector used for the payment
#[schema(example = "stripe")]
pub connector: String,
Expand Down Expand Up @@ -4872,6 +4881,15 @@ pub struct PaymentsRetrieveResponse {
/// Amount related information for this payment and attempt
pub amount: ConfirmIntentAmountDetailsResponse,

/// The identifier for the customer
#[schema(
min_length = 32,
max_length = 64,
example = "12345_cus_01926c58bc6e77c09e809964e72af8c8",
value_type = String
)]
pub customer_id: Option<id_type::GlobalCustomerId>,

/// The connector used for the payment
#[schema(example = "stripe")]
pub connector: Option<String>,
Expand Down
10 changes: 5 additions & 5 deletions crates/router/src/core/customers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ pub async fn delete_customer(
) -> errors::CustomerResponse<customers::CustomerDeleteResponse> {
let db = &*state.store;
let key_manager_state = &(&state).into();
id.fetch_domain_model_and_update_and_generate_delete_customer_response(
id.redact_customer_details_and_generate_response(
db,
&key_store,
&merchant_account,
Expand All @@ -585,7 +585,7 @@ pub async fn delete_customer(
))]
#[async_trait::async_trait]
impl CustomerDeleteBridge for id_type::GlobalCustomerId {
async fn fetch_domain_model_and_update_and_generate_delete_customer_response<'a>(
async fn redact_customer_details_and_generate_response<'a>(
&'a self,
db: &'a dyn StorageInterface,
key_store: &'a domain::MerchantKeyStore,
Expand Down Expand Up @@ -717,7 +717,7 @@ impl CustomerDeleteBridge for id_type::GlobalCustomerId {

#[async_trait::async_trait]
trait CustomerDeleteBridge {
async fn fetch_domain_model_and_update_and_generate_delete_customer_response<'a>(
async fn redact_customer_details_and_generate_response<'a>(
&'a self,
db: &'a dyn StorageInterface,
key_store: &'a domain::MerchantKeyStore,
Expand All @@ -742,7 +742,7 @@ pub async fn delete_customer(
let db = &*state.store;
let key_manager_state = &(&state).into();
customer_id
.fetch_domain_model_and_update_and_generate_delete_customer_response(
.redact_customer_details_and_generate_response(
db,
&key_store,
&merchant_account,
Expand All @@ -759,7 +759,7 @@ pub async fn delete_customer(
))]
#[async_trait::async_trait]
impl CustomerDeleteBridge for id_type::CustomerId {
async fn fetch_domain_model_and_update_and_generate_delete_customer_response<'a>(
async fn redact_customer_details_and_generate_response<'a>(
&'a self,
db: &'a dyn StorageInterface,
key_store: &'a domain::MerchantKeyStore,
Expand Down
2 changes: 2 additions & 0 deletions crates/router/src/core/payments/transformers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1238,6 +1238,7 @@ where
id: payment_intent.id.clone(),
status: payment_intent.status,
amount,
customer_id: payment_intent.customer_id.clone(),
connector,
client_secret: payment_intent.client_secret.clone(),
created: payment_intent.created_at,
Expand Down Expand Up @@ -1311,6 +1312,7 @@ where
id: payment_intent.id.clone(),
status: payment_intent.status,
amount,
customer_id: payment_intent.customer_id.clone(),
connector,
billing: payment_address
.get_payment_billing()
Expand Down

0 comments on commit 5cdeaf8

Please sign in to comment.