From 50f16d270a46ee0635cac7a8fe95abb1eafb8327 Mon Sep 17 00:00:00 2001 From: Kartikeya Hegde Date: Sat, 14 Jan 2023 22:57:36 +0530 Subject: [PATCH] chore: Allow to update refund reason (#372) --- crates/api_models/src/refunds.rs | 4 ++++ crates/router/src/compatibility/stripe/refunds/types.rs | 1 + crates/router/src/core/refunds.rs | 3 ++- crates/storage_models/src/refund.rs | 7 +++++-- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/api_models/src/refunds.rs b/crates/api_models/src/refunds.rs index 02a92f3037..1669e9faf2 100644 --- a/crates/api_models/src/refunds.rs +++ b/crates/api_models/src/refunds.rs @@ -48,6 +48,10 @@ pub struct RefundRequest { #[derive(Default, Debug, ToSchema, Clone, Deserialize)] #[serde(deny_unknown_fields)] pub struct RefundUpdateRequest { + /// An arbitrary string attached to the object. Often useful for displaying to users and your customer support executive + #[schema(max_length = 255, example = "Customer returned the product")] + pub reason: Option, + /// You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object. #[schema(value_type = Option, example = r#"{ "city": "NY", "unit": "245" }"#)] pub metadata: Option, diff --git a/crates/router/src/compatibility/stripe/refunds/types.rs b/crates/router/src/compatibility/stripe/refunds/types.rs index 94c4fb1769..fe0cf42325 100644 --- a/crates/router/src/compatibility/stripe/refunds/types.rs +++ b/crates/router/src/compatibility/stripe/refunds/types.rs @@ -49,6 +49,7 @@ impl From for refunds::RefundUpdateRequest { fn from(req: StripeUpdateRefundRequest) -> Self { Self { metadata: req.metadata, + reason: None, } } } diff --git a/crates/router/src/core/refunds.rs b/crates/router/src/core/refunds.rs index eb8dca47a0..987f96bb3b 100644 --- a/crates/router/src/core/refunds.rs +++ b/crates/router/src/core/refunds.rs @@ -328,8 +328,9 @@ pub async fn refund_update_core( let response = db .update_refund( refund, - storage::RefundUpdate::MetadataUpdate { + storage::RefundUpdate::MetadataAndReasonUpdate { metadata: req.metadata, + reason: req.reason, }, merchant_account.storage_scheme, ) diff --git a/crates/storage_models/src/refund.rs b/crates/storage_models/src/refund.rs index e74935fdf5..dc2636bc4b 100644 --- a/crates/storage_models/src/refund.rs +++ b/crates/storage_models/src/refund.rs @@ -81,8 +81,9 @@ pub enum RefundUpdate { refund_error_message: Option, refund_arn: String, }, - MetadataUpdate { + MetadataAndReasonUpdate { metadata: Option, + reason: Option, }, StatusUpdate { connector_refund_id: Option, @@ -104,6 +105,7 @@ pub struct RefundUpdateInternal { refund_error_message: Option, refund_arn: Option, metadata: Option, + refund_reason: Option, } impl From for RefundUpdateInternal { @@ -123,8 +125,9 @@ impl From for RefundUpdateInternal { refund_arn: Some(refund_arn), ..Default::default() }, - RefundUpdate::MetadataUpdate { metadata } => Self { + RefundUpdate::MetadataAndReasonUpdate { metadata, reason } => Self { metadata, + refund_reason: reason, ..Default::default() }, RefundUpdate::StatusUpdate {