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