bugfix(refunds): skip validate refunds for card (#672)

This commit is contained in:
Narayan Bhat
2023-02-27 19:01:11 +05:30
committed by GitHub
parent db8bc16421
commit 5cdbef0489

View File

@ -1,5 +1,5 @@
use common_utils::ext_traits::StringExt;
use error_stack::{report, ResultExt};
use error_stack::{report, IntoReport, ResultExt};
use router_env::{instrument, tracing};
use time::PrimitiveDateTime;
@ -149,27 +149,38 @@ pub fn validate_for_valid_refunds(
.parse_enum("connector")
.change_context(errors::ApiErrorResponse::IncorrectConnectorNameGiven)?;
let payment_method_type = payment_attempt
.payment_method_type
.clone()
.get_required_value("payment_method_type")?;
let payment_method = payment_attempt
.payment_method
.as_ref()
.get_required_value("payment_method")?;
utils::when(
matches!(
(connector, payment_method_type),
(
api_models::enums::Connector::Braintree,
storage_models::enums::PaymentMethodType::Paypal
) | (
api_models::enums::Connector::Klarna,
storage_models::enums::PaymentMethodType::Klarna
match payment_method {
storage_models::enums::PaymentMethod::PayLater
| storage_models::enums::PaymentMethod::Wallet => {
let payment_method_type = payment_attempt
.payment_method_type
.clone()
.get_required_value("payment_method_type")?;
utils::when(
matches!(
(connector, payment_method_type),
(
api_models::enums::Connector::Braintree,
storage_models::enums::PaymentMethodType::Paypal,
) | (
api_models::enums::Connector::Klarna,
storage_models::enums::PaymentMethodType::Klarna
)
),
|| {
Err(errors::ApiErrorResponse::RefundNotPossible {
connector: connector.to_string(),
})
},
)
),
|| {
Err(errors::ApiErrorResponse::RefundNotPossible {
connector: connector.to_string(),
})
},
)?;
Ok(())
.into_report()
}
_ => Ok(()),
}
}