diff --git a/crates/router/src/connector/aci/transformers.rs b/crates/router/src/connector/aci/transformers.rs index 846f619d1d02..d72d6d6fafea 100644 --- a/crates/router/src/connector/aci/transformers.rs +++ b/crates/router/src/connector/aci/transformers.rs @@ -527,14 +527,14 @@ impl impl TryFrom<( &AciRouterData<&types::PaymentsAuthorizeRouterData>, - &api_models::payments::PayLaterData, + &domain::payments::PayLaterData, )> for AciPaymentsRequest { type Error = Error; fn try_from( value: ( &AciRouterData<&types::PaymentsAuthorizeRouterData>, - &api_models::payments::PayLaterData, + &domain::payments::PayLaterData, ), ) -> Result { let (item, _pay_later_data) = value; diff --git a/crates/router/src/connector/adyen/transformers.rs b/crates/router/src/connector/adyen/transformers.rs index a8bd1ccff30c..63c67c80ef44 100644 --- a/crates/router/src/connector/adyen/transformers.rs +++ b/crates/router/src/connector/adyen/transformers.rs @@ -2143,7 +2143,7 @@ pub fn check_required_field<'a, T>( impl<'a> TryFrom<( - &api::PayLaterData, + &domain::PayLaterData, &Option, &Option, &Option, @@ -2156,7 +2156,7 @@ impl<'a> type Error = Error; fn try_from( value: ( - &api::PayLaterData, + &domain::PayLaterData, &Option, &Option, &Option, @@ -2177,7 +2177,7 @@ impl<'a> delivery_address, ) = value; match pay_later_data { - api_models::payments::PayLaterData::KlarnaRedirect { .. } => { + domain::payments::PayLaterData::KlarnaRedirect { .. } => { let klarna = PmdForPaymentType { payment_type: PaymentType::Klarna, }; @@ -2187,7 +2187,7 @@ impl<'a> Ok(AdyenPaymentMethod::AdyenKlarna(Box::new(klarna))) } - api_models::payments::PayLaterData::AffirmRedirect { .. } => { + domain::payments::PayLaterData::AffirmRedirect { .. } => { check_required_field(shopper_email, "email")?; check_required_field(shopper_name, "billing.first_name, billing.last_name")?; check_required_field(telephone_number, "billing.phone")?; @@ -2199,7 +2199,7 @@ impl<'a> }, ))) } - api_models::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { + domain::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { check_required_field(shopper_email, "email")?; check_required_field(shopper_name, "billing.first_name, billing.last_name")?; check_required_field(delivery_address, "shipping")?; @@ -2221,7 +2221,7 @@ impl<'a> })? } } - api_models::payments::PayLaterData::PayBrightRedirect { .. } => { + domain::payments::PayLaterData::PayBrightRedirect { .. } => { check_required_field(shopper_name, "billing.first_name, billing.last_name")?; check_required_field(telephone_number, "billing.phone")?; check_required_field(shopper_email, "email")?; @@ -2230,13 +2230,13 @@ impl<'a> check_required_field(country_code, "billing.country")?; Ok(AdyenPaymentMethod::PayBright) } - api_models::payments::PayLaterData::WalleyRedirect { .. } => { + domain::payments::PayLaterData::WalleyRedirect { .. } => { //[TODO: Line items specific sub-fields are mandatory] check_required_field(telephone_number, "billing.phone")?; check_required_field(shopper_email, "email")?; Ok(AdyenPaymentMethod::Walley) } - api_models::payments::PayLaterData::AlmaRedirect { .. } => { + domain::payments::PayLaterData::AlmaRedirect { .. } => { check_required_field(telephone_number, "billing.phone")?; check_required_field(shopper_email, "email")?; check_required_field(billing_address, "billing")?; @@ -2247,14 +2247,14 @@ impl<'a> }, ))) } - api_models::payments::PayLaterData::AtomeRedirect { .. } => { + domain::payments::PayLaterData::AtomeRedirect { .. } => { check_required_field(shopper_email, "email")?; check_required_field(shopper_name, "billing.first_name, billing.last_name")?; check_required_field(telephone_number, "billing.phone")?; check_required_field(billing_address, "billing")?; Ok(AdyenPaymentMethod::Atome) } - payments::PayLaterData::KlarnaSdk { .. } => { + domain::payments::PayLaterData::KlarnaSdk { .. } => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Adyen"), ) @@ -3053,14 +3053,14 @@ impl<'a> impl<'a> TryFrom<( &AdyenRouterData<&types::PaymentsAuthorizeRouterData>, - &api::PayLaterData, + &domain::PayLaterData, )> for AdyenPaymentRequest<'a> { type Error = Error; fn try_from( value: ( &AdyenRouterData<&types::PaymentsAuthorizeRouterData>, - &api::PayLaterData, + &domain::PayLaterData, ), ) -> Result { let (item, paylater_data) = value; diff --git a/crates/router/src/connector/dummyconnector/transformers.rs b/crates/router/src/connector/dummyconnector/transformers.rs index cf4e19b8e50d..ed579f7a1c13 100644 --- a/crates/router/src/connector/dummyconnector/transformers.rs +++ b/crates/router/src/connector/dummyconnector/transformers.rs @@ -130,13 +130,13 @@ pub enum DummyConnectorPayLater { AfterPayClearPay, } -impl TryFrom for DummyConnectorPayLater { +impl TryFrom for DummyConnectorPayLater { type Error = error_stack::Report; - fn try_from(value: api_models::payments::PayLaterData) -> Result { + fn try_from(value: domain::payments::PayLaterData) -> Result { match value { - api_models::payments::PayLaterData::KlarnaRedirect { .. } => Ok(Self::Klarna), - api_models::payments::PayLaterData::AffirmRedirect {} => Ok(Self::Affirm), - api_models::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { + domain::payments::PayLaterData::KlarnaRedirect { .. } => Ok(Self::Klarna), + domain::payments::PayLaterData::AffirmRedirect {} => Ok(Self::Affirm), + domain::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { Ok(Self::AfterPayClearPay) } _ => Err(errors::ConnectorError::NotImplemented("Dummy pay later".to_string()).into()), diff --git a/crates/router/src/connector/klarna.rs b/crates/router/src/connector/klarna.rs index 0d1a37d1a44f..190e1705411b 100644 --- a/crates/router/src/connector/klarna.rs +++ b/crates/router/src/connector/klarna.rs @@ -21,7 +21,6 @@ use crate::{ self, api::{self, ConnectorCommon}, domain, - storage::enums as storage_enums, }, utils::BytesExt, }; @@ -307,113 +306,113 @@ impl .ok_or_else(connector_utils::missing_field_err("payment_method_type"))?; match payment_method_data { - domain::PaymentMethodData::PayLater( - api_models::payments::PayLaterData::KlarnaSdk { token }, - ) => match (payment_experience, payment_method_type) { - ( - storage_enums::PaymentExperience::InvokeSdkClient, - storage_enums::PaymentMethodType::Klarna, - ) => Ok(format!( - "{}payments/v1/authorizations/{}/order", - self.base_url(connectors), - token - )), - ( - storage_enums::PaymentExperience::DisplayQrCode - | storage_enums::PaymentExperience::DisplayWaitScreen - | storage_enums::PaymentExperience::InvokePaymentApp - | storage_enums::PaymentExperience::InvokeSdkClient - | storage_enums::PaymentExperience::LinkWallet - | storage_enums::PaymentExperience::OneClick - | storage_enums::PaymentExperience::RedirectToUrl, - api_models::enums::PaymentMethodType::Ach - | api_models::enums::PaymentMethodType::Affirm - | api_models::enums::PaymentMethodType::AfterpayClearpay - | api_models::enums::PaymentMethodType::Alfamart - | api_models::enums::PaymentMethodType::AliPay - | api_models::enums::PaymentMethodType::AliPayHk - | api_models::enums::PaymentMethodType::Alma - | api_models::enums::PaymentMethodType::ApplePay - | api_models::enums::PaymentMethodType::Atome - | api_models::enums::PaymentMethodType::Bacs - | api_models::enums::PaymentMethodType::BancontactCard - | api_models::enums::PaymentMethodType::Becs - | api_models::enums::PaymentMethodType::Benefit - | api_models::enums::PaymentMethodType::Bizum - | api_models::enums::PaymentMethodType::Blik - | api_models::enums::PaymentMethodType::Boleto - | api_models::enums::PaymentMethodType::BcaBankTransfer - | api_models::enums::PaymentMethodType::BniVa - | api_models::enums::PaymentMethodType::BriVa - | api_models::enums::PaymentMethodType::CardRedirect - | api_models::enums::PaymentMethodType::CimbVa - | api_models::enums::PaymentMethodType::ClassicReward - | api_models::enums::PaymentMethodType::Credit - | api_models::enums::PaymentMethodType::CryptoCurrency - | api_models::enums::PaymentMethodType::Cashapp - | api_models::enums::PaymentMethodType::Dana - | api_models::enums::PaymentMethodType::DanamonVa - | api_models::enums::PaymentMethodType::Debit - | api_models::enums::PaymentMethodType::Efecty - | api_models::enums::PaymentMethodType::Eps - | api_models::enums::PaymentMethodType::Evoucher - | api_models::enums::PaymentMethodType::Giropay - | api_models::enums::PaymentMethodType::Givex - | api_models::enums::PaymentMethodType::GooglePay - | api_models::enums::PaymentMethodType::GoPay - | api_models::enums::PaymentMethodType::Gcash - | api_models::enums::PaymentMethodType::Ideal - | api_models::enums::PaymentMethodType::Interac - | api_models::enums::PaymentMethodType::Indomaret - | api_models::enums::PaymentMethodType::Klarna - | api_models::enums::PaymentMethodType::KakaoPay - | api_models::enums::PaymentMethodType::MandiriVa - | api_models::enums::PaymentMethodType::Knet - | api_models::enums::PaymentMethodType::MbWay - | api_models::enums::PaymentMethodType::MobilePay - | api_models::enums::PaymentMethodType::Momo - | api_models::enums::PaymentMethodType::MomoAtm - | api_models::enums::PaymentMethodType::Multibanco - | api_models::enums::PaymentMethodType::OnlineBankingThailand - | api_models::enums::PaymentMethodType::OnlineBankingCzechRepublic - | api_models::enums::PaymentMethodType::OnlineBankingFinland - | api_models::enums::PaymentMethodType::OnlineBankingFpx - | api_models::enums::PaymentMethodType::OnlineBankingPoland - | api_models::enums::PaymentMethodType::OnlineBankingSlovakia - | api_models::enums::PaymentMethodType::Oxxo - | api_models::enums::PaymentMethodType::PagoEfectivo - | api_models::enums::PaymentMethodType::PermataBankTransfer - | api_models::enums::PaymentMethodType::OpenBankingUk - | api_models::enums::PaymentMethodType::PayBright - | api_models::enums::PaymentMethodType::Paypal - | api_models::enums::PaymentMethodType::Pix - | api_models::enums::PaymentMethodType::PaySafeCard - | api_models::enums::PaymentMethodType::Przelewy24 - | api_models::enums::PaymentMethodType::Pse - | api_models::enums::PaymentMethodType::RedCompra - | api_models::enums::PaymentMethodType::RedPagos - | api_models::enums::PaymentMethodType::SamsungPay - | api_models::enums::PaymentMethodType::Sepa - | api_models::enums::PaymentMethodType::Sofort - | api_models::enums::PaymentMethodType::Swish - | api_models::enums::PaymentMethodType::TouchNGo - | api_models::enums::PaymentMethodType::Trustly - | api_models::enums::PaymentMethodType::Twint - | api_models::enums::PaymentMethodType::UpiCollect - | api_models::enums::PaymentMethodType::Vipps - | api_models::enums::PaymentMethodType::Walley - | api_models::enums::PaymentMethodType::WeChatPay - | api_models::enums::PaymentMethodType::SevenEleven - | api_models::enums::PaymentMethodType::Lawson - | api_models::enums::PaymentMethodType::MiniStop - | api_models::enums::PaymentMethodType::FamilyMart - | api_models::enums::PaymentMethodType::Seicomart - | api_models::enums::PaymentMethodType::PayEasy, - ) => Err(error_stack::report!(errors::ConnectorError::NotSupported { - message: payment_method_type.to_string(), - connector: "klarna", - })), - }, + domain::PaymentMethodData::PayLater(domain::PayLaterData::KlarnaSdk { token }) => { + match (payment_experience, payment_method_type) { + ( + common_enums::PaymentExperience::InvokeSdkClient, + common_enums::PaymentMethodType::Klarna, + ) => Ok(format!( + "{}payments/v1/authorizations/{}/order", + self.base_url(connectors), + token + )), + ( + common_enums::PaymentExperience::DisplayQrCode + | common_enums::PaymentExperience::DisplayWaitScreen + | common_enums::PaymentExperience::InvokePaymentApp + | common_enums::PaymentExperience::InvokeSdkClient + | common_enums::PaymentExperience::LinkWallet + | common_enums::PaymentExperience::OneClick + | common_enums::PaymentExperience::RedirectToUrl, + common_enums::PaymentMethodType::Ach + | common_enums::PaymentMethodType::Affirm + | common_enums::PaymentMethodType::AfterpayClearpay + | common_enums::PaymentMethodType::Alfamart + | common_enums::PaymentMethodType::AliPay + | common_enums::PaymentMethodType::AliPayHk + | common_enums::PaymentMethodType::Alma + | common_enums::PaymentMethodType::ApplePay + | common_enums::PaymentMethodType::Atome + | common_enums::PaymentMethodType::Bacs + | common_enums::PaymentMethodType::BancontactCard + | common_enums::PaymentMethodType::Becs + | common_enums::PaymentMethodType::Benefit + | common_enums::PaymentMethodType::Bizum + | common_enums::PaymentMethodType::Blik + | common_enums::PaymentMethodType::Boleto + | common_enums::PaymentMethodType::BcaBankTransfer + | common_enums::PaymentMethodType::BniVa + | common_enums::PaymentMethodType::BriVa + | common_enums::PaymentMethodType::CardRedirect + | common_enums::PaymentMethodType::CimbVa + | common_enums::PaymentMethodType::ClassicReward + | common_enums::PaymentMethodType::Credit + | common_enums::PaymentMethodType::CryptoCurrency + | common_enums::PaymentMethodType::Cashapp + | common_enums::PaymentMethodType::Dana + | common_enums::PaymentMethodType::DanamonVa + | common_enums::PaymentMethodType::Debit + | common_enums::PaymentMethodType::Efecty + | common_enums::PaymentMethodType::Eps + | common_enums::PaymentMethodType::Evoucher + | common_enums::PaymentMethodType::Giropay + | common_enums::PaymentMethodType::Givex + | common_enums::PaymentMethodType::GooglePay + | common_enums::PaymentMethodType::GoPay + | common_enums::PaymentMethodType::Gcash + | common_enums::PaymentMethodType::Ideal + | common_enums::PaymentMethodType::Interac + | common_enums::PaymentMethodType::Indomaret + | common_enums::PaymentMethodType::Klarna + | common_enums::PaymentMethodType::KakaoPay + | common_enums::PaymentMethodType::MandiriVa + | common_enums::PaymentMethodType::Knet + | common_enums::PaymentMethodType::MbWay + | common_enums::PaymentMethodType::MobilePay + | common_enums::PaymentMethodType::Momo + | common_enums::PaymentMethodType::MomoAtm + | common_enums::PaymentMethodType::Multibanco + | common_enums::PaymentMethodType::OnlineBankingThailand + | common_enums::PaymentMethodType::OnlineBankingCzechRepublic + | common_enums::PaymentMethodType::OnlineBankingFinland + | common_enums::PaymentMethodType::OnlineBankingFpx + | common_enums::PaymentMethodType::OnlineBankingPoland + | common_enums::PaymentMethodType::OnlineBankingSlovakia + | common_enums::PaymentMethodType::Oxxo + | common_enums::PaymentMethodType::PagoEfectivo + | common_enums::PaymentMethodType::PermataBankTransfer + | common_enums::PaymentMethodType::OpenBankingUk + | common_enums::PaymentMethodType::PayBright + | common_enums::PaymentMethodType::Paypal + | common_enums::PaymentMethodType::Pix + | common_enums::PaymentMethodType::PaySafeCard + | common_enums::PaymentMethodType::Przelewy24 + | common_enums::PaymentMethodType::Pse + | common_enums::PaymentMethodType::RedCompra + | common_enums::PaymentMethodType::RedPagos + | common_enums::PaymentMethodType::SamsungPay + | common_enums::PaymentMethodType::Sepa + | common_enums::PaymentMethodType::Sofort + | common_enums::PaymentMethodType::Swish + | common_enums::PaymentMethodType::TouchNGo + | common_enums::PaymentMethodType::Trustly + | common_enums::PaymentMethodType::Twint + | common_enums::PaymentMethodType::UpiCollect + | common_enums::PaymentMethodType::Vipps + | common_enums::PaymentMethodType::Walley + | common_enums::PaymentMethodType::WeChatPay + | common_enums::PaymentMethodType::SevenEleven + | common_enums::PaymentMethodType::Lawson + | common_enums::PaymentMethodType::MiniStop + | common_enums::PaymentMethodType::FamilyMart + | common_enums::PaymentMethodType::Seicomart + | common_enums::PaymentMethodType::PayEasy, + ) => Err(error_stack::report!(errors::ConnectorError::NotSupported { + message: payment_method_type.to_string(), + connector: "klarna", + })), + } + } domain::PaymentMethodData::Card(_) | domain::PaymentMethodData::CardRedirect(_) diff --git a/crates/router/src/connector/multisafepay/transformers.rs b/crates/router/src/connector/multisafepay/transformers.rs index b26c260f9360..39433c38aabb 100644 --- a/crates/router/src/connector/multisafepay/transformers.rs +++ b/crates/router/src/connector/multisafepay/transformers.rs @@ -349,12 +349,10 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> utils::get_unimplemented_payment_method_error_message("multisafepay"), ))?, }), - domain::PaymentMethodData::PayLater( - api_models::payments::PayLaterData::KlarnaRedirect { - billing_email: _, - billing_country: _, - }, - ) => Some(Gateway::Klarna), + domain::PaymentMethodData::PayLater(domain::PayLaterData::KlarnaRedirect { + billing_email: _, + billing_country: _, + }) => Some(Gateway::Klarna), domain::PaymentMethodData::MandatePayment => None, domain::PaymentMethodData::CardRedirect(_) | domain::PaymentMethodData::PayLater(_) @@ -482,20 +480,19 @@ impl TryFrom<&MultisafepayRouterData<&types::PaymentsAuthorizeRouterData>> domain::PaymentMethodData::PayLater(ref paylater) => { Some(GatewayInfo::PayLater(PayLaterInfo { email: Some(match paylater { - api_models::payments::PayLaterData::KlarnaRedirect { - billing_email, - .. - } => billing_email.clone(), - api_models::payments::PayLaterData::KlarnaSdk { token: _ } - | api_models::payments::PayLaterData::AffirmRedirect {} - | api_models::payments::PayLaterData::AfterpayClearpayRedirect { + domain::PayLaterData::KlarnaRedirect { billing_email, .. } => { + billing_email.clone() + } + domain::PayLaterData::KlarnaSdk { token: _ } + | domain::PayLaterData::AffirmRedirect {} + | domain::PayLaterData::AfterpayClearpayRedirect { billing_email: _, billing_name: _, } - | api_models::payments::PayLaterData::PayBrightRedirect {} - | api_models::payments::PayLaterData::WalleyRedirect {} - | api_models::payments::PayLaterData::AlmaRedirect {} - | api_models::payments::PayLaterData::AtomeRedirect {} => { + | domain::PayLaterData::PayBrightRedirect {} + | domain::PayLaterData::WalleyRedirect {} + | domain::PayLaterData::AlmaRedirect {} + | domain::PayLaterData::AtomeRedirect {} => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message( "multisafepay", diff --git a/crates/router/src/connector/nuvei/transformers.rs b/crates/router/src/connector/nuvei/transformers.rs index ece7c2dcedcc..69df6cd8b0f2 100644 --- a/crates/router/src/connector/nuvei/transformers.rs +++ b/crates/router/src/connector/nuvei/transformers.rs @@ -829,18 +829,18 @@ impl } }, domain::PaymentMethodData::PayLater(pay_later_data) => match pay_later_data { - payments::PayLaterData::KlarnaRedirect { .. } => { + domain::PayLaterData::KlarnaRedirect { .. } => { get_pay_later_info(AlternativePaymentMethodType::Klarna, item) } - payments::PayLaterData::AfterpayClearpayRedirect { .. } => { + domain::PayLaterData::AfterpayClearpayRedirect { .. } => { get_pay_later_info(AlternativePaymentMethodType::AfterPay, item) } - payments::PayLaterData::KlarnaSdk { .. } - | payments::PayLaterData::AffirmRedirect {} - | payments::PayLaterData::PayBrightRedirect {} - | payments::PayLaterData::WalleyRedirect {} - | payments::PayLaterData::AlmaRedirect {} - | payments::PayLaterData::AtomeRedirect {} => { + domain::PayLaterData::KlarnaSdk { .. } + | domain::PayLaterData::AffirmRedirect {} + | domain::PayLaterData::PayBrightRedirect {} + | domain::PayLaterData::WalleyRedirect {} + | domain::PayLaterData::AlmaRedirect {} + | domain::PayLaterData::AtomeRedirect {} => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("nuvei"), ) diff --git a/crates/router/src/connector/paypal/transformers.rs b/crates/router/src/connector/paypal/transformers.rs index c9cbae957359..0fb3f64ec052 100644 --- a/crates/router/src/connector/paypal/transformers.rs +++ b/crates/router/src/connector/paypal/transformers.rs @@ -634,18 +634,18 @@ impl TryFrom<&domain::payments::CardRedirectData> for PaypalPaymentsRequest { } } -impl TryFrom<&api_models::payments::PayLaterData> for PaypalPaymentsRequest { +impl TryFrom<&domain::PayLaterData> for PaypalPaymentsRequest { type Error = error_stack::Report; - fn try_from(value: &api_models::payments::PayLaterData) -> Result { + fn try_from(value: &domain::PayLaterData) -> Result { match value { - api_models::payments::PayLaterData::KlarnaRedirect { .. } - | api_models::payments::PayLaterData::KlarnaSdk { .. } - | api_models::payments::PayLaterData::AffirmRedirect {} - | api_models::payments::PayLaterData::AfterpayClearpayRedirect { .. } - | api_models::payments::PayLaterData::PayBrightRedirect {} - | api_models::payments::PayLaterData::WalleyRedirect {} - | api_models::payments::PayLaterData::AlmaRedirect {} - | api_models::payments::PayLaterData::AtomeRedirect {} => { + domain::PayLaterData::KlarnaRedirect { .. } + | domain::PayLaterData::KlarnaSdk { .. } + | domain::PayLaterData::AffirmRedirect {} + | domain::PayLaterData::AfterpayClearpayRedirect { .. } + | domain::PayLaterData::PayBrightRedirect {} + | domain::PayLaterData::WalleyRedirect {} + | domain::PayLaterData::AlmaRedirect {} + | domain::PayLaterData::AtomeRedirect {} => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Paypal"), ) diff --git a/crates/router/src/connector/square/transformers.rs b/crates/router/src/connector/square/transformers.rs index abb2f69a42b3..ce7c0c2796e8 100644 --- a/crates/router/src/connector/square/transformers.rs +++ b/crates/router/src/connector/square/transformers.rs @@ -1,4 +1,4 @@ -use api_models::payments::{BankDebitData, PayLaterData}; +use api_models::payments::BankDebitData; use error_stack::ResultExt; use masking::{ExposeInterface, PeekInterface, Secret}; use serde::{Deserialize, Serialize}; @@ -71,23 +71,25 @@ impl TryFrom<(&types::TokenizationRouterData, domain::Card)> for SquareTokenRequ } } -impl TryFrom<(&types::TokenizationRouterData, PayLaterData)> for SquareTokenRequest { +impl TryFrom<(&types::TokenizationRouterData, domain::PayLaterData)> for SquareTokenRequest { type Error = error_stack::Report; fn try_from( - value: (&types::TokenizationRouterData, PayLaterData), + value: (&types::TokenizationRouterData, domain::PayLaterData), ) -> Result { let (_item, pay_later_data) = value; match pay_later_data { - PayLaterData::AfterpayClearpayRedirect { .. } - | PayLaterData::KlarnaRedirect { .. } - | PayLaterData::KlarnaSdk { .. } - | PayLaterData::AffirmRedirect { .. } - | PayLaterData::PayBrightRedirect { .. } - | PayLaterData::WalleyRedirect { .. } - | PayLaterData::AlmaRedirect { .. } - | PayLaterData::AtomeRedirect { .. } => Err(errors::ConnectorError::NotImplemented( - utils::get_unimplemented_payment_method_error_message("Square"), - ))?, + domain::PayLaterData::AfterpayClearpayRedirect { .. } + | domain::PayLaterData::KlarnaRedirect { .. } + | domain::PayLaterData::KlarnaSdk { .. } + | domain::PayLaterData::AffirmRedirect { .. } + | domain::PayLaterData::PayBrightRedirect { .. } + | domain::PayLaterData::WalleyRedirect { .. } + | domain::PayLaterData::AlmaRedirect { .. } + | domain::PayLaterData::AtomeRedirect { .. } => { + Err(errors::ConnectorError::NotImplemented( + utils::get_unimplemented_payment_method_error_message("Square"), + ))? + } } } } diff --git a/crates/router/src/connector/stripe/transformers.rs b/crates/router/src/connector/stripe/transformers.rs index 7d1862b20683..346c6627137d 100644 --- a/crates/router/src/connector/stripe/transformers.rs +++ b/crates/router/src/connector/stripe/transformers.rs @@ -930,21 +930,21 @@ fn validate_shipping_address_against_payment_method( } } -impl TryFrom<&api_models::payments::PayLaterData> for StripePaymentMethodType { +impl TryFrom<&domain::payments::PayLaterData> for StripePaymentMethodType { type Error = errors::ConnectorError; - fn try_from(pay_later_data: &api_models::payments::PayLaterData) -> Result { + fn try_from(pay_later_data: &domain::payments::PayLaterData) -> Result { match pay_later_data { - api_models::payments::PayLaterData::KlarnaRedirect { .. } => Ok(Self::Klarna), - api_models::payments::PayLaterData::AffirmRedirect {} => Ok(Self::Affirm), - api_models::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { + domain::payments::PayLaterData::KlarnaRedirect { .. } => Ok(Self::Klarna), + domain::payments::PayLaterData::AffirmRedirect {} => Ok(Self::Affirm), + domain::payments::PayLaterData::AfterpayClearpayRedirect { .. } => { Ok(Self::AfterpayClearpay) } - payments::PayLaterData::KlarnaSdk { .. } - | payments::PayLaterData::PayBrightRedirect {} - | payments::PayLaterData::WalleyRedirect {} - | payments::PayLaterData::AlmaRedirect {} - | payments::PayLaterData::AtomeRedirect {} => { + domain::PayLaterData::KlarnaSdk { .. } + | domain::PayLaterData::PayBrightRedirect {} + | domain::PayLaterData::WalleyRedirect {} + | domain::PayLaterData::AlmaRedirect {} + | domain::PayLaterData::AtomeRedirect {} => { Err(errors::ConnectorError::NotImplemented( connector_util::get_unimplemented_payment_method_error_message("stripe"), )) @@ -1039,17 +1039,15 @@ impl From<&payments::BankDebitData> for StripePaymentMethodType { } } -impl TryFrom<(&api_models::payments::PayLaterData, StripePaymentMethodType)> - for StripeBillingAddress -{ +impl TryFrom<(&domain::payments::PayLaterData, StripePaymentMethodType)> for StripeBillingAddress { type Error = errors::ConnectorError; fn try_from( - (pay_later_data, pm_type): (&api_models::payments::PayLaterData, StripePaymentMethodType), + (pay_later_data, pm_type): (&domain::payments::PayLaterData, StripePaymentMethodType), ) -> Result { match (pay_later_data, pm_type) { ( - payments::PayLaterData::KlarnaRedirect { + domain::payments::PayLaterData::KlarnaRedirect { billing_email, billing_country, }, @@ -1059,11 +1057,12 @@ impl TryFrom<(&api_models::payments::PayLaterData, StripePaymentMethodType)> country: Some(billing_country.to_owned()), ..Self::default() }), - (payments::PayLaterData::AffirmRedirect {}, StripePaymentMethodType::Affirm) => { - Ok(Self::default()) - } ( - payments::PayLaterData::AfterpayClearpayRedirect { + domain::payments::PayLaterData::AffirmRedirect {}, + StripePaymentMethodType::Affirm, + ) => Ok(Self::default()), + ( + domain::payments::PayLaterData::AfterpayClearpayRedirect { billing_email, billing_name, }, diff --git a/crates/router/src/connector/zen/transformers.rs b/crates/router/src/connector/zen/transformers.rs index e6ead170d9f7..2c86ae3e21b7 100644 --- a/crates/router/src/connector/zen/transformers.rs +++ b/crates/router/src/connector/zen/transformers.rs @@ -754,18 +754,18 @@ impl TryFrom<&api_models::payments::BankRedirectData> for ZenPaymentsRequest { } } -impl TryFrom<&api_models::payments::PayLaterData> for ZenPaymentsRequest { +impl TryFrom<&domain::payments::PayLaterData> for ZenPaymentsRequest { type Error = error_stack::Report; - fn try_from(value: &api_models::payments::PayLaterData) -> Result { + fn try_from(value: &domain::payments::PayLaterData) -> Result { match value { - api_models::payments::PayLaterData::KlarnaRedirect { .. } - | api_models::payments::PayLaterData::KlarnaSdk { .. } - | api_models::payments::PayLaterData::AffirmRedirect {} - | api_models::payments::PayLaterData::AfterpayClearpayRedirect { .. } - | api_models::payments::PayLaterData::PayBrightRedirect {} - | api_models::payments::PayLaterData::WalleyRedirect {} - | api_models::payments::PayLaterData::AlmaRedirect {} - | api_models::payments::PayLaterData::AtomeRedirect {} => { + domain::payments::PayLaterData::KlarnaRedirect { .. } + | domain::payments::PayLaterData::KlarnaSdk { .. } + | domain::payments::PayLaterData::AffirmRedirect {} + | domain::payments::PayLaterData::AfterpayClearpayRedirect { .. } + | domain::payments::PayLaterData::PayBrightRedirect {} + | domain::payments::PayLaterData::WalleyRedirect {} + | domain::payments::PayLaterData::AlmaRedirect {} + | domain::payments::PayLaterData::AtomeRedirect {} => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("Zen"), ) diff --git a/crates/router/src/types/domain/payments.rs b/crates/router/src/types/domain/payments.rs index 0ec67ffa91c8..8674a57cf3a7 100644 --- a/crates/router/src/types/domain/payments.rs +++ b/crates/router/src/types/domain/payments.rs @@ -10,7 +10,7 @@ pub enum PaymentMethodData { Card(Card), CardRedirect(CardRedirectData), Wallet(WalletData), - PayLater(api_models::payments::PayLaterData), + PayLater(PayLaterData), BankRedirect(api_models::payments::BankRedirectData), BankDebit(api_models::payments::BankDebitData), BankTransfer(Box), @@ -66,7 +66,7 @@ pub enum CardRedirectData { CardRedirect {}, } -#[derive(Eq, PartialEq, Clone, Debug)] +#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)] pub enum PayLaterData { KlarnaRedirect { billing_email: Email, @@ -332,7 +332,7 @@ impl From for PaymentMethodData { Self::Wallet(From::from(wallet_data)) } api_models::payments::PaymentMethodData::PayLater(pay_later_data) => { - Self::PayLater(pay_later_data) + Self::PayLater(From::from(pay_later_data)) } api_models::payments::PaymentMethodData::BankRedirect(bank_redirect_data) => { Self::BankRedirect(bank_redirect_data) @@ -518,3 +518,30 @@ impl From for ApplePayWalletData { } } } + +impl From for PayLaterData { + fn from(value: api_models::payments::PayLaterData) -> Self { + match value { + api_models::payments::PayLaterData::KlarnaRedirect { + billing_email, + billing_country, + } => Self::KlarnaRedirect { + billing_email, + billing_country, + }, + api_models::payments::PayLaterData::KlarnaSdk { token } => Self::KlarnaSdk { token }, + api_models::payments::PayLaterData::AffirmRedirect {} => Self::AffirmRedirect {}, + api_models::payments::PayLaterData::AfterpayClearpayRedirect { + billing_email, + billing_name, + } => Self::AfterpayClearpayRedirect { + billing_email, + billing_name, + }, + api_models::payments::PayLaterData::PayBrightRedirect {} => Self::PayBrightRedirect {}, + api_models::payments::PayLaterData::WalleyRedirect {} => Self::WalleyRedirect {}, + api_models::payments::PayLaterData::AlmaRedirect {} => Self::AlmaRedirect {}, + api_models::payments::PayLaterData::AtomeRedirect {} => Self::AtomeRedirect {}, + } + } +}