From 56f3901640494d21e2b4982208cd354d75f7b018 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Mon, 10 Feb 2025 18:53:24 +0530 Subject: [PATCH 01/10] refactor(connector): [NOON] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 3 +- .../src/connectors}/noon.rs | 461 ++++++++---------- .../src/connectors}/noon/transformers.rs | 303 ++++++------ .../src/default_implementations.rs | 33 ++ .../src/default_implementations_v2.rs | 22 + crates/hyperswitch_connectors/src/utils.rs | 22 + crates/router/src/connector.rs | 12 +- .../connector_integration_v2_impls.rs | 23 - crates/router/src/core/payments/flows.rs | 33 -- 9 files changed, 449 insertions(+), 463 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/noon.rs (64%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/noon/transformers.rs (72%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 58e6d9c7e5d..2f6a88734a1 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -40,6 +40,7 @@ pub mod multisafepay; pub mod nexinets; pub mod nexixpay; pub mod nomupay; +pub mod noon; pub mod novalnet; pub mod nuvei; pub mod paybox; @@ -77,7 +78,7 @@ pub use self::{ globepay::Globepay, gocardless::Gocardless, helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, mifinity::Mifinity, mollie::Mollie, multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, - novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payu::Payu, + noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, diff --git a/crates/router/src/connector/noon.rs b/crates/hyperswitch_connectors/src/connectors/noon.rs similarity index 64% rename from crates/router/src/connector/noon.rs rename to crates/hyperswitch_connectors/src/connectors/noon.rs index c8780af3ce5..c4f2eef275d 100644 --- a/crates/router/src/connector/noon.rs +++ b/crates/hyperswitch_connectors/src/connectors/noon.rs @@ -1,40 +1,58 @@ pub mod transformers; +use api_models::webhooks::{ConnectorWebhookSecrets, IncomingWebhookEvent, ObjectReferenceId}; use base64::Engine; +use common_enums::enums; use common_utils::{ crypto, + errors::CustomResult, ext_traits::ByteSliceExt, - request::RequestContent, + request::{Method, Request, RequestBuilder, RequestContent}, types::{AmountConvertor, StringMajorUnit, StringMajorUnitForConnector}, }; -use diesel_models::enums; use error_stack::{Report, ResultExt}; -use masking::PeekInterface; -use router_env::logger; -use transformers as noon; - -use crate::{ - configs::settings, - connector::utils::{self as connector_utils, PaymentMethodDataType}, - consts, - core::{ - errors::{self, CustomResult}, - mandate::MandateBehaviour, - payments, +use hyperswitch_domain_models::{ + payment_method_data::PaymentMethodData, + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + mandate_revoke::MandateRevoke, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, }, - events::connector_api_logs::ConnectorEvent, - headers, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, + router_request_types::{ + AccessTokenRequestData, MandateRevokeRequestData, PaymentMethodTokenizationData, + PaymentsAuthorizeData, PaymentsCancelData, PaymentsCaptureData, PaymentsSessionData, + PaymentsSyncData, RefundsData, SetupMandateRequestData, }, + router_response_types::{MandateRevokeResponseData, PaymentsResponseData, RefundsResponseData}, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, - ErrorResponse, Response, + MandateRevokeRouterData, PaymentsAuthorizeRouterData, PaymentsCancelRouterData, + PaymentsCaptureRouterData, PaymentsSyncRouterData, RefundSyncRouterData, RefundsRouterData, }, - utils::{self, BytesExt}, +}; +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorSpecifications, + ConnectorValidation, + }, + configs::Connectors, + errors, + events::connector_api_logs::ConnectorEvent, + types::{ + MandateRevokeType, PaymentsAuthorizeType, PaymentsCaptureType, PaymentsSyncType, + PaymentsVoidType, RefundExecuteType, RefundSyncType, Response, + }, + webhooks, +}; +use masking::{Mask, PeekInterface}; +use router_env::logger; +use transformers as noon; + +use crate::{ + constants::headers, + types::ResponseRouterData, + utils::{self as connector_utils, PaymentMethodDataType}, }; #[derive(Clone)] @@ -64,12 +82,8 @@ impl api::RefundSync for Noon {} impl api::PaymentToken for Noon {} impl api::ConnectorMandateRevoke for Noon {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Noon +impl ConnectorIntegration + for Noon { // Not Implemented (R) } @@ -80,12 +94,12 @@ where { fn build_headers( &self, - req: &types::RouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::PaymentsAuthorizeType::get_content_type(self) + PaymentsAuthorizeType::get_content_type(self) .to_string() .into(), )]; @@ -96,10 +110,10 @@ where } fn get_auth_header( - auth_type: &types::ConnectorAuthType, - connectors: &settings::Connectors, + auth_type: &ConnectorAuthType, + connectors: &Connectors, test_mode: Option, -) -> CustomResult)>, errors::ConnectorError> { +) -> CustomResult)>, errors::ConnectorError> { let auth = noon::NoonAuthType::try_from(auth_type)?; let encoded_api_key = auth @@ -107,7 +121,7 @@ fn get_auth_header( .zip(auth.application_identifier) .zip(auth.api_key) .map(|((business_identifier, application_identifier), api_key)| { - consts::BASE64_ENGINE.encode(format!( + common_utils::consts::BASE64_ENGINE.encode(format!( "{}.{}:{}", business_identifier, application_identifier, api_key )) @@ -135,7 +149,7 @@ impl ConnectorCommon for Noon { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.noon.base_url.as_ref() } @@ -169,7 +183,7 @@ impl ConnectorCommon for Noon { Err(error_message) => { event_builder.map(|event| event.set_error(serde_json::json!({"error": res.response.escape_ascii().to_string(), "status_code": res.status_code}))); logger::error!(deserialization_error =? error_message); - utils::handle_json_response_deserialization_failure(res, "noon") + connector_utils::handle_json_response_deserialization_failure(res, "noon") } } } @@ -195,8 +209,8 @@ impl ConnectorValidation for Noon { fn validate_mandate_payment( &self, - pm_type: Option, - pm_data: types::domain::payments::PaymentMethodData, + pm_type: Option, + pm_data: PaymentMethodData, ) -> CustomResult<(), errors::ConnectorError> { let mandate_supported_pmd = std::collections::HashSet::from([ PaymentMethodDataType::Card, @@ -208,7 +222,7 @@ impl ConnectorValidation for Noon { fn validate_psync_reference_id( &self, - _data: &hyperswitch_domain_models::router_request_types::PaymentsSyncData, + _data: &PaymentsSyncData, _is_three_ds: bool, _status: enums::AttemptStatus, _connector_meta_data: Option, @@ -218,33 +232,18 @@ impl ConnectorValidation for Noon { } } -impl ConnectorIntegration - for Noon -{ +impl ConnectorIntegration for Noon { //TODO: implement sessions flow } -impl ConnectorIntegration - for Noon -{ -} +impl ConnectorIntegration for Noon {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Noon -{ +impl ConnectorIntegration for Noon { fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Noon".to_string()) .into(), @@ -252,14 +251,12 @@ impl } } -impl ConnectorIntegration - for Noon -{ +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -269,16 +266,16 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}payment/v1/order", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let amount = connector_utils::convert_amount( self.amount_converter, @@ -287,7 +284,7 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -327,10 +320,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::NoonPaymentsResponse = res .response .parse_struct("Noon PaymentsAuthorizeResponse") @@ -339,7 +332,7 @@ impl ConnectorIntegration - for Noon -{ +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -372,8 +363,8 @@ impl ConnectorIntegration CustomResult { Ok(format!( "{}payment/v1/order/getbyreference/{}", @@ -384,25 +375,25 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsSyncRouterData, + data: &PaymentsSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::NoonPaymentsResponse = res .response .parse_struct("noon PaymentsSyncResponse") @@ -411,7 +402,7 @@ impl ConnectorIntegration - for Noon -{ +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -444,16 +433,16 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}payment/v1/order", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsCaptureRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCaptureRouterData, + _connectors: &Connectors, ) -> CustomResult { let amount = connector_utils::convert_amount( self.amount_converter, @@ -467,18 +456,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCaptureType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsCaptureType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsCaptureType::get_request_body( + .headers(PaymentsCaptureType::get_headers(self, req, connectors)?) + .set_body(PaymentsCaptureType::get_request_body( self, req, connectors, )?) .build(), @@ -487,10 +474,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::NoonPaymentsResponse = res .response .parse_struct("Noon PaymentsCaptureResponse") @@ -499,7 +486,7 @@ impl ConnectorIntegration - for Noon -{ +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -532,15 +517,15 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}payment/v1/order", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsCancelRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCancelRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = noon::NoonPaymentsCancelRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -548,28 +533,26 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsVoidType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsVoidType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsVoidType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsVoidType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsVoidType::get_headers(self, req, connectors)?) + .set_body(PaymentsVoidType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsCancelRouterData, + data: &PaymentsCancelRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::NoonPaymentsResponse = res .response .parse_struct("Noon PaymentsCancelResponse") @@ -578,7 +561,7 @@ impl ConnectorIntegration for Noon +impl ConnectorIntegration + for Noon { fn get_headers( &self, - req: &types::MandateRevokeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &MandateRevokeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_content_type(&self) -> &'static str { @@ -613,34 +592,30 @@ impl } fn get_url( &self, - _req: &types::MandateRevokeRouterData, - connectors: &settings::Connectors, + _req: &MandateRevokeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}payment/v1/order", self.base_url(connectors))) } fn build_request( &self, - req: &types::MandateRevokeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &MandateRevokeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::MandateRevokeType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&MandateRevokeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::MandateRevokeType::get_headers( - self, req, connectors, - )?) - .set_body(types::MandateRevokeType::get_request_body( - self, req, connectors, - )?) + .headers(MandateRevokeType::get_headers(self, req, connectors)?) + .set_body(MandateRevokeType::get_request_body(self, req, connectors)?) .build(), )) } fn get_request_body( &self, - req: &types::MandateRevokeRouterData, - _connectors: &settings::Connectors, + req: &MandateRevokeRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = noon::NoonRevokeMandateRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -648,10 +623,10 @@ impl fn handle_response( &self, - data: &types::MandateRevokeRouterData, + data: &MandateRevokeRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::NoonRevokeMandateResponse = res .response .parse_struct("Noon NoonRevokeMandateResponse") @@ -660,7 +635,7 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -675,12 +650,12 @@ impl } } -impl ConnectorIntegration for Noon { +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -690,16 +665,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + _req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}payment/v1/order", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::RefundsRouterData, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { let refund_amount = connector_utils::convert_amount( self.amount_converter, @@ -713,29 +688,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult, errors::ConnectorError> { + ) -> CustomResult, errors::ConnectorError> { let response: noon::RefundResponse = res .response .parse_struct("noon RefundResponse") @@ -744,7 +715,7 @@ impl ConnectorIntegration for Noon { +impl ConnectorIntegration for Noon { fn get_headers( &self, - req: &types::RefundSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -775,8 +746,8 @@ impl ConnectorIntegration CustomResult { Ok(format!( "{}payment/v1/order/getbyreference/{}", @@ -787,25 +758,25 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::RefundSyncRouterData, + data: &RefundSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: noon::RefundSyncResponse = res .response .parse_struct("noon RefundSyncResponse") @@ -814,7 +785,7 @@ impl ConnectorIntegration, - action: services::PaymentAction, - ) -> CustomResult { + action: enums::PaymentAction, + ) -> CustomResult { match action { - services::PaymentAction::PSync - | services::PaymentAction::CompleteAuthorize - | services::PaymentAction::PaymentAuthenticateCompleteAuthorize => { - Ok(payments::CallConnectorAction::Trigger) + enums::PaymentAction::PSync + | enums::PaymentAction::CompleteAuthorize + | enums::PaymentAction::PaymentAuthenticateCompleteAuthorize => { + Ok(enums::CallConnectorAction::Trigger) } } } } #[async_trait::async_trait] -impl api::IncomingWebhook for Noon { +impl webhooks::IncomingWebhook for Noon { fn get_webhook_source_verification_algorithm( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::HmacSha512)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, + request: &webhooks::IncomingWebhookRequestDetails<'_>, + _connector_webhook_secrets: &ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let webhook_body: noon::NoonWebhookSignature = request .body .parse_struct("NoonWebhookSignature") .change_context(errors::ConnectorError::WebhookSignatureNotFound)?; let signature = webhook_body.signature; - consts::BASE64_ENGINE + common_utils::consts::BASE64_ENGINE .decode(signature) .change_context(errors::ConnectorError::WebhookSignatureNotFound) } fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, - _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, + _connector_webhook_secrets: &ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let webhook_body: noon::NoonWebhookBody = request .body @@ -895,13 +866,13 @@ impl api::IncomingWebhook for Noon { fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let details: noon::NoonWebhookOrderId = request .body .parse_struct("NoonWebhookOrderId") .change_context(errors::ConnectorError::WebhookReferenceIdNotFound)?; - Ok(api_models::webhooks::ObjectReferenceId::PaymentId( + Ok(ObjectReferenceId::PaymentId( api_models::payments::PaymentIdType::ConnectorTransactionId( details.order_id.to_string(), ), @@ -910,8 +881,8 @@ impl api::IncomingWebhook for Noon { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let details: noon::NoonWebhookEvent = request .body .parse_struct("NoonWebhookEvent") @@ -920,23 +891,21 @@ impl api::IncomingWebhook for Noon { Ok(match &details.event_type { noon::NoonWebhookEventTypes::Sale | noon::NoonWebhookEventTypes::Capture => { match &details.order_status { - noon::NoonPaymentStatus::Captured => { - api::IncomingWebhookEvent::PaymentIntentSuccess - } + noon::NoonPaymentStatus::Captured => IncomingWebhookEvent::PaymentIntentSuccess, _ => Err(errors::ConnectorError::WebhookEventTypeNotFound)?, } } - noon::NoonWebhookEventTypes::Fail => api::IncomingWebhookEvent::PaymentIntentFailure, + noon::NoonWebhookEventTypes::Fail => IncomingWebhookEvent::PaymentIntentFailure, noon::NoonWebhookEventTypes::Authorize | noon::NoonWebhookEventTypes::Authenticate | noon::NoonWebhookEventTypes::Refund - | noon::NoonWebhookEventTypes::Unknown => api::IncomingWebhookEvent::EventNotSupported, + | noon::NoonWebhookEventTypes::Unknown => IncomingWebhookEvent::EventNotSupported, }) } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let resource: noon::NoonWebhookObject = request .body diff --git a/crates/router/src/connector/noon/transformers.rs b/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs similarity index 72% rename from crates/router/src/connector/noon/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/noon/transformers.rs index eaf4ae18465..f09b70c56fb 100644 --- a/crates/router/src/connector/noon/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/noon/transformers.rs @@ -1,16 +1,30 @@ -use common_utils::{ext_traits::Encode, pii, types::StringMajorUnit}; +use common_enums::enums::{self, AttemptStatus}; +use common_utils::{ext_traits::Encode, pii, request::Method, types::StringMajorUnit}; use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data::{GooglePayWalletData, PaymentMethodData, WalletData}, + router_data::{ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{Execute, RSync}, + router_request_types::{MandateRevokeRequestData, ResponseId}, + router_response_types::{ + MandateReference, MandateRevokeResponseData, PaymentsResponseData, RedirectForm, + RefundsResponseData, + }, + types::{ + MandateRevokeRouterData, PaymentsAuthorizeRouterData, PaymentsCancelRouterData, + PaymentsCaptureRouterData, RefundsRouterData, + }, +}; +use hyperswitch_interfaces::errors; use masking::{ExposeInterface, Secret}; use serde::{Deserialize, Serialize}; use crate::{ - connector::utils::{ - self as conn_utils, is_refund_failure, CardData, PaymentsAuthorizeRequestData, - RevokeMandateRequestData, RouterData, WalletData, + types::{RefundsResponseRouterData, ResponseRouterData}, + utils::{ + self, CardData, PaymentsAuthorizeRequestData, RevokeMandateRequestData, + RouterData as OtherRouterData, WalletData as OtherWalletData, }, - core::errors, - services, - types::{self, api, domain, storage::enums, transformers::ForeignFrom, ErrorResponse}, }; // These needs to be accepted from SDK, need to be done after 1.0.0 stability as API contract will change @@ -79,7 +93,7 @@ pub struct NoonBilling { #[serde(rename_all = "camelCase")] pub struct NoonOrder { amount: StringMajorUnit, - currency: Option, + currency: Option, channel: NoonChannels, category: Option, reference: String, @@ -206,7 +220,7 @@ pub struct NoonApplePay { pub struct NoonGooglePay { api_version_minor: u8, api_version: u8, - payment_method_data: conn_utils::GooglePayWalletData, + payment_method_data: GooglePayWalletData, } #[derive(Debug, Serialize)] @@ -245,11 +259,9 @@ pub struct NoonPaymentsRequest { billing: Option, } -impl TryFrom<&NoonRouterData<&types::PaymentsAuthorizeRouterData>> for NoonPaymentsRequest { +impl TryFrom<&NoonRouterData<&PaymentsAuthorizeRouterData>> for NoonPaymentsRequest { type Error = error_stack::Report; - fn try_from( - data: &NoonRouterData<&types::PaymentsAuthorizeRouterData>, - ) -> Result { + fn try_from(data: &NoonRouterData<&PaymentsAuthorizeRouterData>) -> Result { let item = data.router_data; let amount = &data.amount; let mandate_amount = &data.mandate_amount; @@ -264,26 +276,22 @@ impl TryFrom<&NoonRouterData<&types::PaymentsAuthorizeRouterData>> for NoonPayme ), _ => ( match item.request.payment_method_data.clone() { - domain::PaymentMethodData::Card(req_card) => { - Ok(NoonPaymentData::Card(NoonCard { - name_on_card: item.get_optional_billing_full_name(), - number_plain: req_card.card_number.clone(), - expiry_month: req_card.card_exp_month.clone(), - expiry_year: req_card.get_expiry_year_4_digit(), - cvv: req_card.card_cvc, - })) - } - domain::PaymentMethodData::Wallet(wallet_data) => match wallet_data.clone() { - domain::WalletData::GooglePay(google_pay_data) => { + PaymentMethodData::Card(req_card) => Ok(NoonPaymentData::Card(NoonCard { + name_on_card: item.get_optional_billing_full_name(), + number_plain: req_card.card_number.clone(), + expiry_month: req_card.card_exp_month.clone(), + expiry_year: req_card.get_expiry_year_4_digit(), + cvv: req_card.card_cvc, + })), + PaymentMethodData::Wallet(wallet_data) => match wallet_data.clone() { + WalletData::GooglePay(google_pay_data) => { Ok(NoonPaymentData::GooglePay(NoonGooglePay { api_version_minor: GOOGLEPAY_API_VERSION_MINOR, api_version: GOOGLEPAY_API_VERSION, - payment_method_data: conn_utils::GooglePayWalletData::from( - google_pay_data, - ), + payment_method_data: GooglePayWalletData::from(google_pay_data), })) } - domain::WalletData::ApplePay(apple_pay_data) => { + WalletData::ApplePay(apple_pay_data) => { let payment_token_data = NoonApplePayTokenData { token: NoonApplePayData { payment_data: wallet_data @@ -306,61 +314,57 @@ impl TryFrom<&NoonRouterData<&types::PaymentsAuthorizeRouterData>> for NoonPayme payment_info: Secret::new(payment_token), })) } - domain::WalletData::PaypalRedirect(_) => { - Ok(NoonPaymentData::PayPal(NoonPayPal { - return_url: item.request.get_router_return_url()?, - })) - } - domain::WalletData::AliPayQr(_) - | domain::WalletData::AliPayRedirect(_) - | domain::WalletData::AliPayHkRedirect(_) - | domain::WalletData::AmazonPayRedirect(_) - | domain::WalletData::MomoRedirect(_) - | domain::WalletData::KakaoPayRedirect(_) - | domain::WalletData::GoPayRedirect(_) - | domain::WalletData::GcashRedirect(_) - | domain::WalletData::ApplePayRedirect(_) - | domain::WalletData::ApplePayThirdPartySdk(_) - | domain::WalletData::DanaRedirect {} - | domain::WalletData::GooglePayRedirect(_) - | domain::WalletData::GooglePayThirdPartySdk(_) - | domain::WalletData::MbWayRedirect(_) - | domain::WalletData::MobilePayRedirect(_) - | domain::WalletData::PaypalSdk(_) - | domain::WalletData::Paze(_) - | domain::WalletData::SamsungPay(_) - | domain::WalletData::TwintRedirect {} - | domain::WalletData::VippsRedirect {} - | domain::WalletData::TouchNGoRedirect(_) - | domain::WalletData::WeChatPayRedirect(_) - | domain::WalletData::WeChatPayQr(_) - | domain::WalletData::CashappQr(_) - | domain::WalletData::SwishQr(_) - | domain::WalletData::Mifinity(_) => { - Err(errors::ConnectorError::NotImplemented( - conn_utils::get_unimplemented_payment_method_error_message("Noon"), - )) - } + WalletData::PaypalRedirect(_) => Ok(NoonPaymentData::PayPal(NoonPayPal { + return_url: item.request.get_router_return_url()?, + })), + WalletData::AliPayQr(_) + | WalletData::AliPayRedirect(_) + | WalletData::AliPayHkRedirect(_) + | WalletData::AmazonPayRedirect(_) + | WalletData::MomoRedirect(_) + | WalletData::KakaoPayRedirect(_) + | WalletData::GoPayRedirect(_) + | WalletData::GcashRedirect(_) + | WalletData::ApplePayRedirect(_) + | WalletData::ApplePayThirdPartySdk(_) + | WalletData::DanaRedirect {} + | WalletData::GooglePayRedirect(_) + | WalletData::GooglePayThirdPartySdk(_) + | WalletData::MbWayRedirect(_) + | WalletData::MobilePayRedirect(_) + | WalletData::PaypalSdk(_) + | WalletData::Paze(_) + | WalletData::SamsungPay(_) + | WalletData::TwintRedirect {} + | WalletData::VippsRedirect {} + | WalletData::TouchNGoRedirect(_) + | WalletData::WeChatPayRedirect(_) + | WalletData::WeChatPayQr(_) + | WalletData::CashappQr(_) + | WalletData::SwishQr(_) + | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + utils::get_unimplemented_payment_method_error_message("Noon"), + )), }, - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment {} - | domain::PaymentMethodData::Reward {} - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment {} + | PaymentMethodData::Reward {} + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( - conn_utils::get_unimplemented_payment_method_error_message("Noon"), + utils::get_unimplemented_payment_method_error_message("Noon"), )) } }?, @@ -448,11 +452,11 @@ pub struct NoonAuthType { pub(super) business_identifier: Secret, } -impl TryFrom<&types::ConnectorAuthType> for NoonAuthType { +impl TryFrom<&ConnectorAuthType> for NoonAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { + fn try_from(auth_type: &ConnectorAuthType) -> Result { match auth_type { - types::ConnectorAuthType::SignatureKey { + ConnectorAuthType::SignatureKey { api_key, key1, api_secret, @@ -495,28 +499,28 @@ pub enum NoonPaymentStatus { Locked, } -impl ForeignFrom<(NoonPaymentStatus, Self)> for enums::AttemptStatus { - fn foreign_from(data: (NoonPaymentStatus, Self)) -> Self { - let (item, current_status) = data; - match item { - NoonPaymentStatus::Authorized => Self::Authorized, - NoonPaymentStatus::Captured - | NoonPaymentStatus::PartiallyCaptured - | NoonPaymentStatus::PartiallyRefunded - | NoonPaymentStatus::Refunded => Self::Charged, - NoonPaymentStatus::Reversed | NoonPaymentStatus::PartiallyReversed => Self::Voided, - NoonPaymentStatus::Cancelled | NoonPaymentStatus::Expired => Self::AuthenticationFailed, - NoonPaymentStatus::ThreeDsEnrollInitiated | NoonPaymentStatus::ThreeDsEnrollChecked => { - Self::AuthenticationPending - } - NoonPaymentStatus::ThreeDsResultVerified => Self::AuthenticationSuccessful, - NoonPaymentStatus::Failed | NoonPaymentStatus::Rejected => Self::Failure, - NoonPaymentStatus::Pending | NoonPaymentStatus::MarkedForReview => Self::Pending, - NoonPaymentStatus::Initiated - | NoonPaymentStatus::PaymentInfoAdded - | NoonPaymentStatus::Authenticated => Self::Started, - NoonPaymentStatus::Locked => current_status, +fn get_payment_status(data: (NoonPaymentStatus, AttemptStatus)) -> AttemptStatus { + let (item, current_status) = data; + match item { + NoonPaymentStatus::Authorized => AttemptStatus::Authorized, + NoonPaymentStatus::Captured + | NoonPaymentStatus::PartiallyCaptured + | NoonPaymentStatus::PartiallyRefunded + | NoonPaymentStatus::Refunded => AttemptStatus::Charged, + NoonPaymentStatus::Reversed | NoonPaymentStatus::PartiallyReversed => AttemptStatus::Voided, + NoonPaymentStatus::Cancelled | NoonPaymentStatus::Expired => { + AttemptStatus::AuthenticationFailed + } + NoonPaymentStatus::ThreeDsEnrollInitiated | NoonPaymentStatus::ThreeDsEnrollChecked => { + AttemptStatus::AuthenticationPending } + NoonPaymentStatus::ThreeDsResultVerified => AttemptStatus::AuthenticationSuccessful, + NoonPaymentStatus::Failed | NoonPaymentStatus::Rejected => AttemptStatus::Failure, + NoonPaymentStatus::Pending | NoonPaymentStatus::MarkedForReview => AttemptStatus::Pending, + NoonPaymentStatus::Initiated + | NoonPaymentStatus::PaymentInfoAdded + | NoonPaymentStatus::Authenticated => AttemptStatus::Started, + NoonPaymentStatus::Locked => current_status, } } @@ -554,28 +558,29 @@ pub struct NoonPaymentsResponse { result: NoonPaymentsResponseResult, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { let order = item.response.result.order; - let status = enums::AttemptStatus::foreign_from((order.status, item.data.status)); - let redirection_data = item.response.result.checkout_data.map(|redirection_data| { - services::RedirectForm::Form { - endpoint: redirection_data.post_url.to_string(), - method: services::Method::Post, - form_fields: std::collections::HashMap::new(), - } - }); + let status = get_payment_status((order.status, item.data.status)); + let redirection_data = + item.response + .result + .checkout_data + .map(|redirection_data| RedirectForm::Form { + endpoint: redirection_data.post_url.to_string(), + method: Method::Post, + form_fields: std::collections::HashMap::new(), + }); let mandate_reference = item.response .result .subscription - .map(|subscription_data| types::MandateReference { + .map(|subscription_data| MandateReference { connector_mandate_id: Some(subscription_data.identifier.expose()), payment_method_id: None, mandate_metadata: None, @@ -595,10 +600,8 @@ impl _ => { let connector_response_reference_id = order.reference.or(Some(order.id.to_string())); - Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( - order.id.to_string(), - ), + Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(order.id.to_string()), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(mandate_reference), connector_metadata: None, @@ -618,7 +621,7 @@ impl #[serde(rename_all = "camelCase")] pub struct NoonActionTransaction { amount: StringMajorUnit, - currency: diesel_models::enums::Currency, + currency: enums::Currency, transaction_reference: Option, } @@ -636,11 +639,9 @@ pub struct NoonPaymentsActionRequest { transaction: NoonActionTransaction, } -impl TryFrom<&NoonRouterData<&types::PaymentsCaptureRouterData>> for NoonPaymentsActionRequest { +impl TryFrom<&NoonRouterData<&PaymentsCaptureRouterData>> for NoonPaymentsActionRequest { type Error = error_stack::Report; - fn try_from( - data: &NoonRouterData<&types::PaymentsCaptureRouterData>, - ) -> Result { + fn try_from(data: &NoonRouterData<&PaymentsCaptureRouterData>) -> Result { let item = data.router_data; let amount = &data.amount; let order = NoonActionOrder { @@ -666,9 +667,9 @@ pub struct NoonPaymentsCancelRequest { order: NoonActionOrder, } -impl TryFrom<&types::PaymentsCancelRouterData> for NoonPaymentsCancelRequest { +impl TryFrom<&PaymentsCancelRouterData> for NoonPaymentsCancelRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsCancelRouterData) -> Result { + fn try_from(item: &PaymentsCancelRouterData) -> Result { let order = NoonActionOrder { id: item.request.connector_transaction_id.clone(), }; @@ -686,9 +687,9 @@ pub struct NoonRevokeMandateRequest { subscription: NoonSubscriptionObject, } -impl TryFrom<&types::MandateRevokeRouterData> for NoonRevokeMandateRequest { +impl TryFrom<&MandateRevokeRouterData> for NoonRevokeMandateRequest { type Error = error_stack::Report; - fn try_from(item: &types::MandateRevokeRouterData) -> Result { + fn try_from(item: &MandateRevokeRouterData) -> Result { Ok(Self { api_operation: NoonApiOperations::CancelSubscription, subscription: NoonSubscriptionObject { @@ -698,9 +699,9 @@ impl TryFrom<&types::MandateRevokeRouterData> for NoonRevokeMandateRequest { } } -impl TryFrom<&NoonRouterData<&types::RefundsRouterData>> for NoonPaymentsActionRequest { +impl TryFrom<&NoonRouterData<&RefundsRouterData>> for NoonPaymentsActionRequest { type Error = error_stack::Report; - fn try_from(data: &NoonRouterData<&types::RefundsRouterData>) -> Result { + fn try_from(data: &NoonRouterData<&RefundsRouterData>) -> Result { let item = data.router_data; let refund_amount = &data.amount; let order = NoonActionOrder { @@ -740,26 +741,26 @@ pub struct NoonRevokeMandateResponse { impl TryFrom< - types::ResponseRouterData< + ResponseRouterData< F, NoonRevokeMandateResponse, - types::MandateRevokeRequestData, - types::MandateRevokeResponseData, + MandateRevokeRequestData, + MandateRevokeResponseData, >, - > for types::RouterData + > for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< + item: ResponseRouterData< F, NoonRevokeMandateResponse, - types::MandateRevokeRequestData, - types::MandateRevokeResponseData, + MandateRevokeRequestData, + MandateRevokeResponseData, >, ) -> Result { match item.response.result.subscription.status { NoonRevokeStatus::Cancelled => Ok(Self { - response: Ok(types::MandateRevokeResponseData { + response: Ok(MandateRevokeResponseData { mandate_status: common_enums::MandateStatus::Revoked, }), ..item.data @@ -809,17 +810,15 @@ pub struct RefundResponse { message: String, } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let response = &item.response; let refund_status = enums::RefundStatus::from(response.result.transaction.status.to_owned()); - let response = if is_refund_failure(refund_status) { + let response = if utils::is_refund_failure(refund_status) { Err(ErrorResponse { status_code: item.http_code, code: response.result_code.to_string(), @@ -829,7 +828,7 @@ impl TryFrom> connector_transaction_id: Some(response.result.transaction.id.clone()), }) } else { - Ok(types::RefundsResponseData { + Ok(RefundsResponseData { connector_refund_id: item.response.result.transaction.id, refund_status, }) @@ -864,12 +863,10 @@ pub struct RefundSyncResponse { message: String, } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let noon_transaction: &NoonRefundResponseTransactions = item .response @@ -886,7 +883,7 @@ impl TryFrom> }) .ok_or(errors::ConnectorError::ResponseHandlingFailed)?; let refund_status = enums::RefundStatus::from(noon_transaction.status.to_owned()); - let response = if is_refund_failure(refund_status) { + let response = if utils::is_refund_failure(refund_status) { let response = &item.response; Err(ErrorResponse { status_code: item.http_code, @@ -897,7 +894,7 @@ impl TryFrom> connector_transaction_id: Some(noon_transaction.id.clone()), }) } else { - Ok(types::RefundsResponseData { + Ok(RefundsResponseData { connector_refund_id: noon_transaction.id.to_owned(), refund_status, }) diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index f34b09e8f35..a7fdd432daf 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -131,6 +131,7 @@ default_imp_for_authorize_session_token!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -219,6 +220,7 @@ default_imp_for_calculate_tax!( connectors::Nexixpay, connectors::Paybox, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nuvei, connectors::Payeezy, @@ -301,6 +303,7 @@ default_imp_for_session_update!( connectors::Mollie, connectors::Multisafepay, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -385,6 +388,7 @@ default_imp_for_post_session_tokens!( connectors::Mollie, connectors::Multisafepay, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -460,6 +464,7 @@ default_imp_for_complete_authorize!( connectors::Mifinity, connectors::Multisafepay, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Payeezy, @@ -534,6 +539,7 @@ default_imp_for_incremental_authorization!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -620,6 +626,7 @@ default_imp_for_create_customer!( connectors::Mollie, connectors::Multisafepay, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -772,6 +779,7 @@ default_imp_for_pre_processing_steps!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Paybox, @@ -854,6 +862,7 @@ default_imp_for_post_processing_steps!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -939,6 +948,7 @@ default_imp_for_approve!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1024,6 +1034,7 @@ default_imp_for_reject!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1109,6 +1120,7 @@ default_imp_for_webhook_source_verification!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1195,6 +1207,7 @@ default_imp_for_accept_dispute!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1280,6 +1293,7 @@ default_imp_for_submit_evidence!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1365,6 +1379,7 @@ default_imp_for_defend_dispute!( connectors::Klarna, connectors::Helcim, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1459,6 +1474,7 @@ default_imp_for_file_upload!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1542,6 +1558,7 @@ default_imp_for_payouts!( connectors::Nexixpay, connectors::Paybox, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nuvei, connectors::Payeezy, @@ -1622,6 +1639,7 @@ default_imp_for_payouts_create!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1709,6 +1727,7 @@ default_imp_for_payouts_retrieve!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1796,6 +1815,7 @@ default_imp_for_payouts_eligibility!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1882,6 +1902,7 @@ default_imp_for_payouts_fulfill!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1969,6 +1990,7 @@ default_imp_for_payouts_cancel!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2056,6 +2078,7 @@ default_imp_for_payouts_quote!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2143,6 +2166,7 @@ default_imp_for_payouts_recipient!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2230,6 +2254,7 @@ default_imp_for_payouts_recipient_account!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2317,6 +2342,7 @@ default_imp_for_frm_sale!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2404,6 +2430,7 @@ default_imp_for_frm_checkout!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2491,6 +2518,7 @@ default_imp_for_frm_transaction!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2578,6 +2606,7 @@ default_imp_for_frm_fulfillment!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2665,6 +2694,7 @@ default_imp_for_frm_record_return!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2833,6 +2863,7 @@ default_imp_for_uas_pre_authentication!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2916,6 +2947,7 @@ default_imp_for_uas_post_authentication!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2999,6 +3031,7 @@ default_imp_for_uas_authentication!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index d0241967acb..5fc2008e4aa 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -241,6 +241,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -327,6 +328,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -408,6 +410,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -494,6 +497,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -579,6 +583,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -665,6 +670,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -761,6 +767,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -849,6 +856,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -937,6 +945,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1025,6 +1034,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1113,6 +1123,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1201,6 +1212,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1289,6 +1301,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1377,6 +1390,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1465,6 +1479,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1551,6 +1566,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1639,6 +1655,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1727,6 +1744,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1815,6 +1833,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1903,6 +1922,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -1991,6 +2011,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, @@ -2076,6 +2097,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs index aec4d31072d..b678517ec74 100644 --- a/crates/hyperswitch_connectors/src/utils.rs +++ b/crates/hyperswitch_connectors/src/utils.rs @@ -19,6 +19,7 @@ use common_utils::{ use error_stack::{report, ResultExt}; use hyperswitch_domain_models::{ address::{Address, AddressDetails, PhoneDetails}, + mandates, payment_method_data::{self, Card, CardDetailsForNetworkTransactionId, PaymentMethodData}, router_data::{ ApplePayPredecryptData, ErrorResponse, PaymentMethodToken, RecurringMandatePaymentData, @@ -2378,6 +2379,27 @@ pub fn is_mandate_supported( } } +pub fn get_mandate_details( + setup_mandate_details: Option, +) -> Result, error_stack::Report> { + setup_mandate_details + .map(|mandate_data| match &mandate_data.mandate_type { + Some(mandates::MandateDataType::SingleUse(mandate)) + | Some(mandates::MandateDataType::MultiUse(Some(mandate))) => Ok(mandate.clone()), + Some(mandates::MandateDataType::MultiUse(None)) => { + Err(errors::ConnectorError::MissingRequiredField { + field_name: "setup_future_usage.mandate_data.mandate_type.multi_use.amount", + } + .into()) + } + None => Err(errors::ConnectorError::MissingRequiredField { + field_name: "setup_future_usage.mandate_data.mandate_type", + } + .into()), + }) + .transpose() +} + #[derive(Debug, strum::Display, Eq, PartialEq, Hash)] pub enum PaymentMethodDataType { Card, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index e6767fbb08b..07a9ea1da65 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -8,7 +8,6 @@ pub mod ebanx; pub mod gpayments; pub mod netcetera; pub mod nmi; -pub mod noon; pub mod opayo; pub mod opennode; pub mod payme; @@ -40,8 +39,8 @@ pub use hyperswitch_connectors::connectors::{ inespay::Inespay, itaubank, itaubank::Itaubank, jpmorgan, jpmorgan::Jpmorgan, klarna, klarna::Klarna, mifinity, mifinity::Mifinity, mollie, mollie::Mollie, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, - nomupay, nomupay::Nomupay, novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, paybox, - paybox::Paybox, payeezy, payeezy::Payeezy, payu, payu::Payu, placetopay, + nomupay, nomupay::Nomupay, noon, noon::Noon, novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, + paybox, paybox::Paybox, payeezy, payeezy::Payeezy, payu, payu::Payu, placetopay, placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, @@ -56,8 +55,7 @@ pub use self::dummyconnector::DummyConnector; pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, authorizedotnet::Authorizedotnet, checkout::Checkout, ebanx::Ebanx, gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, - noon::Noon, opayo::Opayo, opennode::Opennode, payme::Payme, payone::Payone, paypal::Paypal, - plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, - threedsecureio::Threedsecureio, trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, - wise::Wise, + opayo::Opayo, opennode::Opennode, payme::Payme, payone::Payone, paypal::Paypal, plaid::Plaid, + riskified::Riskified, signifyd::Signifyd, stripe::Stripe, threedsecureio::Threedsecureio, + trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index 7a43ec1a189..2b3c6515a36 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -706,7 +706,6 @@ default_imp_for_new_connector_integration_payment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -747,7 +746,6 @@ default_imp_for_new_connector_integration_refund!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -782,7 +780,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -839,7 +836,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -878,7 +874,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -901,7 +896,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -951,7 +945,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1081,7 +1074,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1123,7 +1115,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1165,7 +1156,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1207,7 +1197,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1249,7 +1238,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1291,7 +1279,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1333,7 +1320,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1375,7 +1361,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1415,7 +1400,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1545,7 +1529,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1587,7 +1570,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1629,7 +1611,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1671,7 +1652,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1713,7 +1693,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1752,7 +1731,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1939,7 +1917,6 @@ default_imp_for_new_connector_integration_uas!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index 6728d51558c..a3c32baba73 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -219,7 +219,6 @@ default_imp_for_complete_authorize!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payone, @@ -267,7 +266,6 @@ default_imp_for_webhook_source_verification!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -318,7 +316,6 @@ default_imp_for_create_customer!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -516,7 +513,6 @@ default_imp_for_accept_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -588,7 +584,6 @@ default_imp_for_file_upload!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Payme, connector::Payone, @@ -637,7 +632,6 @@ default_imp_for_submit_evidence!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Payme, connector::Payone, @@ -686,7 +680,6 @@ default_imp_for_defend_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Payme, connector::Payone, @@ -751,7 +744,6 @@ default_imp_for_pre_processing_steps!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payone, @@ -788,7 +780,6 @@ default_imp_for_post_processing_steps!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payone, @@ -816,7 +807,6 @@ default_imp_for_payouts!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -863,7 +853,6 @@ default_imp_for_payouts_create!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -913,7 +902,6 @@ default_imp_for_payouts_retrieve!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -966,7 +954,6 @@ default_imp_for_payouts_eligibility!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1015,7 +1002,6 @@ default_imp_for_payouts_fulfill!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1062,7 +1048,6 @@ default_imp_for_payouts_cancel!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1112,7 +1097,6 @@ default_imp_for_payouts_quote!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1163,7 +1147,6 @@ default_imp_for_payouts_recipient!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1217,7 +1200,6 @@ default_imp_for_payouts_recipient_account!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1268,7 +1250,6 @@ default_imp_for_approve!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1320,7 +1301,6 @@ default_imp_for_reject!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1474,7 +1454,6 @@ default_imp_for_frm_sale!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1526,7 +1505,6 @@ default_imp_for_frm_checkout!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1578,7 +1556,6 @@ default_imp_for_frm_transaction!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1630,7 +1607,6 @@ default_imp_for_frm_fulfillment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1682,7 +1658,6 @@ default_imp_for_frm_record_return!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -1732,7 +1707,6 @@ default_imp_for_incremental_authorization!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2003,7 +1977,6 @@ default_imp_for_authorize_session_token!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2053,7 +2026,6 @@ default_imp_for_calculate_tax!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2103,7 +2075,6 @@ default_imp_for_session_update!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2152,7 +2123,6 @@ default_imp_for_post_session_tokens!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2204,7 +2174,6 @@ default_imp_for_uas_pre_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2254,7 +2223,6 @@ default_imp_for_uas_post_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, @@ -2304,7 +2272,6 @@ default_imp_for_uas_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, connector::Opayo, connector::Opennode, connector::Payme, From 96e2b60aba766faf0bc9c71c706213dab60e69bc Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Tue, 11 Feb 2025 17:41:05 +0530 Subject: [PATCH 02/10] refactor(connector): [PAYME] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 14 +- .../src/connectors}/payme.rs | 595 ++++++++---------- .../src/connectors}/payme/transformers.rs | 418 ++++++------ .../src/default_implementations.rs | 32 + .../src/default_implementations_v2.rs | 22 + crates/router/src/connector.rs | 13 +- .../connector_integration_v2_impls.rs | 23 - crates/router/src/core/payments/flows.rs | 32 - 8 files changed, 543 insertions(+), 606 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/payme.rs (66%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/payme/transformers.rs (75%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 2f6a88734a1..d1a347069b4 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -45,6 +45,7 @@ pub mod novalnet; pub mod nuvei; pub mod paybox; pub mod payeezy; +pub mod payme; pub mod payu; pub mod placetopay; pub mod powertranz; @@ -78,10 +79,11 @@ pub use self::{ globepay::Globepay, gocardless::Gocardless, helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, mifinity::Mifinity, mollie::Mollie, multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, - noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payu::Payu, - placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, - razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, - thunes::Thunes, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, - volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, - zen::Zen, zsl::Zsl, + noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, + payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, + rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, + taxjar::Taxjar, thunes::Thunes, tsys::Tsys, + unified_authentication_service::UnifiedAuthenticationService, volt::Volt, + wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, + zsl::Zsl, }; diff --git a/crates/router/src/connector/payme.rs b/crates/hyperswitch_connectors/src/connectors/payme.rs similarity index 66% rename from crates/router/src/connector/payme.rs rename to crates/hyperswitch_connectors/src/connectors/payme.rs index 10a0fe67562..9c1a94ad3c0 100644 --- a/crates/router/src/connector/payme.rs +++ b/crates/hyperswitch_connectors/src/connectors/payme.rs @@ -1,38 +1,61 @@ pub mod transformers; use api_models::enums::AuthenticationType; +use common_enums::enums; use common_utils::{ crypto, - request::RequestContent, + errors::CustomResult, + ext_traits::BytesExt, + request::{Method, Request, RequestBuilder, RequestContent}, types::{ AmountConvertor, MinorUnit, MinorUnitForConnector, StringMajorUnit, StringMajorUnitForConnector, }, }; -use diesel_models::enums; use error_stack::{Report, ResultExt}; -use masking::{ExposeInterface, Secret}; -use transformers as payme; - -use crate::{ - configs::settings, - connector::utils::{self as connector_utils, PaymentMethodDataType, PaymentsPreProcessingData}, - core::{ - errors::{self, CustomResult}, - payments, +use hyperswitch_domain_models::{ + payment_method_data::PaymentMethodData, + router_data::{AccessToken, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, + CompleteAuthorize, InitPayment, PreProcessing, + }, + router_request_types::{ + AccessTokenRequestData, CompleteAuthorizeData, PaymentMethodTokenizationData, + PaymentsAuthorizeData, PaymentsCancelData, PaymentsCaptureData, PaymentsPreProcessingData, + PaymentsSessionData, PaymentsSyncData, RefundsData, SetupMandateRequestData, + }, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsCompleteAuthorizeRouterData, PaymentsPreProcessingRouterData, RefundsRouterData, + TokenizationRouterData, + }, +}; +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorRedirectResponse, + ConnectorSpecifications, ConnectorValidation, PaymentsPreProcessing, }, + configs::Connectors, + disputes::DisputePayload, + errors, events::connector_api_logs::ConnectorEvent, - headers, - services::{self, request, ConnectorIntegration, ConnectorSpecifications, ConnectorValidation}, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, - domain, - transformers::ForeignTryFrom, - ErrorResponse, Response, + PaymentsAuthorizeType, PaymentsCaptureType, PaymentsCompleteAuthorizeType, + PaymentsPreProcessingType, PaymentsSyncType, PaymentsVoidType, RefundExecuteType, + RefundSyncType, Response, TokenizationType, }, - // transformers::{ForeignFrom, ForeignTryFrom}, - utils::{handle_json_response_deserialization_failure, BytesExt}, + webhooks, +}; +use masking::{ExposeInterface, Secret}; +use transformers as payme; + +use crate::{ + types::ResponseRouterData, + utils::{self, ForeignTryFrom, PaymentsPreProcessingRequestData}, }; #[derive(Clone)] @@ -70,11 +93,11 @@ where { fn build_headers( &self, - _req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let header = vec![( - headers::CONTENT_TYPE.to_string(), + crate::constants::headers::CONTENT_TYPE.to_string(), Self::get_content_type(self).to_string().into(), )]; Ok(header) @@ -94,7 +117,7 @@ impl ConnectorCommon for Payme { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.payme.base_url.as_ref() } @@ -131,7 +154,7 @@ impl ConnectorCommon for Payme { Err(error_msg) => { event_builder.map(|event| event.set_error(serde_json::json!({"error": res.response.escape_ascii().to_string(), "status_code": res.status_code}))); router_env::logger::error!(deserialization_error =? error_msg); - handle_json_response_deserialization_failure(res, "payme") + utils::handle_json_response_deserialization_failure(res, "payme") } } } @@ -150,36 +173,32 @@ impl ConnectorValidation for Payme { | enums::CaptureMethod::Manual | enums::CaptureMethod::SequentialAutomatic => Ok(()), enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err( - connector_utils::construct_not_supported_error_report(capture_method, self.id()), + utils::construct_not_supported_error_report(capture_method, self.id()), ), } } fn validate_mandate_payment( &self, - pm_type: Option, - pm_data: domain::payments::PaymentMethodData, + pm_type: Option, + pm_data: PaymentMethodData, ) -> CustomResult<(), errors::ConnectorError> { let mandate_supported_pmd = std::collections::HashSet::from([ - PaymentMethodDataType::Card, - PaymentMethodDataType::ApplePayThirdPartySdk, + utils::PaymentMethodDataType::Card, + utils::PaymentMethodDataType::ApplePayThirdPartySdk, ]); - connector_utils::is_mandate_supported(pm_data, pm_type, mandate_supported_pmd, self.id()) + utils::is_mandate_supported(pm_data, pm_type, mandate_supported_pmd, self.id()) } } -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Payme +impl ConnectorIntegration + for Payme { fn get_headers( &self, - req: &types::TokenizationRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &TokenizationRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -189,8 +208,8 @@ impl fn get_url( &self, - _req: &types::TokenizationRouterData, - connectors: &settings::Connectors, + _req: &TokenizationRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}api/capture-buyer-token", @@ -200,8 +219,8 @@ impl fn get_request_body( &self, - req: &types::TokenizationRouterData, - _connectors: &settings::Connectors, + req: &TokenizationRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = payme::CaptureBuyerRequest::try_from(req)?; @@ -210,19 +229,17 @@ impl fn build_request( &self, - req: &types::TokenizationRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &TokenizationRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(match req.auth_type { AuthenticationType::ThreeDs => Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::TokenizationType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&TokenizationType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::TokenizationType::get_headers(self, req, connectors)?) - .set_body(types::TokenizationType::get_request_body( - self, req, connectors, - )?) + .headers(TokenizationType::get_headers(self, req, connectors)?) + .set_body(TokenizationType::get_request_body(self, req, connectors)?) .build(), ), AuthenticationType::NoThreeDs => None, @@ -231,12 +248,12 @@ impl fn handle_response( &self, - data: &types::TokenizationRouterData, + data: &TokenizationRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult + ) -> CustomResult where - types::PaymentsResponseData: Clone, + PaymentsResponseData: Clone, { let response: payme::CaptureBuyerResponse = res .response @@ -246,7 +263,7 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -271,25 +288,18 @@ impl } } -impl ConnectorIntegration - for Payme -{ -} +impl ConnectorIntegration for Payme {} -impl api::PaymentsPreProcessing for Payme {} +impl PaymentsPreProcessing for Payme {} -impl - ConnectorIntegration< - api::PreProcessing, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, - > for Payme +impl ConnectorIntegration + for Payme { fn get_headers( &self, - req: &types::PaymentsPreProcessingRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsPreProcessingRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -299,21 +309,20 @@ impl fn get_url( &self, - _req: &types::PaymentsPreProcessingRouterData, - connectors: &settings::Connectors, + _req: &PaymentsPreProcessingRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}api/generate-sale", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsPreProcessingRouterData, - _connectors: &settings::Connectors, + req: &PaymentsPreProcessingRouterData, + _connectors: &Connectors, ) -> CustomResult { let req_amount = req.request.get_minor_amount()?; let req_currency = req.request.get_currency()?; - let amount = - connector_utils::convert_amount(self.amount_converter, req_amount, req_currency)?; + let amount = utils::convert_amount(self.amount_converter, req_amount, req_currency)?; let connector_router_data = payme::PaymeRouterData::try_from((amount, req))?; let connector_req = payme::GenerateSaleRequest::try_from(&connector_router_data)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -321,20 +330,18 @@ impl fn build_request( &self, - req: &types::PaymentsPreProcessingRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsPreProcessingRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { let req = Some( - services::RequestBuilder::new() - .method(services::Method::Post) + RequestBuilder::new() + .method(Method::Post) .attach_default_headers() - .headers(types::PaymentsPreProcessingType::get_headers( - self, req, connectors, - )?) - .url(&types::PaymentsPreProcessingType::get_url( + .headers(PaymentsPreProcessingType::get_headers( self, req, connectors, )?) - .set_body(types::PaymentsPreProcessingType::get_request_body( + .url(&PaymentsPreProcessingType::get_url(self, req, connectors)?) + .set_body(PaymentsPreProcessingType::get_request_body( self, req, connectors, )?) .build(), @@ -344,10 +351,10 @@ impl fn handle_response( &self, - data: &types::PaymentsPreProcessingRouterData, + data: &PaymentsPreProcessingRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: payme::GenerateSaleResponse = res .response .parse_struct("Payme GenerateSaleResponse") @@ -356,7 +363,7 @@ impl let req_amount = data.request.get_minor_amount()?; let req_currency = data.request.get_currency()?; - let apple_pay_amount = connector_utils::convert_amount( + let apple_pay_amount = utils::convert_amount( self.apple_pay_google_pay_amount_converter, req_amount, req_currency, @@ -365,8 +372,8 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::foreign_try_from(( - types::ResponseRouterData { + RouterData::foreign_try_from(( + ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -393,27 +400,14 @@ impl } } -impl ConnectorIntegration - for Payme -{ -} +impl ConnectorIntegration for Payme {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Payme -{ +impl ConnectorIntegration for Payme { fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Payme".to_string()) .into(), @@ -421,35 +415,31 @@ impl } } -impl services::ConnectorRedirectResponse for Payme { +impl ConnectorRedirectResponse for Payme { fn get_flow_type( &self, _query_params: &str, _json_payload: Option, - action: services::PaymentAction, - ) -> CustomResult { + action: enums::PaymentAction, + ) -> CustomResult { match action { - services::PaymentAction::PSync - | services::PaymentAction::CompleteAuthorize - | services::PaymentAction::PaymentAuthenticateCompleteAuthorize => { - Ok(payments::CallConnectorAction::Trigger) + enums::PaymentAction::PSync + | enums::PaymentAction::CompleteAuthorize + | enums::PaymentAction::PaymentAuthenticateCompleteAuthorize => { + Ok(enums::CallConnectorAction::Trigger) } } } } -impl - ConnectorIntegration< - api::CompleteAuthorize, - types::CompleteAuthorizeData, - types::PaymentsResponseData, - > for Payme +impl ConnectorIntegration + for Payme { fn get_headers( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_content_type(&self) -> &'static str { @@ -457,35 +447,35 @@ impl } fn get_url( &self, - _req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, + _req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}api/pay-sale", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCompleteAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = payme::Pay3dsRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) } fn build_request( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCompleteAuthorizeType::get_url( + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCompleteAuthorizeType::get_url( self, req, connectors, )?) .attach_default_headers() - .headers(types::PaymentsCompleteAuthorizeType::get_headers( + .headers(PaymentsCompleteAuthorizeType::get_headers( self, req, connectors, )?) - .set_body(types::PaymentsCompleteAuthorizeType::get_request_body( + .set_body(PaymentsCompleteAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -493,10 +483,10 @@ impl } fn handle_response( &self, - data: &types::PaymentsCompleteAuthorizeRouterData, + data: &PaymentsCompleteAuthorizeRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: payme::PaymePaySaleResponse = res .response .parse_struct("Payme PaymePaySaleResponse") @@ -505,7 +495,7 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -529,23 +519,14 @@ impl } } -impl - ConnectorIntegration< - api::InitPayment, - types::PaymentsAuthorizeData, - types::PaymentsResponseData, - > for Payme -{ -} +impl ConnectorIntegration for Payme {} -impl ConnectorIntegration - for Payme -{ +impl ConnectorIntegration for Payme { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -555,8 +536,8 @@ impl ConnectorIntegration CustomResult { if req.request.mandate_id.is_some() { // For recurring mandate payments @@ -569,10 +550,10 @@ impl ConnectorIntegration CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_amount, req.request.currency, @@ -584,20 +565,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -606,10 +583,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: payme::PaymePaySaleResponse = res .response .parse_struct("Payme PaymentsAuthorizeResponse") @@ -618,7 +595,7 @@ impl ConnectorIntegration - for Payme -{ +impl ConnectorIntegration for Payme { fn get_url( &self, - _req: &types::RouterData, - connectors: &settings::Connectors, + _req: &RouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}api/get-sales", self.base_url(connectors))) } @@ -660,16 +635,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_request_body( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, + req: &RouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = payme::PaymeQuerySaleRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -677,35 +652,33 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsSyncType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) + .set_body(PaymentsSyncType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::RouterData, + data: &RouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, ) -> CustomResult< - types::RouterData, + RouterData, errors::ConnectorError, > where - api::PSync: Clone, - types::PaymentsSyncData: Clone, - types::PaymentsResponseData: Clone, + PSync: Clone, + PaymentsSyncData: Clone, + PaymentsResponseData: Clone, { let response: payme::PaymePaymentsResponse = res .response @@ -715,7 +688,7 @@ impl ConnectorIntegration - for Payme -{ +impl ConnectorIntegration for Payme { fn get_headers( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -749,18 +720,18 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}api/capture-sale", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::PaymentsCaptureRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCaptureRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_amount_to_capture, req.request.currency, @@ -772,18 +743,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCaptureType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsCaptureType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsCaptureType::get_request_body( + .headers(PaymentsCaptureType::get_headers(self, req, connectors)?) + .set_body(PaymentsCaptureType::get_request_body( self, req, connectors, )?) .build(), @@ -792,10 +761,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: payme::PaymePaySaleResponse = res .response .parse_struct("Payme PaymentsCaptureResponse") @@ -804,7 +773,7 @@ impl ConnectorIntegration - for Payme -{ +impl ConnectorIntegration for Payme { fn get_headers( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -846,8 +813,8 @@ impl ConnectorIntegration CustomResult { // for void, same endpoint is used as refund for payme Ok(format!("{}api/refund-sale", self.base_url(connectors))) @@ -855,8 +822,8 @@ impl ConnectorIntegration CustomResult { let req_amount = req.request @@ -870,8 +837,7 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsVoidType::get_url(self, req, connectors)?) + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsVoidType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsVoidType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsVoidType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsVoidType::get_headers(self, req, connectors)?) + .set_body(PaymentsVoidType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::PaymentsCancelRouterData, + data: &PaymentsCancelRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: payme::PaymeVoidResponse = res .response .parse_struct("PaymeVoidResponse") @@ -908,7 +872,7 @@ impl ConnectorIntegration for Payme { +impl ConnectorIntegration for Payme { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -948,18 +912,18 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + _req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}api/refund-sale", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::RefundsRouterData, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_refund_amount, req.request.currency, @@ -971,29 +935,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult, errors::ConnectorError> { + ) -> CustomResult, errors::ConnectorError> { let response: payme::PaymeRefundResponse = res .response .parse_struct("PaymeRefundResponse") @@ -1002,7 +962,7 @@ impl ConnectorIntegration for Payme { +impl ConnectorIntegration for Payme { fn get_url( &self, - _req: &types::RouterData, - connectors: &settings::Connectors, + _req: &RouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}api/get-transactions", self.base_url(connectors))) } fn get_headers( &self, - req: &types::RouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -1050,8 +1010,8 @@ impl ConnectorIntegration, - _connectors: &settings::Connectors, + req: &RouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = payme::PaymeQueryTransactionRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -1059,34 +1019,29 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) - .set_body(types::RefundSyncType::get_request_body( - self, req, connectors, - )?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) + .set_body(RefundSyncType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RouterData, + data: &RouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult< - types::RouterData, - errors::ConnectorError, - > + ) -> CustomResult, errors::ConnectorError> where - api::RSync: Clone, - types::RefundsData: Clone, - types::RefundsResponseData: Clone, + RSync: Clone, + RefundsData: Clone, + RefundsResponseData: Clone, { let response: payme::PaymeQueryTransactionResponse = res .response @@ -1096,7 +1051,7 @@ impl ConnectorIntegration, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::Md5)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let resource = @@ -1143,7 +1098,7 @@ impl api::IncomingWebhook for Payme { fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -1162,7 +1117,7 @@ impl api::IncomingWebhook for Payme { async fn verify_webhook_source( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, merchant_id: &common_utils::id_type::MerchantId, connector_webhook_details: Option, _connector_account_details: crypto::Encryptable>, @@ -1215,8 +1170,8 @@ impl api::IncomingWebhook for Payme { fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let resource = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; @@ -1226,13 +1181,13 @@ impl api::IncomingWebhook for Payme { | transformers::NotifyType::SaleFailure | transformers::NotifyType::SaleChargeback | transformers::NotifyType::SaleChargebackRefund => { - api::webhooks::ObjectReferenceId::PaymentId( + api_models::webhooks::ObjectReferenceId::PaymentId( api_models::payments::PaymentIdType::ConnectorTransactionId( resource.payme_sale_id, ), ) } - transformers::NotifyType::Refund => api::webhooks::ObjectReferenceId::RefundId( + transformers::NotifyType::Refund => api_models::webhooks::ObjectReferenceId::RefundId( api_models::webhooks::RefundIdType::ConnectorRefundId( resource.payme_transaction_id, ), @@ -1243,17 +1198,19 @@ impl api::IncomingWebhook for Payme { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let resource = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; - Ok(api::IncomingWebhookEvent::from(resource.notify_type)) + Ok(api_models::webhooks::IncomingWebhookEvent::from( + resource.notify_type, + )) } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let resource = serde_urlencoded::from_bytes::(request.body) @@ -1275,13 +1232,13 @@ impl api::IncomingWebhook for Payme { fn get_dispute_details( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let webhook_object = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; - Ok(api::disputes::DisputePayload { + Ok(DisputePayload { amount: webhook_object.price.to_string(), currency: webhook_object.currency, dispute_stage: api_models::enums::DisputeStage::Dispute, diff --git a/crates/router/src/connector/payme/transformers.rs b/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs similarity index 75% rename from crates/router/src/connector/payme/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/payme/transformers.rs index ec9991b4815..8dd83d1ebd7 100644 --- a/crates/router/src/connector/payme/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/payme/transformers.rs @@ -1,33 +1,40 @@ use std::collections::HashMap; use api_models::enums::{AuthenticationType, PaymentMethod}; +use common_enums::enums; use common_utils::{ pii, types::{MinorUnit, StringMajorUnit}, }; use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data::{PaymentMethodData, WalletData}, + router_data::{ConnectorAuthType, ErrorResponse, PaymentMethodToken, RouterData}, + router_flow_types::{Execute, Void}, + router_request_types::{PaymentsCancelData, PaymentsPreProcessingData, ResponseId}, + router_response_types::{ + MandateReference, PaymentsResponseData, PreprocessingResponseId, RedirectForm, + RefundsResponseData, + }, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsCompleteAuthorizeRouterData, PaymentsPreProcessingRouterData, + PaymentsSyncRouterData, RefundSyncRouterData, RefundsRouterData, TokenizationRouterData, + }, +}; +use hyperswitch_interfaces::{consts, errors}; use masking::{ExposeInterface, Secret}; use serde::{Deserialize, Serialize}; use url::Url; use crate::{ - connector::utils::{ - self, is_payment_failure, is_refund_failure, missing_field_err, AddressDetailsData, - CardData, PaymentsAuthorizeRequestData, PaymentsCancelRequestData, - PaymentsCompleteAuthorizeRequestData, PaymentsPreProcessingData, PaymentsSyncRequestData, - RouterData, - }, - consts, - core::errors, - services, - types::{ - self, api, domain, - domain::PaymentMethodData, - storage::enums, - transformers::{ForeignFrom, ForeignTryFrom}, - MandateReference, - }, + types::{PaymentsCancelResponseRouterData, RefundsResponseRouterData, ResponseRouterData}, unimplemented_payment_method, + utils::{ + self, AddressDetailsData, CardData, PaymentsAuthorizeRequestData, + PaymentsCancelRequestData, PaymentsCompleteAuthorizeRequestData, + PaymentsPreProcessingRequestData, PaymentsSyncRequestData, RouterData as OtherRouterData, + }, }; const LANGUAGE: &str = "en"; @@ -155,18 +162,17 @@ pub struct GenerateSaleResponse { payme_sale_id: String, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { match item.response { // To handle webhook response PaymePaymentsResponse::PaymePaySaleResponse(response) => { - Self::try_from(types::ResponseRouterData { + Self::try_from(ResponseRouterData { response, data: item.data, http_code: item.http_code, @@ -174,7 +180,7 @@ impl } // To handle PSync response PaymePaymentsResponse::SaleQueryResponse(response) => { - Self::try_from(types::ResponseRouterData { + Self::try_from(ResponseRouterData { response, data: item.data, http_code: item.http_code, @@ -184,23 +190,22 @@ impl } } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { let status = enums::AttemptStatus::from(item.response.sale_status.clone()); - let response = if is_payment_failure(status) { + let response = if utils::is_payment_failure(status) { // To populate error message in case of failure - Err(types::ErrorResponse::foreign_from(( + Err(get_pay_sale_error_response(( &item.response, item.http_code, ))) } else { - Ok(types::PaymentsResponseData::try_from(&item.response)?) + Ok(PaymentsResponseData::try_from(&item.response)?) }; Ok(Self { status, @@ -210,42 +215,39 @@ impl } } -impl ForeignFrom<(&PaymePaySaleResponse, u16)> for types::ErrorResponse { - fn foreign_from((pay_sale_response, http_code): (&PaymePaySaleResponse, u16)) -> Self { - let code = pay_sale_response - .status_error_code - .map(|error_code| error_code.to_string()) - .unwrap_or(consts::NO_ERROR_CODE.to_string()); - Self { - code, - message: pay_sale_response - .status_error_details - .clone() - .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()), - reason: pay_sale_response.status_error_details.to_owned(), - status_code: http_code, - attempt_status: None, - connector_transaction_id: Some(pay_sale_response.payme_sale_id.clone()), - } +fn get_pay_sale_error_response( + (pay_sale_response, http_code): (&PaymePaySaleResponse, u16), +) -> ErrorResponse { + let code = pay_sale_response + .status_error_code + .map(|error_code| error_code.to_string()) + .unwrap_or(consts::NO_ERROR_CODE.to_string()); + ErrorResponse { + code, + message: pay_sale_response + .status_error_details + .clone() + .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()), + reason: pay_sale_response.status_error_details.to_owned(), + status_code: http_code, + attempt_status: None, + connector_transaction_id: Some(pay_sale_response.payme_sale_id.clone()), } } -impl TryFrom<&PaymePaySaleResponse> for types::PaymentsResponseData { +impl TryFrom<&PaymePaySaleResponse> for PaymentsResponseData { type Error = error_stack::Report; fn try_from(value: &PaymePaySaleResponse) -> Result { let redirection_data = match value.sale_3ds { - Some(true) => value - .redirect_url - .clone() - .map(|url| services::RedirectForm::Form { - endpoint: url.to_string(), - method: services::Method::Get, - form_fields: HashMap::::new(), - }), + Some(true) => value.redirect_url.clone().map(|url| RedirectForm::Form { + endpoint: url.to_string(), + method: common_utils::request::Method::Get, + form_fields: HashMap::::new(), + }), _ => None, }; Ok(Self::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(value.payme_sale_id.clone()), + resource_id: ResponseId::ConnectorTransactionId(value.payme_sale_id.clone()), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(value.buyer_key.clone().map(|buyer_key| { MandateReference { @@ -264,12 +266,12 @@ impl TryFrom<&PaymePaySaleResponse> for types::PaymentsResponseData { } } -impl TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { // Only one element would be present since we are passing one transaction id in the PSync request let transaction_response = item @@ -279,14 +281,14 @@ impl TryFrom TryFrom for types::ErrorResponse { - fn foreign_from((sale_query_response, http_code): (&SaleQuery, u16)) -> Self { - Self { - code: sale_query_response - .sale_error_code - .clone() - .unwrap_or(consts::NO_ERROR_CODE.to_string()), - message: sale_query_response - .sale_error_text - .clone() - .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()), - reason: sale_query_response.sale_error_text.clone(), - status_code: http_code, - attempt_status: None, - connector_transaction_id: Some(sale_query_response.sale_payme_id.clone()), - } +fn get_sale_query_error_response( + (sale_query_response, http_code): (&SaleQuery, u16), +) -> ErrorResponse { + ErrorResponse { + code: sale_query_response + .sale_error_code + .clone() + .unwrap_or(consts::NO_ERROR_CODE.to_string()), + message: sale_query_response + .sale_error_text + .clone() + .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()), + reason: sale_query_response.sale_error_text.clone(), + status_code: http_code, + attempt_status: None, + connector_transaction_id: Some(sale_query_response.sale_payme_id.clone()), } } -impl From<&SaleQuery> for types::PaymentsResponseData { +impl From<&SaleQuery> for PaymentsResponseData { fn from(value: &SaleQuery) -> Self { Self::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(value.sale_payme_id.clone()), + resource_id: ResponseId::ConnectorTransactionId(value.sale_payme_id.clone()), redirection_data: Box::new(None), // mandate reference will be updated with webhooks only. That has been handled with PaymePaySaleResponse struct mandate_reference: Box::new(None), @@ -346,10 +348,10 @@ pub enum SalePaymentMethod { ApplePay, } -impl TryFrom<&PaymeRouterData<&types::PaymentsPreProcessingRouterData>> for GenerateSaleRequest { +impl TryFrom<&PaymeRouterData<&PaymentsPreProcessingRouterData>> for GenerateSaleRequest { type Error = error_stack::Report; fn try_from( - item: &PaymeRouterData<&types::PaymentsPreProcessingRouterData>, + item: &PaymeRouterData<&PaymentsPreProcessingRouterData>, ) -> Result { let sale_type = SaleType::try_from(item.router_data)?; let seller_payme_id = @@ -358,7 +360,7 @@ impl TryFrom<&PaymeRouterData<&types::PaymentsPreProcessingRouterData>> for Gene let services = get_services(item.router_data); let product_name = order_details .first() - .ok_or_else(missing_field_err("order_details"))? + .ok_or_else(utils::missing_field_err("order_details"))? .product_name .clone(); let pmd = item @@ -366,7 +368,7 @@ impl TryFrom<&PaymeRouterData<&types::PaymentsPreProcessingRouterData>> for Gene .request .payment_method_data .to_owned() - .ok_or_else(missing_field_err("payment_method_data"))?; + .ok_or_else(utils::missing_field_err("payment_method_data"))?; Ok(Self { seller_payme_id, sale_price: item.amount.to_owned(), @@ -389,35 +391,35 @@ impl TryFrom<&PaymentMethodData> for SalePaymentMethod { match item { PaymentMethodData::Card(_) => Ok(Self::CreditCard), PaymentMethodData::Wallet(wallet_data) => match wallet_data { - domain::WalletData::ApplePayThirdPartySdk(_) => Ok(Self::ApplePay), - domain::WalletData::AliPayQr(_) - | domain::WalletData::AliPayRedirect(_) - | domain::WalletData::AliPayHkRedirect(_) - | domain::WalletData::AmazonPayRedirect(_) - | domain::WalletData::MomoRedirect(_) - | domain::WalletData::KakaoPayRedirect(_) - | domain::WalletData::GoPayRedirect(_) - | domain::WalletData::GcashRedirect(_) - | domain::WalletData::ApplePayRedirect(_) - | domain::WalletData::DanaRedirect {} - | domain::WalletData::GooglePay(_) - | domain::WalletData::GooglePayRedirect(_) - | domain::WalletData::GooglePayThirdPartySdk(_) - | domain::WalletData::MbWayRedirect(_) - | domain::WalletData::MobilePayRedirect(_) - | domain::WalletData::PaypalRedirect(_) - | domain::WalletData::PaypalSdk(_) - | domain::WalletData::Paze(_) - | domain::WalletData::SamsungPay(_) - | domain::WalletData::TwintRedirect {} - | domain::WalletData::VippsRedirect {} - | domain::WalletData::TouchNGoRedirect(_) - | domain::WalletData::WeChatPayRedirect(_) - | domain::WalletData::WeChatPayQr(_) - | domain::WalletData::CashappQr(_) - | domain::WalletData::ApplePay(_) - | domain::WalletData::SwishQr(_) - | domain::WalletData::Mifinity(_) => Err(errors::ConnectorError::NotSupported { + WalletData::ApplePayThirdPartySdk(_) => Ok(Self::ApplePay), + WalletData::AliPayQr(_) + | WalletData::AliPayRedirect(_) + | WalletData::AliPayHkRedirect(_) + | WalletData::AmazonPayRedirect(_) + | WalletData::MomoRedirect(_) + | WalletData::KakaoPayRedirect(_) + | WalletData::GoPayRedirect(_) + | WalletData::GcashRedirect(_) + | WalletData::ApplePayRedirect(_) + | WalletData::DanaRedirect {} + | WalletData::GooglePay(_) + | WalletData::GooglePayRedirect(_) + | WalletData::GooglePayThirdPartySdk(_) + | WalletData::MbWayRedirect(_) + | WalletData::MobilePayRedirect(_) + | WalletData::PaypalRedirect(_) + | WalletData::PaypalSdk(_) + | WalletData::Paze(_) + | WalletData::SamsungPay(_) + | WalletData::TwintRedirect {} + | WalletData::VippsRedirect {} + | WalletData::TouchNGoRedirect(_) + | WalletData::WeChatPayRedirect(_) + | WalletData::WeChatPayQr(_) + | WalletData::CashappQr(_) + | WalletData::ApplePay(_) + | WalletData::SwishQr(_) + | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotSupported { message: "Wallet".to_string(), connector: "payme", } @@ -446,10 +448,10 @@ impl TryFrom<&PaymentMethodData> for SalePaymentMethod { } } -impl TryFrom<&PaymeRouterData<&types::PaymentsAuthorizeRouterData>> for PaymePaymentRequest { +impl TryFrom<&PaymeRouterData<&PaymentsAuthorizeRouterData>> for PaymePaymentRequest { type Error = error_stack::Report; fn try_from( - value: &PaymeRouterData<&types::PaymentsAuthorizeRouterData>, + value: &PaymeRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let payme_request = if value.router_data.request.mandate_id.is_some() { Self::MandateRequest(MandateRequest::try_from(value)?) @@ -460,9 +462,9 @@ impl TryFrom<&PaymeRouterData<&types::PaymentsAuthorizeRouterData>> for PaymePay } } -impl TryFrom<&types::PaymentsSyncRouterData> for PaymeQuerySaleRequest { +impl TryFrom<&PaymentsSyncRouterData> for PaymeQuerySaleRequest { type Error = error_stack::Report; - fn try_from(value: &types::PaymentsSyncRouterData) -> Result { + fn try_from(value: &PaymentsSyncRouterData) -> Result { let seller_payme_id = PaymeAuthType::try_from(&value.connector_auth_type)?.seller_payme_id; Ok(Self { sale_payme_id: value.request.get_connector_transaction_id()?, @@ -471,9 +473,9 @@ impl TryFrom<&types::PaymentsSyncRouterData> for PaymeQuerySaleRequest { } } -impl TryFrom<&types::RefundSyncRouterData> for PaymeQueryTransactionRequest { +impl TryFrom<&RefundSyncRouterData> for PaymeQueryTransactionRequest { type Error = error_stack::Report; - fn try_from(value: &types::RefundSyncRouterData) -> Result { + fn try_from(value: &RefundSyncRouterData) -> Result { let seller_payme_id = PaymeAuthType::try_from(&value.connector_auth_type)?.seller_payme_id; Ok(Self { payme_transaction_id: value @@ -487,24 +489,24 @@ impl TryFrom<&types::RefundSyncRouterData> for PaymeQueryTransactionRequest { } impl - ForeignTryFrom<( - types::ResponseRouterData< + utils::ForeignTryFrom<( + ResponseRouterData< F, GenerateSaleResponse, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, + PaymentsPreProcessingData, + PaymentsResponseData, >, StringMajorUnit, - )> for types::RouterData + )> for RouterData { type Error = error_stack::Report; fn foreign_try_from( (item, apple_pay_amount): ( - types::ResponseRouterData< + ResponseRouterData< F, GenerateSaleResponse, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, + PaymentsPreProcessingData, + PaymentsResponseData, >, StringMajorUnit, ), @@ -518,11 +520,10 @@ impl // then move to authorize flow status: enums::AttemptStatus::Pending, preprocessing_id: Some(item.response.payme_sale_id.to_owned()), - response: Ok(types::PaymentsResponseData::PreProcessingResponse { - pre_processing_id: - types::PreprocessingResponseId::ConnectorTransactionId( - item.response.payme_sale_id, - ), + response: Ok(PaymentsResponseData::PreProcessingResponse { + pre_processing_id: PreprocessingResponseId::ConnectorTransactionId( + item.response.payme_sale_id, + ), connector_metadata: None, session_token: None, connector_response_reference_id: None, @@ -537,11 +538,11 @@ impl // status is made authentication_pending to show redirection status: enums::AttemptStatus::AuthenticationPending, preprocessing_id: Some(item.response.payme_sale_id.to_owned()), - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( item.response.payme_sale_id.to_owned(), ), - redirection_data: Box::new(Some(services::RedirectForm::Payme)), + redirection_data: Box::new(Some(RedirectForm::Payme)), mandate_reference: Box::new(None), connector_metadata: None, network_txn_id: None, @@ -559,7 +560,7 @@ impl let payme_auth_type = PaymeAuthType::try_from(&item.data.connector_auth_type)?; let session_token = match pmd { - Some(PaymentMethodData::Wallet(domain::WalletData::ApplePayThirdPartySdk( + Some(PaymentMethodData::Wallet(WalletData::ApplePayThirdPartySdk( _, ))) => Some(api_models::payments::SessionToken::ApplePay(Box::new( api_models::payments::ApplepaySessionTokenResponse { @@ -603,8 +604,8 @@ impl // We don't get any status from payme, so defaulting it to pending status: enums::AttemptStatus::Pending, preprocessing_id: Some(item.response.payme_sale_id.to_owned()), - response: Ok(types::PaymentsResponseData::PreProcessingResponse { - pre_processing_id: types::PreprocessingResponseId::ConnectorTransactionId( + response: Ok(PaymentsResponseData::PreProcessingResponse { + pre_processing_id: PreprocessingResponseId::ConnectorTransactionId( item.response.payme_sale_id, ), connector_metadata: None, @@ -618,17 +619,15 @@ impl } } -impl TryFrom<&PaymeRouterData<&types::PaymentsAuthorizeRouterData>> for MandateRequest { +impl TryFrom<&PaymeRouterData<&PaymentsAuthorizeRouterData>> for MandateRequest { type Error = error_stack::Report; - fn try_from( - item: &PaymeRouterData<&types::PaymentsAuthorizeRouterData>, - ) -> Result { + fn try_from(item: &PaymeRouterData<&PaymentsAuthorizeRouterData>) -> Result { let seller_payme_id = PaymeAuthType::try_from(&item.router_data.connector_auth_type)?.seller_payme_id; let order_details = item.router_data.request.get_order_details()?; let product_name = order_details .first() - .ok_or_else(missing_field_err("order_details"))? + .ok_or_else(utils::missing_field_err("order_details"))? .product_name .clone(); Ok(Self { @@ -645,9 +644,9 @@ impl TryFrom<&PaymeRouterData<&types::PaymentsAuthorizeRouterData>> for MandateR } } -impl TryFrom<&types::PaymentsAuthorizeRouterData> for PayRequest { +impl TryFrom<&PaymentsAuthorizeRouterData> for PayRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsAuthorizeRouterData) -> Result { + fn try_from(item: &PaymentsAuthorizeRouterData) -> Result { match item.request.payment_method_data.clone() { PaymentMethodData::Card(req_card) => { let card = PaymeCard { @@ -701,9 +700,9 @@ pub struct PaymeRedirectResponseData { meta_data: String, } -impl TryFrom<&types::PaymentsCompleteAuthorizeRouterData> for Pay3dsRequest { +impl TryFrom<&PaymentsCompleteAuthorizeRouterData> for Pay3dsRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsCompleteAuthorizeRouterData) -> Result { + fn try_from(item: &PaymentsCompleteAuthorizeRouterData) -> Result { match item.request.payment_method_data.clone() { Some(PaymentMethodData::Card(_)) => { let buyer_email = item.request.get_email()?; @@ -722,18 +721,19 @@ impl TryFrom<&types::PaymentsCompleteAuthorizeRouterData> for Pay3dsRequest { .clone() .ok_or(errors::ConnectorError::MissingConnectorTransactionID)?; let pm_token = item.get_payment_method_token()?; - let buyer_key = match pm_token { - types::PaymentMethodToken::Token(token) => token, - types::PaymentMethodToken::ApplePayDecrypt(_) => Err( - unimplemented_payment_method!("Apple Pay", "Simplified", "Payme"), - )?, - types::PaymentMethodToken::PazeDecrypt(_) => { - Err(unimplemented_payment_method!("Paze", "Payme"))? - } - types::PaymentMethodToken::GooglePayDecrypt(_) => { - Err(unimplemented_payment_method!("Google Pay", "Payme"))? - } - }; + let buyer_key = + match pm_token { + PaymentMethodToken::Token(token) => token, + PaymentMethodToken::ApplePayDecrypt(_) => Err( + unimplemented_payment_method!("Apple Pay", "Simplified", "Payme"), + )?, + PaymentMethodToken::PazeDecrypt(_) => { + Err(unimplemented_payment_method!("Paze", "Payme"))? + } + PaymentMethodToken::GooglePayDecrypt(_) => { + Err(unimplemented_payment_method!("Google Pay", "Payme"))? + } + }; Ok(Self { buyer_email, buyer_key, @@ -767,9 +767,9 @@ impl TryFrom<&types::PaymentsCompleteAuthorizeRouterData> for Pay3dsRequest { } } -impl TryFrom<&types::TokenizationRouterData> for CaptureBuyerRequest { +impl TryFrom<&TokenizationRouterData> for CaptureBuyerRequest { type Error = error_stack::Report; - fn try_from(item: &types::TokenizationRouterData) -> Result { + fn try_from(item: &TokenizationRouterData) -> Result { match item.request.payment_method_data.clone() { PaymentMethodData::Card(req_card) => { let seller_payme_id = @@ -817,16 +817,16 @@ pub struct PaymeAuthType { pub(super) payme_merchant_id: Option>, } -impl TryFrom<&types::ConnectorAuthType> for PaymeAuthType { +impl TryFrom<&ConnectorAuthType> for PaymeAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { + fn try_from(auth_type: &ConnectorAuthType) -> Result { match auth_type { - types::ConnectorAuthType::BodyKey { api_key, key1 } => Ok(Self { + ConnectorAuthType::BodyKey { api_key, key1 } => Ok(Self { seller_payme_id: api_key.to_owned(), payme_public_key: key1.to_owned(), payme_merchant_id: None, }), - types::ConnectorAuthType::SignatureKey { + ConnectorAuthType::SignatureKey { api_key, key1, api_secret, @@ -840,9 +840,9 @@ impl TryFrom<&types::ConnectorAuthType> for PaymeAuthType { } } -impl TryFrom<&types::PaymentsPreProcessingRouterData> for SaleType { +impl TryFrom<&PaymentsPreProcessingRouterData> for SaleType { type Error = error_stack::Report; - fn try_from(value: &types::PaymentsPreProcessingRouterData) -> Result { + fn try_from(value: &PaymentsPreProcessingRouterData) -> Result { let sale_type = if value.request.setup_mandate_details.is_some() { // First mandate Self::Token @@ -922,19 +922,16 @@ pub struct PaymeMetadata { payme_transaction_id: Option, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { Ok(Self { - payment_method_token: Some(types::PaymentMethodToken::Token( - item.response.buyer_key.clone(), - )), - response: Ok(types::PaymentsResponseData::TokenizationResponse { + payment_method_token: Some(PaymentMethodToken::Token(item.response.buyer_key.clone())), + response: Ok(PaymentsResponseData::TokenizationResponse { token: item.response.buyer_key.expose(), }), ..item.data @@ -948,11 +945,9 @@ pub struct PaymentCaptureRequest { sale_price: MinorUnit, } -impl TryFrom<&PaymeRouterData<&types::PaymentsCaptureRouterData>> for PaymentCaptureRequest { +impl TryFrom<&PaymeRouterData<&PaymentsCaptureRouterData>> for PaymentCaptureRequest { type Error = error_stack::Report; - fn try_from( - item: &PaymeRouterData<&types::PaymentsCaptureRouterData>, - ) -> Result { + fn try_from(item: &PaymeRouterData<&PaymentsCaptureRouterData>) -> Result { if item.router_data.request.minor_amount_to_capture != item.router_data.request.minor_payment_amount { @@ -978,9 +973,9 @@ pub struct PaymeRefundRequest { language: String, } -impl TryFrom<&PaymeRouterData<&types::RefundsRouterData>> for PaymeRefundRequest { +impl TryFrom<&PaymeRouterData<&RefundsRouterData>> for PaymeRefundRequest { type Error = error_stack::Report; - fn try_from(item: &PaymeRouterData<&types::RefundsRouterData>) -> Result { + fn try_from(item: &PaymeRouterData<&RefundsRouterData>) -> Result { let auth_type = PaymeAuthType::try_from(&item.router_data.connector_auth_type)?; Ok(Self { payme_sale_id: item.router_data.request.connector_transaction_id.clone(), @@ -1014,20 +1009,20 @@ pub struct PaymeRefundResponse { status_error_code: Option, } -impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let refund_status = enums::RefundStatus::try_from(item.response.sale_status.clone())?; - let response = if is_refund_failure(refund_status) { + let response = if utils::is_refund_failure(refund_status) { let payme_response = &item.response; let status_error_code = payme_response .status_error_code .map(|error_code| error_code.to_string()); - Err(types::ErrorResponse { + Err(ErrorResponse { code: status_error_code .clone() .unwrap_or_else(|| consts::NO_ERROR_CODE.to_string()), @@ -1040,7 +1035,7 @@ impl TryFrom connector_transaction_id: payme_response.payme_transaction_id.clone(), }) } else { - Ok(types::RefundsResponseData { + Ok(RefundsResponseData { connector_refund_id: item .response .payme_transaction_id @@ -1063,18 +1058,12 @@ pub struct PaymeVoidRequest { language: String, } -impl - TryFrom< - &PaymeRouterData< - &types::RouterData, - >, - > for PaymeVoidRequest +impl TryFrom<&PaymeRouterData<&RouterData>> + for PaymeVoidRequest { type Error = error_stack::Report; fn try_from( - item: &PaymeRouterData< - &types::RouterData, - >, + item: &PaymeRouterData<&RouterData>, ) -> Result { let auth_type = PaymeAuthType::try_from(&item.router_data.connector_auth_type)?; Ok(Self { @@ -1093,20 +1082,18 @@ pub struct PaymeVoidResponse { status_error_code: Option, } -impl TryFrom> - for types::PaymentsCancelRouterData -{ +impl TryFrom> for PaymentsCancelRouterData { type Error = error_stack::Report; fn try_from( - item: types::PaymentsCancelResponseRouterData, + item: PaymentsCancelResponseRouterData, ) -> Result { let status = enums::AttemptStatus::from(item.response.sale_status.clone()); - let response = if is_payment_failure(status) { + let response = if utils::is_payment_failure(status) { let payme_response = &item.response; let status_error_code = payme_response .status_error_code .map(|error_code| error_code.to_string()); - Err(types::ErrorResponse { + Err(ErrorResponse { code: status_error_code .clone() .unwrap_or_else(|| consts::NO_ERROR_CODE.to_string()), @@ -1120,8 +1107,8 @@ impl TryFrom> }) } else { // Since we are not receiving payme_sale_id, we are not populating the transaction response - Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::NoResponseId, + Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::NoResponseId, redirection_data: Box::new(None), mandate_reference: Box::new(None), connector_metadata: None, @@ -1150,19 +1137,12 @@ pub struct TransactionQuery { payme_transaction_id: String, } -impl - TryFrom< - types::ResponseRouterData, - > for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< - F, - PaymeQueryTransactionResponse, - T, - types::RefundsResponseData, - >, + item: ResponseRouterData, ) -> Result { let pay_sale_response = item .response @@ -1170,8 +1150,8 @@ impl .first() .ok_or(errors::ConnectorError::ResponseHandlingFailed)?; let refund_status = enums::RefundStatus::try_from(pay_sale_response.sale_status.clone())?; - let response = if is_refund_failure(refund_status) { - Err(types::ErrorResponse { + let response = if utils::is_refund_failure(refund_status) { + Err(ErrorResponse { code: consts::NO_ERROR_CODE.to_string(), message: consts::NO_ERROR_CODE.to_string(), reason: None, @@ -1180,7 +1160,7 @@ impl connector_transaction_id: Some(pay_sale_response.payme_transaction_id.clone()), }) } else { - Ok(types::RefundsResponseData { + Ok(RefundsResponseData { refund_status, connector_refund_id: pay_sale_response.payme_transaction_id.clone(), }) @@ -1192,7 +1172,7 @@ impl } } -fn get_services(item: &types::PaymentsPreProcessingRouterData) -> Option { +fn get_services(item: &PaymentsPreProcessingRouterData) -> Option { match item.auth_type { AuthenticationType::ThreeDs => { let settings = ThreeDsSettings { active: true }; @@ -1275,7 +1255,7 @@ impl From for PaymeQueryTransactionResponse { } } -impl From for api::IncomingWebhookEvent { +impl From for api_models::webhooks::IncomingWebhookEvent { fn from(value: NotifyType) -> Self { match value { NotifyType::SaleComplete => Self::PaymentIntentSuccess, diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index a7fdd432daf..eaa0a54f593 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -137,6 +137,7 @@ default_imp_for_authorize_session_token!( connectors::Nexixpay, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -224,6 +225,7 @@ default_imp_for_calculate_tax!( connectors::Novalnet, connectors::Nuvei, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -310,6 +312,7 @@ default_imp_for_session_update!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::UnifiedAuthenticationService, @@ -395,6 +398,7 @@ default_imp_for_post_session_tokens!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Fiuu, @@ -546,6 +550,7 @@ default_imp_for_incremental_authorization!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -633,6 +638,7 @@ default_imp_for_create_customer!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -869,6 +875,7 @@ default_imp_for_post_processing_steps!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -955,6 +962,7 @@ default_imp_for_approve!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1041,6 +1049,7 @@ default_imp_for_reject!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1127,6 +1136,7 @@ default_imp_for_webhook_source_verification!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1214,6 +1224,7 @@ default_imp_for_accept_dispute!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1300,6 +1311,7 @@ default_imp_for_submit_evidence!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1386,6 +1398,7 @@ default_imp_for_defend_dispute!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1481,6 +1494,7 @@ default_imp_for_file_upload!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1562,6 +1576,7 @@ default_imp_for_payouts!( connectors::Novalnet, connectors::Nuvei, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1646,6 +1661,7 @@ default_imp_for_payouts_create!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1734,6 +1750,7 @@ default_imp_for_payouts_retrieve!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1822,6 +1839,7 @@ default_imp_for_payouts_eligibility!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1909,6 +1927,7 @@ default_imp_for_payouts_fulfill!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1997,6 +2016,7 @@ default_imp_for_payouts_cancel!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2085,6 +2105,7 @@ default_imp_for_payouts_quote!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2173,6 +2194,7 @@ default_imp_for_payouts_recipient!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2261,6 +2283,7 @@ default_imp_for_payouts_recipient_account!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2349,6 +2372,7 @@ default_imp_for_frm_sale!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2437,6 +2461,7 @@ default_imp_for_frm_checkout!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2525,6 +2550,7 @@ default_imp_for_frm_transaction!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2613,6 +2639,7 @@ default_imp_for_frm_fulfillment!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2701,6 +2728,7 @@ default_imp_for_frm_record_return!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2784,6 +2812,7 @@ default_imp_for_revoking_mandates!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2869,6 +2898,7 @@ default_imp_for_uas_pre_authentication!( connectors::Nexixpay, connectors::Nuvei, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Powertranz, connectors::Prophetpay, @@ -2953,6 +2983,7 @@ default_imp_for_uas_post_authentication!( connectors::Nexixpay, connectors::Nuvei, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Powertranz, connectors::Prophetpay, @@ -3037,6 +3068,7 @@ default_imp_for_uas_authentication!( connectors::Nexixpay, connectors::Nuvei, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Powertranz, connectors::Prophetpay, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index 5fc2008e4aa..dff7dada1a5 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -248,6 +248,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -335,6 +336,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -417,6 +419,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -504,6 +507,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -590,6 +594,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -677,6 +682,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -774,6 +780,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -863,6 +870,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -952,6 +960,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1041,6 +1050,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1130,6 +1140,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1219,6 +1230,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1308,6 +1320,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1397,6 +1410,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1486,6 +1500,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1573,6 +1588,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1662,6 +1678,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1751,6 +1768,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1840,6 +1858,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -1929,6 +1948,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2018,6 +2038,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, @@ -2104,6 +2125,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Nuvei, connectors::Paybox, connectors::Payeezy, + connectors::Payme, connectors::Payu, connectors::Placetopay, connectors::Powertranz, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 07a9ea1da65..7ab090dae08 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -10,7 +10,6 @@ pub mod netcetera; pub mod nmi; pub mod opayo; pub mod opennode; -pub mod payme; pub mod payone; pub mod paypal; pub mod plaid; @@ -40,11 +39,11 @@ pub use hyperswitch_connectors::connectors::{ klarna::Klarna, mifinity, mifinity::Mifinity, mollie, mollie::Mollie, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, - paybox, paybox::Paybox, payeezy, payeezy::Payeezy, payu, payu::Payu, placetopay, - placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, - rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, - shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, - thunes::Thunes, tsys, tsys::Tsys, unified_authentication_service, + paybox, paybox::Paybox, payeezy, payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, + placetopay, placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, + prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, + redsys::Redsys, shift4, shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, + taxjar::Taxjar, thunes, thunes::Thunes, tsys, tsys::Tsys, unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, @@ -55,7 +54,7 @@ pub use self::dummyconnector::DummyConnector; pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, authorizedotnet::Authorizedotnet, checkout::Checkout, ebanx::Ebanx, gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, - opayo::Opayo, opennode::Opennode, payme::Payme, payone::Payone, paypal::Paypal, plaid::Plaid, + opayo::Opayo, opennode::Opennode, payone::Payone, paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, threedsecureio::Threedsecureio, trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index 2b3c6515a36..54727005c60 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -708,7 +708,6 @@ default_imp_for_new_connector_integration_payment!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -748,7 +747,6 @@ default_imp_for_new_connector_integration_refund!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -782,7 +780,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -838,7 +835,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -876,7 +872,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -898,7 +893,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -947,7 +941,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1076,7 +1069,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1117,7 +1109,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1158,7 +1149,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1199,7 +1189,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1240,7 +1229,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1281,7 +1269,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1322,7 +1309,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1363,7 +1349,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1402,7 +1387,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1531,7 +1515,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1572,7 +1555,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1613,7 +1595,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1654,7 +1635,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1695,7 +1675,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1733,7 +1712,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Riskified, @@ -1919,7 +1897,6 @@ default_imp_for_new_connector_integration_uas!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index a3c32baba73..169d8b4d196 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -268,7 +268,6 @@ default_imp_for_webhook_source_verification!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Plaid, connector::Riskified, @@ -318,7 +317,6 @@ default_imp_for_create_customer!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -515,7 +513,6 @@ default_imp_for_accept_dispute!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -585,7 +582,6 @@ default_imp_for_file_upload!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -633,7 +629,6 @@ default_imp_for_submit_evidence!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -681,7 +676,6 @@ default_imp_for_defend_dispute!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -771,7 +765,6 @@ default_imp_for_post_processing_steps!( connector::Adyenplatform, connector::Adyen, connector::Nmi, - connector::Payme, connector::Paypal, connector::Stripe, connector::Trustpay, @@ -809,7 +802,6 @@ default_imp_for_payouts!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -855,7 +847,6 @@ default_imp_for_payouts_create!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Plaid, connector::Riskified, @@ -904,7 +895,6 @@ default_imp_for_payouts_retrieve!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Plaid, connector::Riskified, @@ -956,7 +946,6 @@ default_imp_for_payouts_eligibility!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1004,7 +993,6 @@ default_imp_for_payouts_fulfill!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -1050,7 +1038,6 @@ default_imp_for_payouts_cancel!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1099,7 +1086,6 @@ default_imp_for_payouts_quote!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1149,7 +1135,6 @@ default_imp_for_payouts_recipient!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1202,7 +1187,6 @@ default_imp_for_payouts_recipient_account!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1252,7 +1236,6 @@ default_imp_for_approve!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1303,7 +1286,6 @@ default_imp_for_reject!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1456,7 +1438,6 @@ default_imp_for_frm_sale!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1507,7 +1488,6 @@ default_imp_for_frm_checkout!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1558,7 +1538,6 @@ default_imp_for_frm_transaction!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1609,7 +1588,6 @@ default_imp_for_frm_fulfillment!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1660,7 +1638,6 @@ default_imp_for_frm_record_return!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1709,7 +1686,6 @@ default_imp_for_incremental_authorization!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1758,7 +1734,6 @@ default_imp_for_revoking_mandates!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -1979,7 +1954,6 @@ default_imp_for_authorize_session_token!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -2028,7 +2002,6 @@ default_imp_for_calculate_tax!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -2077,7 +2050,6 @@ default_imp_for_session_update!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Plaid, connector::Riskified, @@ -2125,7 +2097,6 @@ default_imp_for_post_session_tokens!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Plaid, connector::Riskified, @@ -2176,7 +2147,6 @@ default_imp_for_uas_pre_authentication!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -2225,7 +2195,6 @@ default_imp_for_uas_post_authentication!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -2274,7 +2243,6 @@ default_imp_for_uas_authentication!( connector::Nmi, connector::Opayo, connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, From 579e372ff5dc8ea12590edacd09edae66d40dbeb Mon Sep 17 00:00:00 2001 From: "hyperswitch-bot[bot]" <148525504+hyperswitch-bot[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 08:57:59 +0000 Subject: [PATCH 03/10] chore: run formatter --- .../hyperswitch_connectors/src/connectors.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 604bf753659..f51d504b6de 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -76,15 +76,15 @@ pub use self::{ chargebee::Chargebee, coinbase::Coinbase, coingate::Coingate, cryptopay::Cryptopay, ctp_mastercard::CtpMastercard, cybersource::Cybersource, datatrans::Datatrans, deutschebank::Deutschebank, digitalvirgo::Digitalvirgo, dlocal::Dlocal, elavon::Elavon, - fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, getnet::Getnet, globalpay::Globalpay, - globepay::Globepay, gocardless::Gocardless, helcim::Helcim, iatapay::Iatapay, inespay::Inespay, - itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, mifinity::Mifinity, mollie::Mollie, - multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, - noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, - payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, - rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, - taxjar::Taxjar, thunes::Thunes, tsys::Tsys, - unified_authentication_service::UnifiedAuthenticationService, volt::Volt, + fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, getnet::Getnet, + globalpay::Globalpay, globepay::Globepay, gocardless::Gocardless, helcim::Helcim, + iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, + mifinity::Mifinity, mollie::Mollie, multisafepay::Multisafepay, nexinets::Nexinets, + nexixpay::Nexixpay, nomupay::Nomupay, noon::Noon, novalnet::Novalnet, nuvei::Nuvei, + paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, placetopay::Placetopay, + powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, + redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, + tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, zsl::Zsl, }; From 9fd6dcb990983b9ade752d7e35eadddddfa1d5c5 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Wed, 12 Feb 2025 16:19:34 +0530 Subject: [PATCH 04/10] refactor(connector): [AUTHORIZEDOTNET] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 7 +- .../src/connectors}/authorizedotnet.rs | 548 +++++++++--------- .../authorizedotnet/transformers.rs | 428 +++++++------- .../src/default_implementations.rs | 33 ++ .../src/default_implementations_v2.rs | 22 + crates/router/src/connector.rs | 27 +- .../connector_integration_v2_impls.rs | 23 - crates/router/src/core/payments/flows.rs | 33 -- 8 files changed, 537 insertions(+), 584 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/authorizedotnet.rs (64%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/authorizedotnet/transformers.rs (83%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index f51d504b6de..8814957dd62 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -1,6 +1,7 @@ pub mod aci; pub mod airwallex; pub mod amazonpay; +pub mod authorizedotnet; pub mod bambora; pub mod bamboraapac; pub mod bankofamerica; @@ -70,9 +71,9 @@ pub mod zen; pub mod zsl; pub use self::{ - aci::Aci, airwallex::Airwallex, amazonpay::Amazonpay, bambora::Bambora, - bamboraapac::Bamboraapac, bankofamerica::Bankofamerica, billwerk::Billwerk, bitpay::Bitpay, - bluesnap::Bluesnap, boku::Boku, braintree::Braintree, cashtocode::Cashtocode, + aci::Aci, airwallex::Airwallex, amazonpay::Amazonpay, authorizedotnet::Authorizedotnet, + bambora::Bambora, bamboraapac::Bamboraapac, bankofamerica::Bankofamerica, billwerk::Billwerk, + bitpay::Bitpay, bluesnap::Bluesnap, boku::Boku, braintree::Braintree, cashtocode::Cashtocode, chargebee::Chargebee, coinbase::Coinbase, coingate::Coingate, cryptopay::Cryptopay, ctp_mastercard::CtpMastercard, cybersource::Cybersource, datatrans::Datatrans, deutschebank::Deutschebank, digitalvirgo::Digitalvirgo, dlocal::Dlocal, elavon::Elavon, diff --git a/crates/router/src/connector/authorizedotnet.rs b/crates/hyperswitch_connectors/src/connectors/authorizedotnet.rs similarity index 64% rename from crates/router/src/connector/authorizedotnet.rs rename to crates/hyperswitch_connectors/src/connectors/authorizedotnet.rs index afc8f063e4e..29af20a9570 100644 --- a/crates/router/src/connector/authorizedotnet.rs +++ b/crates/hyperswitch_connectors/src/connectors/authorizedotnet.rs @@ -1,31 +1,60 @@ pub mod transformers; use std::fmt::Debug; -use common_utils::{crypto, ext_traits::ByteSliceExt, request::RequestContent}; -use diesel_models::enums; +use common_enums::{enums, PaymentAction}; +use common_utils::{ + crypto, + errors::CustomResult, + ext_traits::ByteSliceExt, + request::{Method, Request, RequestBuilder, RequestContent}, +}; use error_stack::ResultExt; -use transformers as authorizedotnet; - -use crate::{ - configs::settings, - connector::{ - utils as connector_utils, - utils::{PaymentsAuthorizeRequestData, PaymentsCompleteAuthorizeRequestData}, +use hyperswitch_domain_models::{ + payment_method_data::PaymentMethodData, + router_data::{AccessToken, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, + CompleteAuthorize, + }, + router_request_types::{ + AccessTokenRequestData, CompleteAuthorizeData, PaymentMethodTokenizationData, + PaymentsAuthorizeData, PaymentsCancelData, PaymentsCaptureData, PaymentsSessionData, + PaymentsSyncData, RefundsData, SetupMandateRequestData, }, - consts, - core::{ - errors::{self, CustomResult}, - payments, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsCompleteAuthorizeRouterData, PaymentsSyncRouterData, RefundsRouterData, + SetupMandateRouterData, + }, +}; +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorSpecifications, + ConnectorValidation, MandateSetup, }, + configs::Connectors, + consts, errors, events::connector_api_logs::ConnectorEvent, - headers, - services::{self, request, ConnectorIntegration, ConnectorSpecifications, ConnectorValidation}, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt, PaymentsCompleteAuthorize}, - transformers::ForeignTryFrom, + PaymentsAuthorizeType, PaymentsCaptureType, PaymentsCompleteAuthorizeType, + PaymentsSyncType, PaymentsVoidType, RefundExecuteType, RefundSyncType, Response, + SetupMandateType, + }, + webhooks, +}; +use masking::Maskable; +use transformers as authorizedotnet; + +use crate::{ + constants::headers, + types::ResponseRouterData, + utils::{ + self as connector_utils, ForeignTryFrom, PaymentMethodDataType, + PaymentsAuthorizeRequestData, PaymentsCompleteAuthorizeRequestData, }, - utils::BytesExt, }; #[derive(Debug, Clone)] @@ -37,9 +66,9 @@ where { fn build_headers( &self, - _req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { Ok(vec![( headers::CONTENT_TYPE.to_string(), self.get_content_type().to_string().into(), @@ -60,7 +89,7 @@ impl ConnectorCommon for Authorizedotnet { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.authorizedotnet.base_url.as_ref() } } @@ -85,11 +114,10 @@ impl ConnectorValidation for Authorizedotnet { fn validate_mandate_payment( &self, - pm_type: Option, - pm_data: types::domain::payments::PaymentMethodData, + pm_type: Option, + pm_data: PaymentMethodData, ) -> CustomResult<(), errors::ConnectorError> { - let mandate_supported_pmd = - std::collections::HashSet::from([crate::connector::utils::PaymentMethodDataType::Card]); + let mandate_supported_pmd = std::collections::HashSet::from([PaymentMethodDataType::Card]); connector_utils::is_mandate_supported(pm_data, pm_type, mandate_supported_pmd, self.id()) } } @@ -103,42 +131,32 @@ impl api::PaymentSession for Authorizedotnet {} impl api::ConnectorAccessToken for Authorizedotnet {} impl api::PaymentToken for Authorizedotnet {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Authorizedotnet +impl ConnectorIntegration + for Authorizedotnet { // Not Implemented (R) } -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { // Not Implemented (R) } -impl ConnectorIntegration +impl ConnectorIntegration for Authorizedotnet { // Not Implemented (R) } -impl api::MandateSetup for Authorizedotnet {} +impl MandateSetup for Authorizedotnet {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Authorizedotnet +impl ConnectorIntegration + for Authorizedotnet { fn get_headers( &self, - req: &types::SetupMandateRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &SetupMandateRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { // This connector does not require an auth header, the authentication details are sent in the request body self.build_headers(req, connectors) } @@ -147,15 +165,15 @@ impl } fn get_url( &self, - _req: &types::SetupMandateRouterData, - connectors: &settings::Connectors, + _req: &SetupMandateRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::SetupMandateRouterData, - _connectors: &settings::Connectors, + req: &SetupMandateRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = authorizedotnet::CreateCustomerProfileRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -163,28 +181,26 @@ impl fn build_request( &self, - req: &types::SetupMandateRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &SetupMandateRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::SetupMandateType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&SetupMandateType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::SetupMandateType::get_headers(self, req, connectors)?) - .set_body(types::SetupMandateType::get_request_body( - self, req, connectors, - )?) + .headers(SetupMandateType::get_headers(self, req, connectors)?) + .set_body(SetupMandateType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::SetupMandateRouterData, + data: &SetupMandateRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -199,7 +215,7 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -208,21 +224,19 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -232,15 +246,15 @@ impl ConnectorIntegration CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::PaymentsCaptureRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCaptureRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = authorizedotnet::AuthorizedotnetRouterData::try_from(( &self.get_currency_unit(), @@ -256,18 +270,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCaptureType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsCaptureType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsCaptureType::get_request_body( + .headers(PaymentsCaptureType::get_headers(self, req, connectors)?) + .set_body(PaymentsCaptureType::get_request_body( self, req, connectors, )?) .build(), @@ -276,10 +288,10 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -295,8 +307,8 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { // This connector does not require an auth header, the authentication details are sent in the request body self.build_headers(req, connectors) } @@ -332,16 +342,16 @@ impl ConnectorIntegration CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::PaymentsSyncRouterData, - _connectors: &settings::Connectors, + req: &PaymentsSyncRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = authorizedotnet::AuthorizedotnetCreateSyncRequest::try_from(req)?; @@ -350,27 +360,25 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsSyncType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) + .set_body(PaymentsSyncType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::PaymentsSyncRouterData, + data: &PaymentsSyncRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -384,7 +392,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl ConnectorIntegration +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { // This connector does not require an auth header, the authentication details are sent in the request body self.build_headers(req, connectors) } @@ -418,16 +426,16 @@ impl ConnectorIntegration CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::PaymentsAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = authorizedotnet::AuthorizedotnetRouterData::try_from(( &self.get_currency_unit(), @@ -442,24 +450,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -468,10 +468,10 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -487,8 +487,8 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -523,16 +521,16 @@ impl ConnectorIntegration CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::PaymentsCancelRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCancelRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = authorizedotnet::CancelOrCaptureTransactionRequest::try_from(req)?; @@ -540,28 +538,26 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsVoidType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsVoidType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsVoidType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsVoidType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsVoidType::get_headers(self, req, connectors)?) + .set_body(PaymentsVoidType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsCancelRouterData, + data: &PaymentsCancelRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -575,7 +571,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } @@ -595,14 +591,12 @@ impl api::Refund for Authorizedotnet {} impl api::RefundExecute for Authorizedotnet {} impl api::RefundSync for Authorizedotnet {} -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { // This connector does not require an auth header, the authentication details are sent in the request body self.build_headers(req, connectors) } @@ -613,16 +607,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + _req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::RefundsRouterData, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = authorizedotnet::AuthorizedotnetRouterData::try_from(( &self.get_currency_unit(), @@ -637,29 +631,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult, errors::ConnectorError> { + res: Response, + ) -> CustomResult, errors::ConnectorError> { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -673,7 +663,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl ConnectorIntegration - for Authorizedotnet -{ +impl ConnectorIntegration for Authorizedotnet { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { // This connector does not require an auth header, the authentication details are sent in the request body self.build_headers(req, connectors) } @@ -707,16 +695,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + _req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::RefundsRouterData, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = authorizedotnet::AuthorizedotnetRouterData::try_from(( &self.get_currency_unit(), @@ -732,27 +720,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) - .set_body(types::RefundSyncType::get_request_body( - self, req, connectors, - )?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) + .set_body(RefundSyncType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult, errors::ConnectorError> { + res: Response, + ) -> CustomResult, errors::ConnectorError> { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -766,7 +752,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } -impl PaymentsCompleteAuthorize for Authorizedotnet {} +impl api::PaymentsCompleteAuthorize for Authorizedotnet {} -impl - ConnectorIntegration< - api::CompleteAuthorize, - types::CompleteAuthorizeData, - types::PaymentsResponseData, - > for Authorizedotnet +impl ConnectorIntegration + for Authorizedotnet { fn get_headers( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -805,15 +787,15 @@ impl fn get_url( &self, - _req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, + _req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(self.base_url(connectors).to_string()) } fn get_request_body( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCompleteAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = authorizedotnet::AuthorizedotnetRouterData::try_from(( &self.get_currency_unit(), @@ -829,20 +811,20 @@ impl fn build_request( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCompleteAuthorizeType::get_url( + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCompleteAuthorizeType::get_url( self, req, connectors, )?) .attach_default_headers() - .headers(types::PaymentsCompleteAuthorizeType::get_headers( + .headers(PaymentsCompleteAuthorizeType::get_headers( self, req, connectors, )?) - .set_body(types::PaymentsCompleteAuthorizeType::get_request_body( + .set_body(PaymentsCompleteAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -851,10 +833,10 @@ impl fn handle_response( &self, - data: &types::PaymentsCompleteAuthorizeRouterData, + data: &PaymentsCompleteAuthorizeRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { use bytes::Buf; // Handle the case where response bytes contains U+FEFF (BOM) character sent by connector @@ -868,8 +850,8 @@ impl .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::foreign_try_from(( - types::ResponseRouterData { + RouterData::foreign_try_from(( + ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -880,25 +862,25 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { get_error_response(res, event_builder) } } #[async_trait::async_trait] -impl api::IncomingWebhook for Authorizedotnet { +impl webhooks::IncomingWebhook for Authorizedotnet { fn get_webhook_source_verification_algorithm( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::HmacSha512)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let security_header = request @@ -920,7 +902,7 @@ impl api::IncomingWebhook for Authorizedotnet { fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -929,7 +911,7 @@ impl api::IncomingWebhook for Authorizedotnet { fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult { let details: authorizedotnet::AuthorizedotnetWebhookObjectId = request .body @@ -959,18 +941,20 @@ impl api::IncomingWebhook for Authorizedotnet { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let details: authorizedotnet::AuthorizedotnetWebhookEventType = request .body .parse_struct("AuthorizedotnetWebhookEventType") .change_context(errors::ConnectorError::WebhookEventTypeNotFound)?; - Ok(api::IncomingWebhookEvent::from(details.event_type)) + Ok(api_models::webhooks::IncomingWebhookEvent::from( + details.event_type, + )) } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let payload: authorizedotnet::AuthorizedotnetWebhookObjectId = request .body @@ -985,13 +969,13 @@ impl api::IncomingWebhook for Authorizedotnet { #[inline] fn get_error_response( - types::Response { + Response { response, status_code, .. - }: types::Response, + }: Response, event_builder: Option<&mut ConnectorEvent>, -) -> CustomResult { +) -> CustomResult { let response: authorizedotnet::AuthorizedotnetPaymentsResponse = response .parse_struct("AuthorizedotnetPaymentsResponse") .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; @@ -1005,7 +989,7 @@ fn get_error_response( )) => Ok(payment_response .errors .and_then(|errors| { - errors.into_iter().next().map(|error| types::ErrorResponse { + errors.into_iter().next().map(|error| ErrorResponse { code: error.error_code, message: error.error_text.to_owned(), reason: Some(error.error_text), @@ -1014,7 +998,7 @@ fn get_error_response( connector_transaction_id: None, }) }) - .unwrap_or_else(|| types::ErrorResponse { + .unwrap_or_else(|| ErrorResponse { code: consts::NO_ERROR_CODE.to_string(), // authorizedotnet sends 200 in case of bad request so this are hard coded to NO_ERROR_CODE and NO_ERROR_MESSAGE message: consts::NO_ERROR_MESSAGE.to_string(), reason: None, @@ -1030,7 +1014,7 @@ fn get_error_response( .first() .ok_or(errors::ConnectorError::ResponseDeserializationFailed)? .text; - Ok(types::ErrorResponse { + Ok(ErrorResponse { code: consts::NO_ERROR_CODE.to_string(), message: message.to_string(), reason: Some(message.to_string()), @@ -1042,18 +1026,18 @@ fn get_error_response( } } -impl services::ConnectorRedirectResponse for Authorizedotnet { +impl api::ConnectorRedirectResponse for Authorizedotnet { fn get_flow_type( &self, _query_params: &str, _json_payload: Option, - action: services::PaymentAction, - ) -> CustomResult { + action: PaymentAction, + ) -> CustomResult { match action { - services::PaymentAction::PSync - | services::PaymentAction::CompleteAuthorize - | services::PaymentAction::PaymentAuthenticateCompleteAuthorize => { - Ok(payments::CallConnectorAction::Trigger) + PaymentAction::PSync + | PaymentAction::CompleteAuthorize + | PaymentAction::PaymentAuthenticateCompleteAuthorize => { + Ok(enums::CallConnectorAction::Trigger) } } } diff --git a/crates/router/src/connector/authorizedotnet/transformers.rs b/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs similarity index 83% rename from crates/router/src/connector/authorizedotnet/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs index d48ead5d52e..626d6d76599 100644 --- a/crates/router/src/connector/authorizedotnet/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/authorizedotnet/transformers.rs @@ -1,29 +1,39 @@ use std::collections::BTreeMap; +use api_models::webhooks::IncomingWebhookEvent; +use common_enums::enums; use common_utils::{ errors::CustomResult, - ext_traits::{Encode, ValueExt}, + ext_traits::{Encode, OptionExt, ValueExt}, + request::Method, }; use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data::{Card, PaymentMethodData, WalletData}, + router_data::{ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::RSync, + router_request_types::ResponseId, + router_response_types::{ + MandateReference, PaymentsResponseData, RedirectForm, RefundsResponseData, + }, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsCompleteAuthorizeRouterData, PaymentsSyncRouterData, RefundsRouterData, + SetupMandateRouterData, + }, +}; +use hyperswitch_interfaces::{api, errors}; use masking::{ExposeInterface, PeekInterface, Secret, StrongSecret}; use rand::distributions::{Alphanumeric, DistString}; use serde::{Deserialize, Serialize}; use serde_json::Value; use crate::{ - connector::utils::{ - self, CardData, PaymentsSyncRequestData, RefundsRequestData, RouterData, WalletData, + types::{RefundsResponseRouterData, ResponseRouterData}, + utils::{ + self, CardData, ForeignTryFrom, PaymentsSyncRequestData, RefundsRequestData, + RouterData as OtherRouterData, WalletData as OtherWalletData, }, - core::errors, - services, - types::{ - self, - api::{self, enums as api_enums}, - domain, - storage::enums, - transformers::{ForeignFrom, ForeignTryFrom}, - }, - utils::OptionExt, }; #[derive(Debug, Serialize)] @@ -70,11 +80,11 @@ pub struct AuthorizedotnetAuthType { transaction_key: Secret, } -impl TryFrom<&types::ConnectorAuthType> for AuthorizedotnetAuthType { +impl TryFrom<&ConnectorAuthType> for AuthorizedotnetAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { - if let types::ConnectorAuthType::BodyKey { api_key, key1 } = auth_type { + fn try_from(auth_type: &ConnectorAuthType) -> Result { + if let ConnectorAuthType::BodyKey { api_key, key1 } = auth_type { Ok(Self { name: api_key.to_owned(), transaction_key: key1.to_owned(), @@ -214,7 +224,7 @@ pub struct BillTo { city: Option, state: Option>, zip: Option>, - country: Option, + country: Option, } #[derive(Debug, Serialize)] @@ -336,11 +346,11 @@ impl ForeignTryFrom for Vec { } } -impl TryFrom<&types::SetupMandateRouterData> for CreateCustomerProfileRequest { +impl TryFrom<&SetupMandateRouterData> for CreateCustomerProfileRequest { type Error = error_stack::Report; - fn try_from(item: &types::SetupMandateRouterData) -> Result { + fn try_from(item: &SetupMandateRouterData) -> Result { match item.request.payment_method_data.clone() { - domain::PaymentMethodData::Card(ccard) => { + PaymentMethodData::Card(ccard) => { let merchant_authentication = AuthorizedotnetAuthType::try_from(&item.connector_auth_type)?; let validation_mode = match item.test_mode { @@ -366,24 +376,24 @@ impl TryFrom<&types::SetupMandateRouterData> for CreateCustomerProfileRequest { }, }) } - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::Wallet(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::Wallet(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("authorizedotnet"), ))? @@ -403,32 +413,21 @@ pub struct AuthorizedotnetSetupMandateResponse { // zero dollar response impl - TryFrom< - types::ResponseRouterData< - F, - AuthorizedotnetSetupMandateResponse, - T, - types::PaymentsResponseData, - >, - > for types::RouterData + TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< - F, - AuthorizedotnetSetupMandateResponse, - T, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { match item.response.messages.result_code { ResultCode::Ok => Ok(Self { status: enums::AttemptStatus::Charged, - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::NoResponseId, + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::NoResponseId, redirection_data: Box::new(None), mandate_reference: Box::new(item.response.customer_profile_id.map( - |customer_profile_id| types::MandateReference { + |customer_profile_id| MandateReference { connector_mandate_id: item.response.customer_payment_profile_id_list.first().map( |payment_profile_id| { @@ -451,7 +450,7 @@ impl ResultCode::Error => { let error_code = match item.response.messages.message.first() { Some(first_error_message) => first_error_message.code.clone(), - None => crate::consts::NO_ERROR_CODE.to_string(), + None => hyperswitch_interfaces::consts::NO_ERROR_CODE.to_string(), }; let error_reason = item .response @@ -461,7 +460,7 @@ impl .map(|error: &ResponseMessage| error.text.clone()) .collect::>() .join(" "); - let response = Err(types::ErrorResponse { + let response = Err(ErrorResponse { code: error_code, message: item.response.messages.result_code.to_string(), reason: Some(error_reason), @@ -515,12 +514,12 @@ impl TryFrom for AuthorizationType { } } -impl TryFrom<&AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>> +impl TryFrom<&AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>> for CreateTransactionRequest { type Error = error_stack::Report; fn try_from( - item: &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, + item: &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let merchant_authentication = AuthorizedotnetAuthType::try_from(&item.router_data.connector_auth_type)?; @@ -551,29 +550,27 @@ impl TryFrom<&AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>> } None => { match &item.router_data.request.payment_method_data { - domain::PaymentMethodData::Card(ccard) => { - TransactionRequest::try_from((item, ccard)) - } - domain::PaymentMethodData::Wallet(wallet_data) => { + PaymentMethodData::Card(ccard) => TransactionRequest::try_from((item, ccard)), + PaymentMethodData::Wallet(wallet_data) => { TransactionRequest::try_from((item, wallet_data)) } - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message( "authorizedotnet", @@ -595,14 +592,14 @@ impl TryFrom<&AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>> impl TryFrom<( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, String, )> for TransactionRequest { type Error = error_stack::Report; fn try_from( (item, network_trans_id): ( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, String, ), ) -> Result { @@ -611,31 +608,31 @@ impl amount: item.amount, currency_code: item.router_data.request.currency, payment: Some(match item.router_data.request.payment_method_data { - domain::PaymentMethodData::Card(ref ccard) => { + PaymentMethodData::Card(ref ccard) => { PaymentDetails::CreditCard(CreditCardDetails { card_number: (*ccard.card_number).clone(), expiration_date: ccard.get_expiry_date_as_yyyymm("-"), card_code: None, }) } - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::Wallet(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::Wallet(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("authorizedotnet"), ))? @@ -684,14 +681,14 @@ impl impl TryFrom<( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, api_models::payments::ConnectorMandateReferenceId, )> for TransactionRequest { type Error = error_stack::Report; fn try_from( (item, connector_mandate_id): ( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, api_models::payments::ConnectorMandateReferenceId, ), ) -> Result { @@ -740,15 +737,15 @@ impl impl TryFrom<( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, - &domain::Card, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, + &Card, )> for TransactionRequest { type Error = error_stack::Report; fn try_from( (item, ccard): ( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, - &domain::Card, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, + &Card, ), ) -> Result { let (profile, customer) = @@ -833,15 +830,15 @@ impl impl TryFrom<( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, - &domain::WalletData, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, + &WalletData, )> for TransactionRequest { type Error = error_stack::Report; fn try_from( (item, wallet_data): ( - &AuthorizedotnetRouterData<&types::PaymentsAuthorizeRouterData>, - &domain::WalletData, + &AuthorizedotnetRouterData<&PaymentsAuthorizeRouterData>, + &WalletData, ), ) -> Result { Ok(Self { @@ -888,9 +885,9 @@ impl } } -impl TryFrom<&types::PaymentsCancelRouterData> for CancelOrCaptureTransactionRequest { +impl TryFrom<&PaymentsCancelRouterData> for CancelOrCaptureTransactionRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsCancelRouterData) -> Result { + fn try_from(item: &PaymentsCancelRouterData) -> Result { let transaction_request = TransactionVoidOrCaptureRequest { amount: None, //amount is not required for void transaction_type: TransactionType::Void, @@ -908,12 +905,12 @@ impl TryFrom<&types::PaymentsCancelRouterData> for CancelOrCaptureTransactionReq } } -impl TryFrom<&AuthorizedotnetRouterData<&types::PaymentsCaptureRouterData>> +impl TryFrom<&AuthorizedotnetRouterData<&PaymentsCaptureRouterData>> for CancelOrCaptureTransactionRequest { type Error = error_stack::Report; fn try_from( - item: &AuthorizedotnetRouterData<&types::PaymentsCaptureRouterData>, + item: &AuthorizedotnetRouterData<&PaymentsCaptureRouterData>, ) -> Result { let transaction_request = TransactionVoidOrCaptureRequest { amount: Some(item.amount), @@ -964,22 +961,22 @@ pub enum AuthorizedotnetRefundStatus { HeldForReview, } -impl ForeignFrom<(AuthorizedotnetPaymentStatus, bool)> for enums::AttemptStatus { - fn foreign_from((item, auto_capture): (AuthorizedotnetPaymentStatus, bool)) -> Self { - match item { - AuthorizedotnetPaymentStatus::Approved => { - if auto_capture { - Self::Charged - } else { - Self::Authorized - } - } - AuthorizedotnetPaymentStatus::Declined | AuthorizedotnetPaymentStatus::Error => { - Self::Failure +fn get_payment_status( + (item, auto_capture): (AuthorizedotnetPaymentStatus, bool), +) -> enums::AttemptStatus { + match item { + AuthorizedotnetPaymentStatus::Approved => { + if auto_capture { + enums::AttemptStatus::Charged + } else { + enums::AttemptStatus::Authorized } - AuthorizedotnetPaymentStatus::RequiresAction => Self::AuthenticationPending, - AuthorizedotnetPaymentStatus::HeldForReview => Self::Pending, } + AuthorizedotnetPaymentStatus::Declined | AuthorizedotnetPaymentStatus::Error => { + enums::AttemptStatus::Failure + } + AuthorizedotnetPaymentStatus::RequiresAction => enums::AttemptStatus::AuthenticationPending, + AuthorizedotnetPaymentStatus::HeldForReview => enums::AttemptStatus::Pending, } } @@ -1113,35 +1110,25 @@ impl From for enums::AttemptStatus { impl ForeignTryFrom<( - types::ResponseRouterData< - F, - AuthorizedotnetPaymentsResponse, - T, - types::PaymentsResponseData, - >, + ResponseRouterData, bool, - )> for types::RouterData + )> for RouterData { type Error = error_stack::Report; fn foreign_try_from( (item, is_auto_capture): ( - types::ResponseRouterData< - F, - AuthorizedotnetPaymentsResponse, - T, - types::PaymentsResponseData, - >, + ResponseRouterData, bool, ), ) -> Result { match &item.response.transaction_response { Some(TransactionResponse::AuthorizedotnetTransactionResponse(transaction_response)) => { - let status = enums::AttemptStatus::foreign_from(( + let status = get_payment_status(( transaction_response.response_code.clone(), is_auto_capture, )); let error = transaction_response.errors.as_ref().and_then(|errors| { - errors.iter().next().map(|error| types::ErrorResponse { + errors.iter().next().map(|error| ErrorResponse { code: error.error_code.clone(), message: error.error_text.clone(), reason: Some(error.error_text.clone()), @@ -1164,15 +1151,14 @@ impl .secure_acceptance .as_ref() .and_then(|x| x.secure_acceptance_url.to_owned()); - let redirection_data = - url.map(|url| services::RedirectForm::from((url, services::Method::Get))); + let redirection_data = url.map(|url| RedirectForm::from((url, Method::Get))); let mandate_reference = item.response.profile_response.map(|profile_response| { let payment_profile_id = profile_response .customer_payment_profile_id_list .and_then(|customer_payment_profile_id_list| { customer_payment_profile_id_list.first().cloned() }); - types::MandateReference { + MandateReference { connector_mandate_id: profile_response.customer_profile_id.and_then( |customer_profile_id| { payment_profile_id.map(|payment_profile_id| { @@ -1190,8 +1176,8 @@ impl status, response: match error { Some(err) => Err(err), - None => Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + None => Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( transaction_response.transaction_id.clone(), ), redirection_data: Box::new(redirection_data), @@ -1222,25 +1208,18 @@ impl } } -impl - TryFrom< - types::ResponseRouterData, - > for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< - F, - AuthorizedotnetVoidResponse, - T, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { match &item.response.transaction_response { Some(transaction_response) => { let status = enums::AttemptStatus::from(transaction_response.response_code.clone()); let error = transaction_response.errors.as_ref().and_then(|errors| { - errors.iter().next().map(|error| types::ErrorResponse { + errors.iter().next().map(|error| ErrorResponse { code: error.error_code.clone(), message: error.error_text.clone(), reason: Some(error.error_text.clone()), @@ -1263,8 +1242,8 @@ impl status, response: match error { Some(err) => Err(err), - None => Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + None => Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( transaction_response.transaction_id.clone(), ), redirection_data: Box::new(None), @@ -1318,10 +1297,10 @@ pub struct CreateRefundRequest { create_transaction_request: AuthorizedotnetRefundRequest, } -impl TryFrom<&AuthorizedotnetRouterData<&types::RefundsRouterData>> for CreateRefundRequest { +impl TryFrom<&AuthorizedotnetRouterData<&RefundsRouterData>> for CreateRefundRequest { type Error = error_stack::Report; fn try_from( - item: &AuthorizedotnetRouterData<&types::RefundsRouterData>, + item: &AuthorizedotnetRouterData<&RefundsRouterData>, ) -> Result { let payment_details = item .router_data @@ -1378,17 +1357,17 @@ pub struct AuthorizedotnetRefundResponse { pub messages: ResponseMessages, } -impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let transaction_response = &item.response.transaction_response; let refund_status = enums::RefundStatus::from(transaction_response.response_code.clone()); let error = transaction_response.errors.clone().and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { + errors.first().map(|error| ErrorResponse { code: error.error_code.clone(), message: error.error_text.clone(), reason: Some(error.error_text.clone()), @@ -1401,7 +1380,7 @@ impl TryFrom Err(err), - None => Ok(types::RefundsResponseData { + None => Ok(RefundsResponseData { connector_refund_id: transaction_response.transaction_id.clone(), refund_status, }), @@ -1424,13 +1403,13 @@ pub struct AuthorizedotnetCreateSyncRequest { get_transaction_details_request: TransactionDetails, } -impl TryFrom<&AuthorizedotnetRouterData<&types::RefundsRouterData>> +impl TryFrom<&AuthorizedotnetRouterData<&RefundsRouterData>> for AuthorizedotnetCreateSyncRequest { type Error = error_stack::Report; fn try_from( - item: &AuthorizedotnetRouterData<&types::RefundsRouterData>, + item: &AuthorizedotnetRouterData<&RefundsRouterData>, ) -> Result { let transaction_id = item.router_data.request.get_connector_refund_id()?; let merchant_authentication = @@ -1446,10 +1425,10 @@ impl TryFrom<&AuthorizedotnetRouterData<&types::RefundsRouterData>> } } -impl TryFrom<&types::PaymentsSyncRouterData> for AuthorizedotnetCreateSyncRequest { +impl TryFrom<&PaymentsSyncRouterData> for AuthorizedotnetCreateSyncRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsSyncRouterData) -> Result { + fn try_from(item: &PaymentsSyncRouterData) -> Result { let transaction_id = Some( item.request .get_connector_transaction_id() @@ -1548,19 +1527,19 @@ impl From for enums::RefundStatus { } } -impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { match item.response.transaction { Some(transaction) => { let refund_status = enums::RefundStatus::from(transaction.transaction_status); Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: transaction.transaction_id, refund_status, }), @@ -1575,27 +1554,20 @@ impl TryFrom - TryFrom< - types::ResponseRouterData, - > for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< - F, - AuthorizedotnetSyncResponse, - Req, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { match item.response.transaction { Some(transaction) => { let payment_status = enums::AttemptStatus::from(transaction.transaction_status); Ok(Self { - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( transaction.transaction_id.clone(), ), redirection_data: Box::new(None), @@ -1667,12 +1639,12 @@ impl TryFrom> for TransactionType { fn get_err_response( status_code: u16, message: ResponseMessages, -) -> Result { +) -> Result { let response_message = message .message .first() .ok_or(errors::ConnectorError::ResponseDeserializationFailed)?; - Ok(types::ErrorResponse { + Ok(ErrorResponse { code: response_message.code.clone(), message: response_message.text.clone(), reason: Some(response_message.text.clone()), @@ -1735,7 +1707,7 @@ pub enum AuthorizedotnetIncomingWebhookEventType { Unknown, } -impl From for api::IncomingWebhookEvent { +impl From for IncomingWebhookEvent { fn from(event_type: AuthorizedotnetIncomingWebhookEventType) -> Self { match event_type { AuthorizedotnetIncomingWebhookEventType::AuthorizationCreated @@ -1789,50 +1761,48 @@ impl TryFrom for AuthorizedotnetSyncResponse { } fn get_wallet_data( - wallet_data: &domain::WalletData, + wallet_data: &WalletData, return_url: &Option, ) -> CustomResult { match wallet_data { - domain::WalletData::GooglePay(_) => Ok(PaymentDetails::OpaqueData(WalletDetails { + WalletData::GooglePay(_) => Ok(PaymentDetails::OpaqueData(WalletDetails { data_descriptor: WalletMethod::Googlepay, data_value: Secret::new(wallet_data.get_encoded_wallet_token()?), })), - domain::WalletData::ApplePay(applepay_token) => { - Ok(PaymentDetails::OpaqueData(WalletDetails { - data_descriptor: WalletMethod::Applepay, - data_value: Secret::new(applepay_token.payment_data.clone()), - })) - } - domain::WalletData::PaypalRedirect(_) => Ok(PaymentDetails::PayPal(PayPalDetails { + WalletData::ApplePay(applepay_token) => Ok(PaymentDetails::OpaqueData(WalletDetails { + data_descriptor: WalletMethod::Applepay, + data_value: Secret::new(applepay_token.payment_data.clone()), + })), + WalletData::PaypalRedirect(_) => Ok(PaymentDetails::PayPal(PayPalDetails { success_url: return_url.to_owned(), cancel_url: return_url.to_owned(), })), - domain::WalletData::AliPayQr(_) - | domain::WalletData::AliPayRedirect(_) - | domain::WalletData::AliPayHkRedirect(_) - | domain::WalletData::AmazonPayRedirect(_) - | domain::WalletData::MomoRedirect(_) - | domain::WalletData::KakaoPayRedirect(_) - | domain::WalletData::GoPayRedirect(_) - | domain::WalletData::GcashRedirect(_) - | domain::WalletData::ApplePayRedirect(_) - | domain::WalletData::ApplePayThirdPartySdk(_) - | domain::WalletData::DanaRedirect {} - | domain::WalletData::GooglePayRedirect(_) - | domain::WalletData::GooglePayThirdPartySdk(_) - | domain::WalletData::MbWayRedirect(_) - | domain::WalletData::MobilePayRedirect(_) - | domain::WalletData::PaypalSdk(_) - | domain::WalletData::Paze(_) - | domain::WalletData::SamsungPay(_) - | domain::WalletData::TwintRedirect {} - | domain::WalletData::VippsRedirect {} - | domain::WalletData::TouchNGoRedirect(_) - | domain::WalletData::WeChatPayRedirect(_) - | domain::WalletData::WeChatPayQr(_) - | domain::WalletData::CashappQr(_) - | domain::WalletData::SwishQr(_) - | domain::WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + WalletData::AliPayQr(_) + | WalletData::AliPayRedirect(_) + | WalletData::AliPayHkRedirect(_) + | WalletData::AmazonPayRedirect(_) + | WalletData::MomoRedirect(_) + | WalletData::KakaoPayRedirect(_) + | WalletData::GoPayRedirect(_) + | WalletData::GcashRedirect(_) + | WalletData::ApplePayRedirect(_) + | WalletData::ApplePayThirdPartySdk(_) + | WalletData::DanaRedirect {} + | WalletData::GooglePayRedirect(_) + | WalletData::GooglePayThirdPartySdk(_) + | WalletData::MbWayRedirect(_) + | WalletData::MobilePayRedirect(_) + | WalletData::PaypalSdk(_) + | WalletData::Paze(_) + | WalletData::SamsungPay(_) + | WalletData::TwintRedirect {} + | WalletData::VippsRedirect {} + | WalletData::TouchNGoRedirect(_) + | WalletData::WeChatPayRedirect(_) + | WalletData::WeChatPayQr(_) + | WalletData::CashappQr(_) + | WalletData::SwishQr(_) + | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("authorizedotnet"), ))?, } @@ -1883,12 +1853,12 @@ pub struct PaypalQueryParams { payer_id: Option>, } -impl TryFrom<&AuthorizedotnetRouterData<&types::PaymentsCompleteAuthorizeRouterData>> +impl TryFrom<&AuthorizedotnetRouterData<&PaymentsCompleteAuthorizeRouterData>> for PaypalConfirmRequest { type Error = error_stack::Report; fn try_from( - item: &AuthorizedotnetRouterData<&types::PaymentsCompleteAuthorizeRouterData>, + item: &AuthorizedotnetRouterData<&PaymentsCompleteAuthorizeRouterData>, ) -> Result { let params = item .router_data diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index 506169147ec..bb36d0269b2 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -98,6 +98,7 @@ default_imp_for_authorize_session_token!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -183,6 +184,7 @@ default_imp_for_calculate_tax!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -269,6 +271,7 @@ default_imp_for_session_update!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -356,6 +359,7 @@ default_imp_for_post_session_tokens!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -516,6 +520,7 @@ default_imp_for_incremental_authorization!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -602,6 +607,7 @@ default_imp_for_create_customer!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -762,6 +768,7 @@ macro_rules! default_imp_for_pre_processing_steps{ default_imp_for_pre_processing_steps!( connectors::Aci, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -844,6 +851,7 @@ default_imp_for_post_processing_steps!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -932,6 +940,7 @@ default_imp_for_approve!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1020,6 +1029,7 @@ default_imp_for_reject!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1108,6 +1118,7 @@ default_imp_for_webhook_source_verification!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1197,6 +1208,7 @@ default_imp_for_accept_dispute!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1285,6 +1297,7 @@ default_imp_for_submit_evidence!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1373,6 +1386,7 @@ default_imp_for_defend_dispute!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1470,6 +1484,7 @@ default_imp_for_file_upload!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1551,6 +1566,7 @@ default_imp_for_payouts!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1639,6 +1655,7 @@ default_imp_for_payouts_create!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1729,6 +1746,7 @@ default_imp_for_payouts_retrieve!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1819,6 +1837,7 @@ default_imp_for_payouts_eligibility!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1909,6 +1928,7 @@ default_imp_for_payouts_fulfill!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1998,6 +2018,7 @@ default_imp_for_payouts_cancel!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2088,6 +2109,7 @@ default_imp_for_payouts_quote!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2178,6 +2200,7 @@ default_imp_for_payouts_recipient!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2268,6 +2291,7 @@ default_imp_for_payouts_recipient_account!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2358,6 +2382,7 @@ default_imp_for_frm_sale!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2448,6 +2473,7 @@ default_imp_for_frm_checkout!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2538,6 +2564,7 @@ default_imp_for_frm_transaction!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2628,6 +2655,7 @@ default_imp_for_frm_fulfillment!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2718,6 +2746,7 @@ default_imp_for_frm_record_return!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2805,6 +2834,7 @@ default_imp_for_revoking_mandates!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2890,6 +2920,7 @@ default_imp_for_uas_pre_authentication!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2976,6 +3007,7 @@ default_imp_for_uas_post_authentication!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -3062,6 +3094,7 @@ default_imp_for_uas_authentication!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index d5ce6fbc3a7..fa2bb581fdd 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -207,6 +207,7 @@ macro_rules! default_imp_for_new_connector_integration_payment { default_imp_for_new_connector_integration_payment!( connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -296,6 +297,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -380,6 +382,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -470,6 +473,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -558,6 +562,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -646,6 +651,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -745,6 +751,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -836,6 +843,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -927,6 +935,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1018,6 +1027,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1109,6 +1119,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1200,6 +1211,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1291,6 +1303,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1382,6 +1395,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1473,6 +1487,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1562,6 +1577,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1653,6 +1669,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1744,6 +1761,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1835,6 +1853,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -1926,6 +1945,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2017,6 +2037,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -2105,6 +2126,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 7bb09382db6..7d406530cb0 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -1,6 +1,5 @@ pub mod adyen; pub mod adyenplatform; -pub mod authorizedotnet; pub mod checkout; #[cfg(feature = "dummy_connector")] pub mod dummyconnector; @@ -23,14 +22,14 @@ pub mod wellsfargopayout; pub mod wise; pub use hyperswitch_connectors::connectors::{ - aci, aci::Aci, airwallex, airwallex::Airwallex, amazonpay, amazonpay::Amazonpay, bambora, - bambora::Bambora, bamboraapac, bamboraapac::Bamboraapac, bankofamerica, - bankofamerica::Bankofamerica, billwerk, billwerk::Billwerk, bitpay, bitpay::Bitpay, bluesnap, - bluesnap::Bluesnap, boku, boku::Boku, braintree, braintree::Braintree, cashtocode, - cashtocode::Cashtocode, chargebee::Chargebee, coinbase, coinbase::Coinbase, coingate, - coingate::Coingate, cryptopay, cryptopay::Cryptopay, ctp_mastercard, - ctp_mastercard::CtpMastercard, cybersource, cybersource::Cybersource, datatrans, - datatrans::Datatrans, deutschebank, deutschebank::Deutschebank, digitalvirgo, + aci, aci::Aci, airwallex, airwallex::Airwallex, amazonpay, amazonpay::Amazonpay, + authorizedotnet, authorizedotnet::Authorizedotnet, bambora, bambora::Bambora, bamboraapac, + bamboraapac::Bamboraapac, bankofamerica, bankofamerica::Bankofamerica, billwerk, + billwerk::Billwerk, bitpay, bitpay::Bitpay, bluesnap, bluesnap::Bluesnap, boku, boku::Boku, + braintree, braintree::Braintree, cashtocode, cashtocode::Cashtocode, chargebee::Chargebee, + coinbase, coinbase::Coinbase, coingate, coingate::Coingate, cryptopay, cryptopay::Cryptopay, + ctp_mastercard, ctp_mastercard::CtpMastercard, cybersource, cybersource::Cybersource, + datatrans, datatrans::Datatrans, deutschebank, deutschebank::Deutschebank, digitalvirgo, digitalvirgo::Digitalvirgo, dlocal, dlocal::Dlocal, elavon, elavon::Elavon, fiserv, fiserv::Fiserv, fiservemea, fiservemea::Fiservemea, fiuu, fiuu::Fiuu, forte, forte::Forte, getnet, getnet::Getnet, globalpay, globalpay::Globalpay, globepay, globepay::Globepay, @@ -52,9 +51,9 @@ pub use hyperswitch_connectors::connectors::{ #[cfg(feature = "dummy_connector")] pub use self::dummyconnector::DummyConnector; pub use self::{ - adyen::Adyen, adyenplatform::Adyenplatform, authorizedotnet::Authorizedotnet, - checkout::Checkout, ebanx::Ebanx, gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, - opayo::Opayo, opennode::Opennode, payone::Payone, paypal::Paypal, plaid::Plaid, - riskified::Riskified, signifyd::Signifyd, stripe::Stripe, threedsecureio::Threedsecureio, - trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, wise::Wise, + adyen::Adyen, adyenplatform::Adyenplatform, checkout::Checkout, ebanx::Ebanx, + gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, opayo::Opayo, opennode::Opennode, + payone::Payone, paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, + stripe::Stripe, threedsecureio::Threedsecureio, trustpay::Trustpay, + wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index fe520094d5d..dbc50fe0421 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -700,7 +700,6 @@ macro_rules! default_imp_for_new_connector_integration_payment { default_imp_for_new_connector_integration_payment!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -739,7 +738,6 @@ macro_rules! default_imp_for_new_connector_integration_refund { default_imp_for_new_connector_integration_refund!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -772,7 +770,6 @@ macro_rules! default_imp_for_new_connector_integration_connector_access_token { default_imp_for_new_connector_integration_connector_access_token!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -827,7 +824,6 @@ macro_rules! default_imp_for_new_connector_integration_submit_evidence { default_imp_for_new_connector_integration_accept_dispute!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -864,7 +860,6 @@ macro_rules! default_imp_for_new_connector_integration_defend_dispute { default_imp_for_new_connector_integration_defend_dispute!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -885,7 +880,6 @@ default_imp_for_new_connector_integration_defend_dispute!( default_imp_for_new_connector_integration_submit_evidence!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -933,7 +927,6 @@ macro_rules! default_imp_for_new_connector_integration_file_upload { default_imp_for_new_connector_integration_file_upload!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1062,7 +1055,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_create { default_imp_for_new_connector_integration_payouts_create!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1102,7 +1094,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_eligibility { default_imp_for_new_connector_integration_payouts_eligibility!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1142,7 +1133,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_fulfill { default_imp_for_new_connector_integration_payouts_fulfill!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1182,7 +1172,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_cancel { default_imp_for_new_connector_integration_payouts_cancel!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1222,7 +1211,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_quote { default_imp_for_new_connector_integration_payouts_quote!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1262,7 +1250,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient { default_imp_for_new_connector_integration_payouts_recipient!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1302,7 +1289,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_sync { default_imp_for_new_connector_integration_payouts_sync!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1342,7 +1328,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient_account default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1380,7 +1365,6 @@ macro_rules! default_imp_for_new_connector_integration_webhook_source_verificati default_imp_for_new_connector_integration_webhook_source_verification!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1509,7 +1493,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_sale { default_imp_for_new_connector_integration_frm_sale!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1549,7 +1532,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_checkout { default_imp_for_new_connector_integration_frm_checkout!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1589,7 +1571,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_transaction { default_imp_for_new_connector_integration_frm_transaction!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1629,7 +1610,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_fulfillment { default_imp_for_new_connector_integration_frm_fulfillment!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1669,7 +1649,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_record_return { default_imp_for_new_connector_integration_frm_record_return!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1706,7 +1685,6 @@ macro_rules! default_imp_for_new_connector_integration_revoking_mandates { default_imp_for_new_connector_integration_revoking_mandates!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1892,7 +1870,6 @@ macro_rules! default_imp_for_new_connector_integration_uas { default_imp_for_new_connector_integration_uas!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index 15a98093894..b29d30533d2 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -260,7 +260,6 @@ impl default_imp_for_webhook_source_verification!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -309,7 +308,6 @@ impl default_imp_for_create_customer!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -507,7 +505,6 @@ impl default_imp_for_accept_dispute!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -577,7 +574,6 @@ impl default_imp_for_file_upload!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -624,7 +620,6 @@ impl default_imp_for_submit_evidence!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -671,7 +666,6 @@ impl default_imp_for_defend_dispute!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -734,7 +728,6 @@ impl default_imp_for_pre_processing_steps!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -769,7 +762,6 @@ default_imp_for_post_processing_steps!( connector::Paypal, connector::Stripe, connector::Trustpay, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -796,7 +788,6 @@ macro_rules! default_imp_for_payouts { impl Payouts for connector::DummyConnector {} default_imp_for_payouts!( - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -841,7 +832,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_create!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -888,7 +878,6 @@ impl default_imp_for_payouts_retrieve!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -940,7 +929,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_eligibility!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -987,7 +975,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_fulfill!( - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -1032,7 +1019,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_cancel!( connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -1080,7 +1066,6 @@ impl default_imp_for_payouts_quote!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -1129,7 +1114,6 @@ impl default_imp_for_payouts_recipient!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Gpayments, connector::Netcetera, @@ -1180,7 +1164,6 @@ impl default_imp_for_payouts_recipient_account!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1229,7 +1212,6 @@ impl default_imp_for_approve!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1279,7 +1261,6 @@ impl default_imp_for_reject!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1432,7 +1413,6 @@ impl default_imp_for_frm_sale!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1482,7 +1462,6 @@ impl default_imp_for_frm_checkout!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1532,7 +1511,6 @@ impl default_imp_for_frm_transaction!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1582,7 +1560,6 @@ impl default_imp_for_frm_fulfillment!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1632,7 +1609,6 @@ impl default_imp_for_frm_record_return!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1680,7 +1656,6 @@ impl default_imp_for_incremental_authorization!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1728,7 +1703,6 @@ impl default_imp_for_revoking_mandates!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1949,7 +1923,6 @@ impl default_imp_for_authorize_session_token!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -1997,7 +1970,6 @@ impl default_imp_for_calculate_tax!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -2045,7 +2017,6 @@ impl default_imp_for_session_update!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -2092,7 +2063,6 @@ impl default_imp_for_post_session_tokens!( connector::Adyen, connector::Adyenplatform, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -2142,7 +2112,6 @@ impl default_imp_for_uas_pre_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -2190,7 +2159,6 @@ impl default_imp_for_uas_post_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, @@ -2238,7 +2206,6 @@ impl default_imp_for_uas_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, connector::Checkout, connector::Ebanx, connector::Gpayments, From 3d3931baee750d58e2d4e97718d4ff7dba185dd6 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Wed, 12 Feb 2025 19:10:40 +0530 Subject: [PATCH 05/10] refactor(connector): [CHECKOUT] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 29 +- .../src/connectors}/checkout.rs | 777 +++++++++--------- .../src/connectors}/checkout/transformers.rs | 571 +++++++------ .../src/default_implementations.rs | 30 + .../src/default_implementations_v2.rs | 22 + crates/hyperswitch_connectors/src/types.rs | 25 +- crates/router/src/connector.rs | 49 +- .../connector_integration_v2_impls.rs | 23 - crates/router/src/core/payments/flows.rs | 30 - 9 files changed, 763 insertions(+), 793 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/checkout.rs (65%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/checkout/transformers.rs (71%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 8814957dd62..6e3170eaa09 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -12,6 +12,7 @@ pub mod boku; pub mod braintree; pub mod cashtocode; pub mod chargebee; +pub mod checkout; pub mod coinbase; pub mod coingate; pub mod cryptopay; @@ -74,18 +75,18 @@ pub use self::{ aci::Aci, airwallex::Airwallex, amazonpay::Amazonpay, authorizedotnet::Authorizedotnet, bambora::Bambora, bamboraapac::Bamboraapac, bankofamerica::Bankofamerica, billwerk::Billwerk, bitpay::Bitpay, bluesnap::Bluesnap, boku::Boku, braintree::Braintree, cashtocode::Cashtocode, - chargebee::Chargebee, coinbase::Coinbase, coingate::Coingate, cryptopay::Cryptopay, - ctp_mastercard::CtpMastercard, cybersource::Cybersource, datatrans::Datatrans, - deutschebank::Deutschebank, digitalvirgo::Digitalvirgo, dlocal::Dlocal, elavon::Elavon, - fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, getnet::Getnet, - globalpay::Globalpay, globepay::Globepay, gocardless::Gocardless, helcim::Helcim, - iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, - mifinity::Mifinity, mollie::Mollie, multisafepay::Multisafepay, nexinets::Nexinets, - nexixpay::Nexixpay, nomupay::Nomupay, noon::Noon, novalnet::Novalnet, nuvei::Nuvei, - paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, placetopay::Placetopay, - powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, - redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, - tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, volt::Volt, - wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, - zsl::Zsl, + chargebee::Chargebee, checkout::Checkout, coinbase::Coinbase, coingate::Coingate, + cryptopay::Cryptopay, ctp_mastercard::CtpMastercard, cybersource::Cybersource, + datatrans::Datatrans, deutschebank::Deutschebank, digitalvirgo::Digitalvirgo, dlocal::Dlocal, + elavon::Elavon, fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, + getnet::Getnet, globalpay::Globalpay, globepay::Globepay, gocardless::Gocardless, + helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, + klarna::Klarna, mifinity::Mifinity, mollie::Mollie, multisafepay::Multisafepay, + nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, noon::Noon, novalnet::Novalnet, + nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, + placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, + razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, + thunes::Thunes, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, + volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, + zen::Zen, zsl::Zsl, }; diff --git a/crates/router/src/connector/checkout.rs b/crates/hyperswitch_connectors/src/connectors/checkout.rs similarity index 65% rename from crates/router/src/connector/checkout.rs rename to crates/hyperswitch_connectors/src/connectors/checkout.rs index 96b30dc80f9..61977098476 100644 --- a/crates/router/src/connector/checkout.rs +++ b/crates/hyperswitch_connectors/src/connectors/checkout.rs @@ -1,39 +1,69 @@ pub mod transformers; +use common_enums::{enums, CallConnectorAction, PaymentAction}; use common_utils::{ crypto, + errors::CustomResult, ext_traits::ByteSliceExt, - request::RequestContent, + request::{Method, Request, RequestBuilder, RequestContent}, types::{AmountConvertor, MinorUnit, MinorUnitForConnector}, }; -use diesel_models::enums; use error_stack::ResultExt; -use masking::PeekInterface; - -use self::transformers as checkout; -use super::utils::{ - self as conn_utils, ConnectorErrorType, ConnectorErrorTypeMapping, RefundsRequestData, +use hyperswitch_domain_models::{ + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, + Accept, Defend, Evidence, Retrieve, Upload, + }, + router_request_types::{ + AcceptDisputeRequestData, AccessTokenRequestData, DefendDisputeRequestData, + PaymentMethodTokenizationData, PaymentsAuthorizeData, PaymentsCancelData, + PaymentsCaptureData, PaymentsSessionData, PaymentsSyncData, RefundsData, + RetrieveFileRequestData, SetupMandateRequestData, SubmitEvidenceRequestData, + SyncRequestType, UploadFileRequestData, + }, + router_response_types::{ + AcceptDisputeResponse, DefendDisputeResponse, PaymentsResponseData, RefundsResponseData, + RetrieveFileResponse, SubmitEvidenceResponse, UploadFileResponse, + }, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsSyncRouterData, RefundsRouterData, TokenizationRouterData, + }, }; -use crate::{ - configs::settings, - connector::utils as connector_utils, - consts, - core::{ - errors::{self, CustomResult}, - payments, +use hyperswitch_interfaces::{ + api::{ + self, + disputes::{AcceptDispute, DefendDispute, Dispute, SubmitEvidence}, + files::{FilePurpose, FileUpload, RetrieveFile, UploadFile}, + CaptureSyncMethod, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, + ConnectorSpecifications, ConnectorValidation, MandateSetup, }, + configs::Connectors, + consts, + disputes::DisputePayload, + errors, events::connector_api_logs::ConnectorEvent, - headers, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, + types::{ + AcceptDisputeType, DefendDisputeType, PaymentsAuthorizeType, PaymentsCaptureType, + PaymentsSyncType, PaymentsVoidType, RefundExecuteType, RefundSyncType, Response, + SubmitEvidenceType, TokenizationType, UploadFileType, }, + webhooks, +}; +use masking::{Mask, Maskable, PeekInterface}; +use transformers::CheckoutErrorResponse; + +use self::transformers as checkout; +use crate::{ + constants::headers, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, + AcceptDisputeRouterData, DefendDisputeRouterData, ResponseRouterData, + SubmitEvidenceRouterData, UploadFileRouterData, }, - utils::BytesExt, + utils::{self, ConnectorErrorType, RefundsRequestData}, }; #[derive(Clone)] @@ -55,12 +85,12 @@ where { fn build_headers( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::PaymentsAuthorizeType::get_content_type(self) + PaymentsAuthorizeType::get_content_type(self) .to_string() .into(), )]; @@ -85,8 +115,8 @@ impl ConnectorCommon for Checkout { fn get_auth_header( &self, - auth_type: &types::ConnectorAuthType, - ) -> CustomResult)>, errors::ConnectorError> { + auth_type: &ConnectorAuthType, + ) -> CustomResult)>, errors::ConnectorError> { let auth = checkout::CheckoutAuthType::try_from(auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; Ok(vec![( @@ -95,15 +125,15 @@ impl ConnectorCommon for Checkout { )]) } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.checkout.base_url.as_ref() } fn build_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { - let response: checkout::ErrorResponse = if res.response.is_empty() { + ) -> CustomResult { + let response: CheckoutErrorResponse = if res.response.is_empty() { let (error_codes, error_type) = if res.status_code == 401 { ( Some(vec!["Invalid api key".to_string()]), @@ -112,7 +142,7 @@ impl ConnectorCommon for Checkout { } else { (None, None) }; - checkout::ErrorResponse { + CheckoutErrorResponse { request_id: None, error_codes, error_type, @@ -127,14 +157,14 @@ impl ConnectorCommon for Checkout { router_env::logger::info!(connector_response=?response); let errors_list = response.error_codes.clone().unwrap_or_default(); - let option_error_code_message = conn_utils::get_error_code_error_message_based_on_priority( + let option_error_code_message = utils::get_error_code_error_message_based_on_priority( self.clone(), errors_list .into_iter() .map(|errors| errors.into()) .collect(), ); - Ok(types::ErrorResponse { + Ok(ErrorResponse { status_code: res.status_code, code: option_error_code_message .clone() @@ -166,9 +196,10 @@ impl ConnectorValidation for Checkout { | enums::CaptureMethod::SequentialAutomatic | enums::CaptureMethod::Manual | enums::CaptureMethod::ManualMultiple => Ok(()), - enums::CaptureMethod::Scheduled => Err( - connector_utils::construct_not_implemented_error_report(capture_method, self.id()), - ), + enums::CaptureMethod::Scheduled => Err(utils::construct_not_implemented_error_report( + capture_method, + self.id(), + )), } } } @@ -181,24 +212,20 @@ impl api::PaymentVoid for Checkout {} impl api::PaymentCapture for Checkout {} impl api::PaymentSession for Checkout {} impl api::ConnectorAccessToken for Checkout {} -impl api::AcceptDispute for Checkout {} +impl AcceptDispute for Checkout {} impl api::PaymentToken for Checkout {} -impl api::Dispute for Checkout {} -impl api::RetrieveFile for Checkout {} -impl api::DefendDispute for Checkout {} - -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Checkout +impl Dispute for Checkout {} +impl RetrieveFile for Checkout {} +impl DefendDispute for Checkout {} + +impl ConnectorIntegration + for Checkout { fn get_headers( &self, - req: &types::TokenizationRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &TokenizationRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), self.common_get_content_type().to_string().into(), @@ -219,16 +246,16 @@ impl fn get_url( &self, - _req: &types::TokenizationRouterData, - connectors: &settings::Connectors, + _req: &TokenizationRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}tokens", self.base_url(connectors))) } fn get_request_body( &self, - req: &types::TokenizationRouterData, - _connectors: &settings::Connectors, + req: &TokenizationRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = checkout::TokenRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -236,30 +263,28 @@ impl fn build_request( &self, - req: &types::TokenizationRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &TokenizationRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::TokenizationType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&TokenizationType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::TokenizationType::get_headers(self, req, connectors)?) - .set_body(types::TokenizationType::get_request_body( - self, req, connectors, - )?) + .headers(TokenizationType::get_headers(self, req, connectors)?) + .set_body(TokenizationType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::TokenizationRouterData, + data: &TokenizationRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult + res: Response, + ) -> CustomResult where - types::PaymentsResponseData: Clone, + PaymentsResponseData: Clone, { let response: checkout::CheckoutTokenResponse = res .response @@ -267,7 +292,7 @@ impl .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -277,44 +302,32 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { // Not Implemented (R) } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { // Not Implemented (R) } -impl api::MandateSetup for Checkout {} +impl MandateSetup for Checkout {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Checkout +impl ConnectorIntegration + for Checkout { // Issue: #173 fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Checkout".to_string()) .into(), @@ -322,21 +335,19 @@ impl } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_url( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, + req: &PaymentsCaptureRouterData, + connectors: &Connectors, ) -> CustomResult { let id = req.request.connector_transaction_id.as_str(); Ok(format!( @@ -346,10 +357,10 @@ impl ConnectorIntegration CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_amount_to_capture, req.request.currency, @@ -362,18 +373,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCaptureType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsCaptureType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsCaptureType::get_request_body( + .headers(PaymentsCaptureType::get_headers(self, req, connectors)?) + .set_body(PaymentsCaptureType::get_request_body( self, req, connectors, )?) .build(), @@ -382,17 +391,17 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: checkout::PaymentCaptureResponse = res .response .parse_struct("CaptureResponse") .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -402,32 +411,30 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_url( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, + req: &PaymentsSyncRouterData, + connectors: &Connectors, ) -> CustomResult { let suffix = match req.request.sync_type { - types::SyncRequestType::MultipleCaptureSync(_) => "/actions", - types::SyncRequestType::SinglePaymentSync => "", + SyncRequestType::MultipleCaptureSync(_) => "/actions", + SyncRequestType::SinglePaymentSync => "", }; Ok(format!( "{}{}{}{}", @@ -443,53 +450,53 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsSyncRouterData, + data: &PaymentsSyncRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult + res: Response, + ) -> CustomResult where - api::PSync: Clone, - types::PaymentsSyncData: Clone, - types::PaymentsResponseData: Clone, + PSync: Clone, + PaymentsSyncData: Clone, + PaymentsResponseData: Clone, { match &data.request.sync_type { - types::SyncRequestType::MultipleCaptureSync(_) => { + SyncRequestType::MultipleCaptureSync(_) => { let response: checkout::PaymentsResponseEnum = res .response .parse_struct("checkout::PaymentsResponseEnum") .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, }) .change_context(errors::ConnectorError::ResponseHandlingFailed) } - types::SyncRequestType::SinglePaymentSync => { + SyncRequestType::SinglePaymentSync => { let response: checkout::PaymentsResponse = res .response .parse_struct("PaymentsResponse") .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -501,44 +508,42 @@ impl ConnectorIntegration CustomResult { - Ok(services::CaptureSyncMethod::Bulk) + ) -> CustomResult { + Ok(CaptureSyncMethod::Bulk) } fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_url( &self, - _req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, + _req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}{}", self.base_url(connectors), "payments")) } fn get_request_body( &self, - req: &types::PaymentsAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_amount, req.request.currency, @@ -550,24 +555,16 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -576,17 +573,17 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: checkout::PaymentsResponse = res .response .parse_struct("PaymentIntentResponse") .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -596,28 +593,26 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_url( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, + req: &PaymentsCancelRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}payments/{}/voids", @@ -628,36 +623,34 @@ impl ConnectorIntegration CustomResult { let connector_req = checkout::PaymentVoidRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) } fn build_request( &self, - req: &types::PaymentsCancelRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsCancelRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsVoidType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsVoidType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsVoidType::get_headers(self, req, connectors)?) - .set_body(types::PaymentsVoidType::get_request_body( - self, req, connectors, - )?) + .headers(PaymentsVoidType::get_headers(self, req, connectors)?) + .set_body(PaymentsVoidType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsCancelRouterData, + data: &PaymentsCancelRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let mut response: checkout::PaymentVoidResponse = res .response .parse_struct("PaymentVoidResponse") @@ -667,7 +660,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } @@ -688,14 +681,12 @@ impl api::Refund for Checkout {} impl api::RefundExecute for Checkout {} impl api::RefundSync for Checkout {} -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -705,8 +696,8 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { let id = req.request.connector_transaction_id.clone(); Ok(format!( @@ -718,10 +709,10 @@ impl ConnectorIntegration, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_refund_amount, req.request.currency, @@ -734,29 +725,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult, errors::ConnectorError> { + res: Response, + ) -> CustomResult, errors::ConnectorError> { let response: checkout::RefundResponse = res .response .parse_struct("checkout::RefundResponse") @@ -767,7 +754,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration for Checkout { +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } fn get_url( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, + req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { let id = req.request.connector_transaction_id.clone(); Ok(format!( @@ -808,25 +795,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult, errors::ConnectorError> { + res: Response, + ) -> CustomResult, errors::ConnectorError> { let refund_action_id = data.request.get_connector_refund_id()?; let response: Vec = res @@ -841,7 +828,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl - ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::AcceptDisputeRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &AcceptDisputeRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::AcceptDisputeType::get_content_type(self) - .to_string() - .into(), + AcceptDisputeType::get_content_type(self).to_string().into(), )]; let mut api_key = self.get_auth_header(&req.connector_auth_type)?; header.append(&mut api_key); @@ -880,8 +862,8 @@ impl fn get_url( &self, - req: &types::AcceptDisputeRouterData, - connectors: &settings::Connectors, + req: &AcceptDisputeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}{}{}{}", @@ -894,30 +876,28 @@ impl fn build_request( &self, - req: &types::AcceptDisputeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &AcceptDisputeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::AcceptDisputeType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&AcceptDisputeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::AcceptDisputeType::get_headers( - self, req, connectors, - )?) + .headers(AcceptDisputeType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::AcceptDisputeRouterData, + data: &AcceptDisputeRouterData, _event_builder: Option<&mut ConnectorEvent>, - _res: types::Response, - ) -> CustomResult { - Ok(types::AcceptDisputeRouterData { - response: Ok(types::AcceptDisputeResponse { - dispute_status: api::enums::DisputeStatus::DisputeAccepted, + _res: Response, + ) -> CustomResult { + Ok(AcceptDisputeRouterData { + response: Ok(AcceptDisputeResponse { + dispute_status: enums::DisputeStatus::DisputeAccepted, connector_status: None, }), ..data.clone() @@ -926,31 +906,27 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl api::UploadFile for Checkout {} +impl UploadFile for Checkout {} -impl - ConnectorIntegration - for Checkout -{ -} +impl ConnectorIntegration for Checkout {} #[async_trait::async_trait] -impl api::FileUpload for Checkout { +impl FileUpload for Checkout { fn validate_file_upload( &self, - purpose: api::FilePurpose, + purpose: FilePurpose, file_size: i32, file_type: mime::Mime, ) -> CustomResult<(), errors::ConnectorError> { match purpose { - api::FilePurpose::DisputeEvidence => { + FilePurpose::DisputeEvidence => { let supported_file_types = ["image/jpeg", "image/jpg", "image/png", "application/pdf"]; // 4 Megabytes (MB) @@ -970,18 +946,12 @@ impl api::FileUpload for Checkout { } } -impl ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::RouterData< - api::Upload, - types::UploadFileRequestData, - types::UploadFileResponse, - >, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.get_auth_header(&req.connector_auth_type) } @@ -991,16 +961,16 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}{}", self.base_url(connectors), "files")) } fn get_request_body( &self, - req: &types::UploadFileRouterData, - _connectors: &settings::Connectors, + req: &UploadFileRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = transformers::construct_file_upload_request(req.clone())?; Ok(RequestContent::FormData(connector_req)) @@ -1008,29 +978,27 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &UploadFileRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::UploadFileType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&UploadFileType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::UploadFileType::get_headers(self, req, connectors)?) - .set_body(types::UploadFileType::get_request_body( - self, req, connectors, - )?) + .headers(UploadFileType::get_headers(self, req, connectors)?) + .set_body(UploadFileType::get_request_body(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::UploadFileRouterData, + data: &UploadFileRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, + res: Response, ) -> CustomResult< - types::RouterData, + RouterData, errors::ConnectorError, > { let response: checkout::FileUploadResponse = res @@ -1039,8 +1007,8 @@ impl ConnectorIntegration, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl api::SubmitEvidence for Checkout {} +impl SubmitEvidence for Checkout {} -impl - ConnectorIntegration< - api::Evidence, - types::SubmitEvidenceRequestData, - types::SubmitEvidenceResponse, - > for Checkout +impl ConnectorIntegration + for Checkout { fn get_headers( &self, - req: &types::SubmitEvidenceRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &SubmitEvidenceRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::SubmitEvidenceType::get_content_type(self) + SubmitEvidenceType::get_content_type(self) .to_string() .into(), )]; @@ -1083,8 +1047,8 @@ impl fn get_url( &self, - req: &types::SubmitEvidenceRouterData, - connectors: &settings::Connectors, + req: &SubmitEvidenceRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}disputes/{}/evidence", @@ -1095,8 +1059,8 @@ impl fn get_request_body( &self, - req: &types::SubmitEvidenceRouterData, - _connectors: &settings::Connectors, + req: &SubmitEvidenceRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = checkout::Evidence::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -1104,31 +1068,27 @@ impl fn build_request( &self, - req: &types::SubmitEvidenceRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Put) - .url(&types::SubmitEvidenceType::get_url(self, req, connectors)?) + req: &SubmitEvidenceRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Put) + .url(&SubmitEvidenceType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::SubmitEvidenceType::get_headers( - self, req, connectors, - )?) - .set_body(types::SubmitEvidenceType::get_request_body( - self, req, connectors, - )?) + .headers(SubmitEvidenceType::get_headers(self, req, connectors)?) + .set_body(SubmitEvidenceType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::SubmitEvidenceRouterData, + data: &SubmitEvidenceRouterData, _event_builder: Option<&mut ConnectorEvent>, - _res: types::Response, - ) -> CustomResult { - Ok(types::SubmitEvidenceRouterData { - response: Ok(types::SubmitEvidenceResponse { + _res: Response, + ) -> CustomResult { + Ok(SubmitEvidenceRouterData { + response: Ok(SubmitEvidenceResponse { dispute_status: api_models::enums::DisputeStatus::DisputeChallenged, connector_status: None, }), @@ -1138,27 +1098,22 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl - ConnectorIntegration - for Checkout -{ +impl ConnectorIntegration for Checkout { fn get_headers( &self, - req: &types::DefendDisputeRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &DefendDisputeRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::DefendDisputeType::get_content_type(self) - .to_string() - .into(), + DefendDisputeType::get_content_type(self).to_string().into(), )]; let mut api_key = self.get_auth_header(&req.connector_auth_type)?; header.append(&mut api_key); @@ -1167,8 +1122,8 @@ impl fn get_url( &self, - req: &types::DefendDisputeRouterData, - connectors: &settings::Connectors, + req: &DefendDisputeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}disputes/{}/evidence", @@ -1179,30 +1134,28 @@ impl fn build_request( &self, - req: &types::DefendDisputeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &DefendDisputeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::DefendDisputeType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&DefendDisputeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::DefendDisputeType::get_headers( - self, req, connectors, - )?) + .headers(DefendDisputeType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::DefendDisputeRouterData, + data: &DefendDisputeRouterData, _event_builder: Option<&mut ConnectorEvent>, - _res: types::Response, - ) -> CustomResult { - Ok(types::DefendDisputeRouterData { - response: Ok(types::DefendDisputeResponse { - dispute_status: api::enums::DisputeStatus::DisputeChallenged, + _res: Response, + ) -> CustomResult { + Ok(DefendDisputeRouterData { + response: Ok(DefendDisputeResponse { + dispute_status: enums::DisputeStatus::DisputeChallenged, connector_status: None, }), ..data.clone() @@ -1211,33 +1164,33 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, - ) -> CustomResult { + ) -> CustomResult { self.build_error_response(res, event_builder) } } #[async_trait::async_trait] -impl api::IncomingWebhook for Checkout { +impl webhooks::IncomingWebhook for Checkout { fn get_webhook_source_verification_algorithm( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::HmacSha256)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { - let signature = conn_utils::get_header_key_value("cko-signature", request.headers) + let signature = utils::get_header_key_value("cko-signature", request.headers) .change_context(errors::ConnectorError::WebhookSignatureNotFound)?; hex::decode(signature).change_context(errors::ConnectorError::WebhookSignatureNotFound) } fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -1245,7 +1198,7 @@ impl api::IncomingWebhook for Checkout { } fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult { let details: checkout::CheckoutWebhookBody = request .body @@ -1292,19 +1245,21 @@ impl api::IncomingWebhook for Checkout { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let details: checkout::CheckoutWebhookEventTypeBody = request .body .parse_struct("CheckoutWebhookBody") .change_context(errors::ConnectorError::WebhookEventTypeNotFound)?; - Ok(api::IncomingWebhookEvent::from(details.transaction_type)) + Ok(api_models::webhooks::IncomingWebhookEvent::from( + details.transaction_type, + )) } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let event_type_data: checkout::CheckoutWebhookEventTypeBody = request .body @@ -1326,13 +1281,13 @@ impl api::IncomingWebhook for Checkout { fn get_dispute_details( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let dispute_details: checkout::CheckoutDisputeWebhookBody = request .body .parse_struct("CheckoutWebhookBody") .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; - Ok(api::disputes::DisputePayload { + Ok(DisputePayload { amount: dispute_details.data.amount.to_string(), currency: dispute_details.data.currency, dispute_stage: api_models::enums::DisputeStage::from( @@ -1349,24 +1304,24 @@ impl api::IncomingWebhook for Checkout { } } -impl services::ConnectorRedirectResponse for Checkout { +impl api::ConnectorRedirectResponse for Checkout { fn get_flow_type( &self, _query_params: &str, _json_payload: Option, - action: services::PaymentAction, - ) -> CustomResult { + action: PaymentAction, + ) -> CustomResult { match action { - services::PaymentAction::PSync - | services::PaymentAction::CompleteAuthorize - | services::PaymentAction::PaymentAuthenticateCompleteAuthorize => { - Ok(payments::CallConnectorAction::Trigger) + PaymentAction::PSync + | PaymentAction::CompleteAuthorize + | PaymentAction::PaymentAuthenticateCompleteAuthorize => { + Ok(CallConnectorAction::Trigger) } } } } -impl ConnectorErrorTypeMapping for Checkout { +impl utils::ConnectorErrorTypeMapping for Checkout { fn get_connector_error_type( &self, error_code: String, diff --git a/crates/router/src/connector/checkout/transformers.rs b/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs similarity index 71% rename from crates/router/src/connector/checkout/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs index 254c0346e8e..eba89f167bf 100644 --- a/crates/router/src/connector/checkout/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/checkout/transformers.rs @@ -1,24 +1,39 @@ +use common_enums::enums::{self, AttemptStatus}; use common_utils::{ errors::{CustomResult, ParsingError}, ext_traits::ByteSliceExt, + request::Method, types::MinorUnit, }; use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data::{PaymentMethodData, WalletData}, + router_data::{ConnectorAuthType, ErrorResponse, PaymentMethodToken, RouterData}, + router_flow_types::{Execute, RSync}, + router_request_types::ResponseId, + router_response_types::{PaymentsResponseData, RedirectForm, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsSyncRouterData, RefundsRouterData, TokenizationRouterData, + }, +}; +use hyperswitch_interfaces::{consts, errors, webhooks}; use masking::{ExposeInterface, Secret}; use serde::{Deserialize, Serialize}; use time::PrimitiveDateTime; use url::Url; use crate::{ - connector::utils::{ - self, to_connector_meta, ApplePayDecrypt, PaymentsCaptureRequestData, RouterData, - WalletData, + types::{ + PaymentsCancelResponseRouterData, PaymentsCaptureResponseRouterData, + PaymentsResponseRouterData, PaymentsSyncResponseRouterData, RefundsResponseRouterData, + ResponseRouterData, SubmitEvidenceRouterData, UploadFileRouterData, }, - consts, - core::errors, - services, - types::{self, api, domain, storage::enums, transformers::ForeignFrom}, unimplemented_payment_method, + utils::{ + self, ApplePayDecrypt, PaymentsCaptureRequestData, RouterData as OtherRouterData, + WalletData as OtherWalletData, + }, }; #[derive(Debug, Serialize)] @@ -75,70 +90,70 @@ pub struct CheckoutApplePayHeader { transaction_id: Secret, } -impl TryFrom<&types::TokenizationRouterData> for TokenRequest { +impl TryFrom<&TokenizationRouterData> for TokenRequest { type Error = error_stack::Report; - fn try_from(item: &types::TokenizationRouterData) -> Result { + fn try_from(item: &TokenizationRouterData) -> Result { match item.request.payment_method_data.clone() { - domain::PaymentMethodData::Wallet(wallet_data) => match wallet_data.clone() { - domain::WalletData::GooglePay(_data) => { + PaymentMethodData::Wallet(wallet_data) => match wallet_data.clone() { + WalletData::GooglePay(_data) => { let json_wallet_data: CheckoutGooglePayData = wallet_data.get_wallet_token_as_json("Google Pay".to_string())?; Ok(Self::Googlepay(json_wallet_data)) } - domain::WalletData::ApplePay(_data) => { + WalletData::ApplePay(_data) => { let json_wallet_data: CheckoutApplePayData = wallet_data.get_wallet_token_as_json("Apple Pay".to_string())?; Ok(Self::Applepay(json_wallet_data)) } - domain::WalletData::AliPayQr(_) - | domain::WalletData::AliPayRedirect(_) - | domain::WalletData::AliPayHkRedirect(_) - | domain::WalletData::AmazonPayRedirect(_) - | domain::WalletData::MomoRedirect(_) - | domain::WalletData::KakaoPayRedirect(_) - | domain::WalletData::GoPayRedirect(_) - | domain::WalletData::GcashRedirect(_) - | domain::WalletData::ApplePayRedirect(_) - | domain::WalletData::ApplePayThirdPartySdk(_) - | domain::WalletData::DanaRedirect {} - | domain::WalletData::GooglePayRedirect(_) - | domain::WalletData::GooglePayThirdPartySdk(_) - | domain::WalletData::MbWayRedirect(_) - | domain::WalletData::MobilePayRedirect(_) - | domain::WalletData::PaypalRedirect(_) - | domain::WalletData::PaypalSdk(_) - | domain::WalletData::Paze(_) - | domain::WalletData::SamsungPay(_) - | domain::WalletData::TwintRedirect {} - | domain::WalletData::VippsRedirect {} - | domain::WalletData::TouchNGoRedirect(_) - | domain::WalletData::WeChatPayRedirect(_) - | domain::WalletData::CashappQr(_) - | domain::WalletData::SwishQr(_) - | domain::WalletData::WeChatPayQr(_) - | domain::WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + WalletData::AliPayQr(_) + | WalletData::AliPayRedirect(_) + | WalletData::AliPayHkRedirect(_) + | WalletData::AmazonPayRedirect(_) + | WalletData::MomoRedirect(_) + | WalletData::KakaoPayRedirect(_) + | WalletData::GoPayRedirect(_) + | WalletData::GcashRedirect(_) + | WalletData::ApplePayRedirect(_) + | WalletData::ApplePayThirdPartySdk(_) + | WalletData::DanaRedirect {} + | WalletData::GooglePayRedirect(_) + | WalletData::GooglePayThirdPartySdk(_) + | WalletData::MbWayRedirect(_) + | WalletData::MobilePayRedirect(_) + | WalletData::PaypalRedirect(_) + | WalletData::PaypalSdk(_) + | WalletData::Paze(_) + | WalletData::SamsungPay(_) + | WalletData::TwintRedirect {} + | WalletData::VippsRedirect {} + | WalletData::TouchNGoRedirect(_) + | WalletData::WeChatPayRedirect(_) + | WalletData::CashappQr(_) + | WalletData::SwishQr(_) + | WalletData::WeChatPayQr(_) + | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), ) .into()), }, - domain::PaymentMethodData::Card(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::Card(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::CardRedirect(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), ) @@ -153,16 +168,15 @@ pub struct CheckoutTokenResponse { token: Secret, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::PaymentsResponseData::TokenizationResponse { + response: Ok(PaymentsResponseData::TokenizationResponse { token: item.response.token.expose(), }), ..item.data @@ -262,10 +276,10 @@ pub struct CheckoutThreeDS { version: Option, } -impl TryFrom<&types::ConnectorAuthType> for CheckoutAuthType { +impl TryFrom<&ConnectorAuthType> for CheckoutAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { - if let types::ConnectorAuthType::SignatureKey { + fn try_from(auth_type: &ConnectorAuthType) -> Result { + if let ConnectorAuthType::SignatureKey { api_key, api_secret, key1, @@ -281,13 +295,13 @@ impl TryFrom<&types::ConnectorAuthType> for CheckoutAuthType { } } } -impl TryFrom<&CheckoutRouterData<&types::PaymentsAuthorizeRouterData>> for PaymentsRequest { +impl TryFrom<&CheckoutRouterData<&PaymentsAuthorizeRouterData>> for PaymentsRequest { type Error = error_stack::Report; fn try_from( - item: &CheckoutRouterData<&types::PaymentsAuthorizeRouterData>, + item: &CheckoutRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let source_var = match item.router_data.request.payment_method_data.clone() { - domain::PaymentMethodData::Card(ccard) => { + PaymentMethodData::Card(ccard) => { let a = PaymentSource::Card(CardSource { source_type: CheckoutSourceTypes::Card, number: ccard.card_number.clone(), @@ -297,32 +311,32 @@ impl TryFrom<&CheckoutRouterData<&types::PaymentsAuthorizeRouterData>> for Payme }); Ok(a) } - domain::PaymentMethodData::Wallet(wallet_data) => match wallet_data { - domain::WalletData::GooglePay(_) => Ok(PaymentSource::Wallets(WalletSource { + PaymentMethodData::Wallet(wallet_data) => match wallet_data { + WalletData::GooglePay(_) => Ok(PaymentSource::Wallets(WalletSource { source_type: CheckoutSourceTypes::Token, token: match item.router_data.get_payment_method_token()? { - types::PaymentMethodToken::Token(token) => token, - types::PaymentMethodToken::ApplePayDecrypt(_) => Err( + PaymentMethodToken::Token(token) => token, + PaymentMethodToken::ApplePayDecrypt(_) => Err( unimplemented_payment_method!("Apple Pay", "Simplified", "Checkout"), )?, - types::PaymentMethodToken::PazeDecrypt(_) => { + PaymentMethodToken::PazeDecrypt(_) => { Err(unimplemented_payment_method!("Paze", "Checkout"))? } - types::PaymentMethodToken::GooglePayDecrypt(_) => { + PaymentMethodToken::GooglePayDecrypt(_) => { Err(unimplemented_payment_method!("Google Pay", "Checkout"))? } }, })), - domain::WalletData::ApplePay(_) => { + WalletData::ApplePay(_) => { let payment_method_token = item.router_data.get_payment_method_token()?; match payment_method_token { - types::PaymentMethodToken::Token(apple_pay_payment_token) => { + PaymentMethodToken::Token(apple_pay_payment_token) => { Ok(PaymentSource::Wallets(WalletSource { source_type: CheckoutSourceTypes::Token, token: apple_pay_payment_token, })) } - types::PaymentMethodToken::ApplePayDecrypt(decrypt_data) => { + PaymentMethodToken::ApplePayDecrypt(decrypt_data) => { let exp_month = decrypt_data.get_expiry_month()?; let expiry_year_4_digit = decrypt_data.get_four_digit_expiry_year()?; Ok(PaymentSource::ApplePayPredecrypt(Box::new( @@ -337,62 +351,62 @@ impl TryFrom<&CheckoutRouterData<&types::PaymentsAuthorizeRouterData>> for Payme }, ))) } - types::PaymentMethodToken::PazeDecrypt(_) => { + PaymentMethodToken::PazeDecrypt(_) => { Err(unimplemented_payment_method!("Paze", "Checkout"))? } - types::PaymentMethodToken::GooglePayDecrypt(_) => { + PaymentMethodToken::GooglePayDecrypt(_) => { Err(unimplemented_payment_method!("Google Pay", "Checkout"))? } } } - domain::WalletData::AliPayQr(_) - | domain::WalletData::AliPayRedirect(_) - | domain::WalletData::AliPayHkRedirect(_) - | domain::WalletData::AmazonPayRedirect(_) - | domain::WalletData::MomoRedirect(_) - | domain::WalletData::KakaoPayRedirect(_) - | domain::WalletData::GoPayRedirect(_) - | domain::WalletData::GcashRedirect(_) - | domain::WalletData::ApplePayRedirect(_) - | domain::WalletData::ApplePayThirdPartySdk(_) - | domain::WalletData::DanaRedirect {} - | domain::WalletData::GooglePayRedirect(_) - | domain::WalletData::GooglePayThirdPartySdk(_) - | domain::WalletData::MbWayRedirect(_) - | domain::WalletData::MobilePayRedirect(_) - | domain::WalletData::PaypalRedirect(_) - | domain::WalletData::PaypalSdk(_) - | domain::WalletData::Paze(_) - | domain::WalletData::SamsungPay(_) - | domain::WalletData::TwintRedirect {} - | domain::WalletData::VippsRedirect {} - | domain::WalletData::TouchNGoRedirect(_) - | domain::WalletData::WeChatPayRedirect(_) - | domain::WalletData::CashappQr(_) - | domain::WalletData::SwishQr(_) - | domain::WalletData::WeChatPayQr(_) - | domain::WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( + WalletData::AliPayQr(_) + | WalletData::AliPayRedirect(_) + | WalletData::AliPayHkRedirect(_) + | WalletData::AmazonPayRedirect(_) + | WalletData::MomoRedirect(_) + | WalletData::KakaoPayRedirect(_) + | WalletData::GoPayRedirect(_) + | WalletData::GcashRedirect(_) + | WalletData::ApplePayRedirect(_) + | WalletData::ApplePayThirdPartySdk(_) + | WalletData::DanaRedirect {} + | WalletData::GooglePayRedirect(_) + | WalletData::GooglePayThirdPartySdk(_) + | WalletData::MbWayRedirect(_) + | WalletData::MobilePayRedirect(_) + | WalletData::PaypalRedirect(_) + | WalletData::PaypalSdk(_) + | WalletData::Paze(_) + | WalletData::SamsungPay(_) + | WalletData::TwintRedirect {} + | WalletData::VippsRedirect {} + | WalletData::TouchNGoRedirect(_) + | WalletData::WeChatPayRedirect(_) + | WalletData::CashappQr(_) + | WalletData::SwishQr(_) + | WalletData::WeChatPayQr(_) + | WalletData::Mifinity(_) => Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), )), }, - domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::CardRedirect(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("checkout"), )) @@ -515,91 +529,87 @@ impl TryFrom for CheckoutPaymentStatus { } } -impl ForeignFrom<(CheckoutPaymentStatus, Option)> for enums::AttemptStatus { - fn foreign_from(item: (CheckoutPaymentStatus, Option)) -> Self { - let (status, capture_method) = item; - match status { - CheckoutPaymentStatus::Authorized => { - if capture_method == Some(enums::CaptureMethod::Automatic) - || capture_method.is_none() - { - Self::Pending - } else { - Self::Authorized - } +fn get_attempt_status_cap( + item: (CheckoutPaymentStatus, Option), +) -> AttemptStatus { + let (status, capture_method) = item; + match status { + CheckoutPaymentStatus::Authorized => { + if capture_method == Some(enums::CaptureMethod::Automatic) || capture_method.is_none() { + AttemptStatus::Pending + } else { + AttemptStatus::Authorized } - CheckoutPaymentStatus::Captured - | CheckoutPaymentStatus::PartiallyRefunded - | CheckoutPaymentStatus::Refunded => Self::Charged, - CheckoutPaymentStatus::PartiallyCaptured => Self::PartialCharged, - CheckoutPaymentStatus::Declined - | CheckoutPaymentStatus::Expired - | CheckoutPaymentStatus::Canceled => Self::Failure, - CheckoutPaymentStatus::Pending => Self::AuthenticationPending, - CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { - Self::Pending - } - CheckoutPaymentStatus::Voided => Self::Voided, } + CheckoutPaymentStatus::Captured + | CheckoutPaymentStatus::PartiallyRefunded + | CheckoutPaymentStatus::Refunded => AttemptStatus::Charged, + CheckoutPaymentStatus::PartiallyCaptured => AttemptStatus::PartialCharged, + CheckoutPaymentStatus::Declined + | CheckoutPaymentStatus::Expired + | CheckoutPaymentStatus::Canceled => AttemptStatus::Failure, + CheckoutPaymentStatus::Pending => AttemptStatus::AuthenticationPending, + CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { + AttemptStatus::Pending + } + CheckoutPaymentStatus::Voided => AttemptStatus::Voided, } } -impl ForeignFrom<(CheckoutPaymentStatus, CheckoutPaymentIntent)> for enums::AttemptStatus { - fn foreign_from(item: (CheckoutPaymentStatus, CheckoutPaymentIntent)) -> Self { - let (status, psync_flow) = item; +fn get_attempt_status_intent( + item: (CheckoutPaymentStatus, CheckoutPaymentIntent), +) -> AttemptStatus { + let (status, psync_flow) = item; - match status { - CheckoutPaymentStatus::Authorized => { - if psync_flow == CheckoutPaymentIntent::Capture { - Self::Pending - } else { - Self::Authorized - } - } - CheckoutPaymentStatus::Captured - | CheckoutPaymentStatus::PartiallyRefunded - | CheckoutPaymentStatus::Refunded => Self::Charged, - CheckoutPaymentStatus::PartiallyCaptured => Self::PartialCharged, - CheckoutPaymentStatus::Declined - | CheckoutPaymentStatus::Expired - | CheckoutPaymentStatus::Canceled => Self::Failure, - CheckoutPaymentStatus::Pending => Self::AuthenticationPending, - CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { - Self::Pending + match status { + CheckoutPaymentStatus::Authorized => { + if psync_flow == CheckoutPaymentIntent::Capture { + AttemptStatus::Pending + } else { + AttemptStatus::Authorized } - CheckoutPaymentStatus::Voided => Self::Voided, } + CheckoutPaymentStatus::Captured + | CheckoutPaymentStatus::PartiallyRefunded + | CheckoutPaymentStatus::Refunded => AttemptStatus::Charged, + CheckoutPaymentStatus::PartiallyCaptured => AttemptStatus::PartialCharged, + CheckoutPaymentStatus::Declined + | CheckoutPaymentStatus::Expired + | CheckoutPaymentStatus::Canceled => AttemptStatus::Failure, + CheckoutPaymentStatus::Pending => AttemptStatus::AuthenticationPending, + CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { + AttemptStatus::Pending + } + CheckoutPaymentStatus::Voided => AttemptStatus::Voided, } } -impl ForeignFrom<(CheckoutPaymentStatus, Option)> for enums::AttemptStatus { - fn foreign_from(item: (CheckoutPaymentStatus, Option)) -> Self { - let (status, balances) = item; +fn get_attempt_status_bal(item: (CheckoutPaymentStatus, Option)) -> AttemptStatus { + let (status, balances) = item; - match status { - CheckoutPaymentStatus::Authorized => { - if let Some(Balances { - available_to_capture: 0, - }) = balances - { - Self::Charged - } else { - Self::Authorized - } + match status { + CheckoutPaymentStatus::Authorized => { + if let Some(Balances { + available_to_capture: 0, + }) = balances + { + AttemptStatus::Charged + } else { + AttemptStatus::Authorized } - CheckoutPaymentStatus::Captured - | CheckoutPaymentStatus::PartiallyRefunded - | CheckoutPaymentStatus::Refunded => Self::Charged, - CheckoutPaymentStatus::PartiallyCaptured => Self::PartialCharged, - CheckoutPaymentStatus::Declined - | CheckoutPaymentStatus::Expired - | CheckoutPaymentStatus::Canceled => Self::Failure, - CheckoutPaymentStatus::Pending => Self::AuthenticationPending, - CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { - Self::Pending - } - CheckoutPaymentStatus::Voided => Self::Voided, } + CheckoutPaymentStatus::Captured + | CheckoutPaymentStatus::PartiallyRefunded + | CheckoutPaymentStatus::Refunded => AttemptStatus::Charged, + CheckoutPaymentStatus::PartiallyCaptured => AttemptStatus::PartialCharged, + CheckoutPaymentStatus::Declined + | CheckoutPaymentStatus::Expired + | CheckoutPaymentStatus::Canceled => AttemptStatus::Failure, + CheckoutPaymentStatus::Pending => AttemptStatus::AuthenticationPending, + CheckoutPaymentStatus::CardVerified | CheckoutPaymentStatus::RetryScheduled => { + AttemptStatus::Pending + } + CheckoutPaymentStatus::Voided => AttemptStatus::Voided, } } @@ -662,25 +672,21 @@ fn get_connector_meta( } } -impl TryFrom> - for types::PaymentsAuthorizeRouterData -{ +impl TryFrom> for PaymentsAuthorizeRouterData { type Error = error_stack::Report; - fn try_from( - item: types::PaymentsResponseRouterData, - ) -> Result { + fn try_from(item: PaymentsResponseRouterData) -> Result { let connector_meta = get_connector_meta(item.data.request.capture_method.unwrap_or_default())?; - let redirection_data = item.response.links.redirect.map(|href| { - services::RedirectForm::from((href.redirection_url, services::Method::Get)) - }); - let status = enums::AttemptStatus::foreign_from(( - item.response.status, - item.data.request.capture_method, - )); - let error_response = if status == enums::AttemptStatus::Failure { - Some(types::ErrorResponse { + let redirection_data = item + .response + .links + .redirect + .map(|href| RedirectForm::from((href.redirection_url, Method::Get))); + let status = + get_attempt_status_cap((item.response.status, item.data.request.capture_method)); + let error_response = if status == AttemptStatus::Failure { + Some(ErrorResponse { status_code: item.http_code, code: item .response @@ -698,8 +704,8 @@ impl TryFrom> } else { None }; - let payments_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(item.response.id.clone()), + let payments_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(item.response.id.clone()), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(None), connector_metadata: Some(connector_meta), @@ -718,22 +724,21 @@ impl TryFrom> } } -impl TryFrom> - for types::PaymentsSyncRouterData -{ +impl TryFrom> for PaymentsSyncRouterData { type Error = error_stack::Report; fn try_from( - item: types::PaymentsSyncResponseRouterData, + item: PaymentsSyncResponseRouterData, ) -> Result { - let redirection_data = item.response.links.redirect.map(|href| { - services::RedirectForm::from((href.redirection_url, services::Method::Get)) - }); + let redirection_data = item + .response + .links + .redirect + .map(|href| RedirectForm::from((href.redirection_url, Method::Get))); let checkout_meta: CheckoutMeta = - to_connector_meta(item.data.request.connector_meta.clone())?; - let status = - enums::AttemptStatus::foreign_from((item.response.status, checkout_meta.psync_flow)); - let error_response = if status == enums::AttemptStatus::Failure { - Some(types::ErrorResponse { + utils::to_connector_meta(item.data.request.connector_meta.clone())?; + let status = get_attempt_status_intent((item.response.status, checkout_meta.psync_flow)); + let error_response = if status == AttemptStatus::Failure { + Some(ErrorResponse { status_code: item.http_code, code: item .response @@ -751,8 +756,8 @@ impl TryFrom> } else { None }; - let payments_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(item.response.id.clone()), + let payments_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(item.response.id.clone()), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(None), connector_metadata: None, @@ -771,13 +776,11 @@ impl TryFrom> } } -impl TryFrom> - for types::PaymentsSyncRouterData -{ +impl TryFrom> for PaymentsSyncRouterData { type Error = error_stack::Report; fn try_from( - item: types::PaymentsSyncResponseRouterData, + item: PaymentsSyncResponseRouterData, ) -> Result { let capture_sync_response_list = match item.response { PaymentsResponseEnum::PaymentResponse(payments_response) => { @@ -790,7 +793,7 @@ impl TryFrom> } }; Ok(Self { - response: Ok(types::PaymentsResponseData::MultipleCaptureResponse { + response: Ok(PaymentsResponseData::MultipleCaptureResponse { capture_sync_response_list, }), ..item.data @@ -810,7 +813,7 @@ pub struct PaymentVoidResponse { reference: String, } -impl From<&PaymentVoidResponse> for enums::AttemptStatus { +impl From<&PaymentVoidResponse> for AttemptStatus { fn from(item: &PaymentVoidResponse) -> Self { if item.status == 202 { Self::Voided @@ -820,17 +823,15 @@ impl From<&PaymentVoidResponse> for enums::AttemptStatus { } } -impl TryFrom> - for types::PaymentsCancelRouterData -{ +impl TryFrom> for PaymentsCancelRouterData { type Error = error_stack::Report; fn try_from( - item: types::PaymentsCancelResponseRouterData, + item: PaymentsCancelResponseRouterData, ) -> Result { let response = &item.response; Ok(Self { - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(response.action_id.clone()), + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(response.action_id.clone()), redirection_data: Box::new(None), mandate_reference: Box::new(None), connector_metadata: None, @@ -845,9 +846,9 @@ impl TryFrom> } } -impl TryFrom<&types::PaymentsCancelRouterData> for PaymentVoidRequest { +impl TryFrom<&PaymentsCancelRouterData> for PaymentVoidRequest { type Error = error_stack::Report; - fn try_from(item: &types::PaymentsCancelRouterData) -> Result { + fn try_from(item: &PaymentsCancelRouterData) -> Result { Ok(Self { reference: item.request.connector_transaction_id.clone(), }) @@ -868,10 +869,10 @@ pub struct PaymentCaptureRequest { pub reference: Option, } -impl TryFrom<&CheckoutRouterData<&types::PaymentsCaptureRouterData>> for PaymentCaptureRequest { +impl TryFrom<&CheckoutRouterData<&PaymentsCaptureRouterData>> for PaymentCaptureRequest { type Error = error_stack::Report; fn try_from( - item: &CheckoutRouterData<&types::PaymentsCaptureRouterData>, + item: &CheckoutRouterData<&PaymentsCaptureRouterData>, ) -> Result { let connector_auth = &item.router_data.connector_auth_type; let auth_type: CheckoutAuthType = connector_auth.try_into()?; @@ -902,23 +903,23 @@ pub struct PaymentCaptureResponse { pub reference: Option, } -impl TryFrom> - for types::PaymentsCaptureRouterData +impl TryFrom> + for PaymentsCaptureRouterData { type Error = error_stack::Report; fn try_from( - item: types::PaymentsCaptureResponseRouterData, + item: PaymentsCaptureResponseRouterData, ) -> Result { let connector_meta = serde_json::json!(CheckoutMeta { psync_flow: CheckoutPaymentIntent::Capture, }); let (status, amount_captured) = if item.http_code == 202 { ( - enums::AttemptStatus::Charged, + AttemptStatus::Charged, Some(item.data.request.amount_to_capture), ) } else { - (enums::AttemptStatus::Pending, None) + (AttemptStatus::Pending, None) }; // if multiple capture request, return capture action_id so that it will be updated in the captures table. @@ -930,8 +931,8 @@ impl TryFrom> }; Ok(Self { - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(resource_id), + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(resource_id), redirection_data: Box::new(None), mandate_reference: Box::new(None), connector_metadata: Some(connector_meta), @@ -953,11 +954,9 @@ pub struct RefundRequest { reference: String, } -impl TryFrom<&CheckoutRouterData<&types::RefundsRouterData>> for RefundRequest { +impl TryFrom<&CheckoutRouterData<&RefundsRouterData>> for RefundRequest { type Error = error_stack::Report; - fn try_from( - item: &CheckoutRouterData<&types::RefundsRouterData>, - ) -> Result { + fn try_from(item: &CheckoutRouterData<&RefundsRouterData>) -> Result { let reference = item.router_data.request.refund_id.clone(); Ok(Self { amount: Some(item.amount.to_owned()), @@ -988,16 +987,16 @@ impl From<&CheckoutRefundResponse> for enums::RefundStatus { } } -impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let refund_status = enums::RefundStatus::from(&item.response); Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.response.action_id.clone(), refund_status, }), @@ -1006,16 +1005,16 @@ impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let refund_status = enums::RefundStatus::from(&item.response); Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.response.action_id.clone(), refund_status, }), @@ -1025,7 +1024,7 @@ impl TryFrom, pub error_type: Option, pub error_codes: Option>, @@ -1069,11 +1068,11 @@ impl utils::MultipleCaptureSyncResponse for ActionResponse { self.action_id.clone() } - fn get_capture_attempt_status(&self) -> enums::AttemptStatus { + fn get_capture_attempt_status(&self) -> AttemptStatus { match self.approved { - Some(true) => enums::AttemptStatus::Charged, - Some(false) => enums::AttemptStatus::Failure, - None => enums::AttemptStatus::Pending, + Some(true) => AttemptStatus::Charged, + Some(false) => AttemptStatus::Failure, + None => AttemptStatus::Pending, } } @@ -1095,8 +1094,8 @@ impl utils::MultipleCaptureSyncResponse for Box { self.action_id.clone().unwrap_or("".into()) } - fn get_capture_attempt_status(&self) -> enums::AttemptStatus { - enums::AttemptStatus::foreign_from((self.status.clone(), self.balances.clone())) + fn get_capture_attempt_status(&self) -> AttemptStatus { + get_attempt_status_bal((self.status.clone(), self.balances.clone())) } fn get_connector_reference_id(&self) -> Option { @@ -1125,16 +1124,14 @@ pub struct CheckoutRedirectResponse { pub cko_session_id: Option, } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let refund_status = enums::RefundStatus::from(item.response); Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.action_id.clone(), refund_status, }), @@ -1143,16 +1140,14 @@ impl TryFrom> } } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { let refund_status = enums::RefundStatus::from(item.response); Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.action_id.clone(), refund_status, }), @@ -1161,7 +1156,7 @@ impl TryFrom> } } -impl From for enums::AttemptStatus { +impl From for AttemptStatus { fn from(item: CheckoutRedirectResponseStatus) -> Self { match item { CheckoutRedirectResponseStatus::Success => Self::AuthenticationSuccessful, @@ -1293,7 +1288,7 @@ pub enum CheckoutDisputeTransactionType { DisputeLost, } -impl From for api::IncomingWebhookEvent { +impl From for api_models::webhooks::IncomingWebhookEvent { fn from(transaction_type: CheckoutWebhookEventType) -> Self { match transaction_type { CheckoutWebhookEventType::AuthenticationStarted @@ -1354,7 +1349,7 @@ pub struct CheckoutWebhookObjectResource { } pub fn construct_file_upload_request( - file_upload_router_data: types::UploadFileRouterData, + file_upload_router_data: UploadFileRouterData, ) -> CustomResult { let request = file_upload_router_data.request; let mut multipart = reqwest::multipart::Form::new(); @@ -1394,10 +1389,12 @@ pub struct Evidence { pub additional_evidence_file: Option, } -impl TryFrom<&api::IncomingWebhookRequestDetails<'_>> for PaymentsResponse { +impl TryFrom<&webhooks::IncomingWebhookRequestDetails<'_>> for PaymentsResponse { type Error = error_stack::Report; - fn try_from(request: &api::IncomingWebhookRequestDetails<'_>) -> Result { + fn try_from( + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> Result { let details: CheckoutWebhookBody = request .body .parse_struct("CheckoutWebhookBody") @@ -1422,10 +1419,12 @@ impl TryFrom<&api::IncomingWebhookRequestDetails<'_>> for PaymentsResponse { } } -impl TryFrom<&api::IncomingWebhookRequestDetails<'_>> for RefundResponse { +impl TryFrom<&webhooks::IncomingWebhookRequestDetails<'_>> for RefundResponse { type Error = error_stack::Report; - fn try_from(request: &api::IncomingWebhookRequestDetails<'_>) -> Result { + fn try_from( + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> Result { let details: CheckoutWebhookBody = request .body .parse_struct("CheckoutWebhookBody") @@ -1444,9 +1443,9 @@ impl TryFrom<&api::IncomingWebhookRequestDetails<'_>> for RefundResponse { } } -impl TryFrom<&types::SubmitEvidenceRouterData> for Evidence { +impl TryFrom<&SubmitEvidenceRouterData> for Evidence { type Error = error_stack::Report; - fn try_from(item: &types::SubmitEvidenceRouterData) -> Result { + fn try_from(item: &SubmitEvidenceRouterData) -> Result { let submit_evidence_request_data = item.request.clone(); Ok(Self { proof_of_delivery_or_service_file: submit_evidence_request_data diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index bb36d0269b2..04efd57ddc5 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -109,6 +109,7 @@ default_imp_for_authorize_session_token!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -195,6 +196,7 @@ default_imp_for_calculate_tax!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -282,6 +284,7 @@ default_imp_for_session_update!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -370,6 +373,7 @@ default_imp_for_post_session_tokens!( connectors::Billwerk, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -455,6 +459,7 @@ default_imp_for_complete_authorize!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -531,6 +536,7 @@ default_imp_for_incremental_authorization!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -618,6 +624,7 @@ default_imp_for_create_customer!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -779,6 +786,7 @@ default_imp_for_pre_processing_steps!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -862,6 +870,7 @@ default_imp_for_post_processing_steps!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -951,6 +960,7 @@ default_imp_for_approve!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1040,6 +1050,7 @@ default_imp_for_reject!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1129,6 +1140,7 @@ default_imp_for_webhook_source_verification!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1577,6 +1589,7 @@ default_imp_for_payouts!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Cryptopay, connectors::Datatrans, connectors::Coinbase, @@ -1666,6 +1679,7 @@ default_imp_for_payouts_create!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1757,6 +1771,7 @@ default_imp_for_payouts_retrieve!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1848,6 +1863,7 @@ default_imp_for_payouts_eligibility!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1939,6 +1955,7 @@ default_imp_for_payouts_fulfill!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2029,6 +2046,7 @@ default_imp_for_payouts_cancel!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2120,6 +2138,7 @@ default_imp_for_payouts_quote!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2211,6 +2230,7 @@ default_imp_for_payouts_recipient!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2302,6 +2322,7 @@ default_imp_for_payouts_recipient_account!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2393,6 +2414,7 @@ default_imp_for_frm_sale!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2484,6 +2506,7 @@ default_imp_for_frm_checkout!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2575,6 +2598,7 @@ default_imp_for_frm_transaction!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2666,6 +2690,7 @@ default_imp_for_frm_fulfillment!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2757,6 +2782,7 @@ default_imp_for_frm_record_return!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2845,6 +2871,7 @@ default_imp_for_revoking_mandates!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2931,6 +2958,7 @@ default_imp_for_uas_pre_authentication!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -3018,6 +3046,7 @@ default_imp_for_uas_post_authentication!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -3105,6 +3134,7 @@ default_imp_for_uas_authentication!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index fa2bb581fdd..e9609758cfa 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -218,6 +218,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -308,6 +309,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -393,6 +395,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -484,6 +487,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -573,6 +577,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -662,6 +667,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -762,6 +768,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -854,6 +861,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -946,6 +954,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1038,6 +1047,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1130,6 +1140,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1222,6 +1233,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1314,6 +1326,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1406,6 +1419,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1498,6 +1512,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1588,6 +1603,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1680,6 +1696,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1772,6 +1789,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1864,6 +1882,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -1956,6 +1975,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2048,6 +2068,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -2137,6 +2158,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, diff --git a/crates/hyperswitch_connectors/src/types.rs b/crates/hyperswitch_connectors/src/types.rs index e893238fd8d..63b857e7ca2 100644 --- a/crates/hyperswitch_connectors/src/types.rs +++ b/crates/hyperswitch_connectors/src/types.rs @@ -2,12 +2,20 @@ use hyperswitch_domain_models::types::{PayoutsData, PayoutsResponseData}; use hyperswitch_domain_models::{ router_data::{AccessToken, RouterData}, - router_flow_types::{AccessTokenAuth, Authorize, Capture, PSync, PreProcessing, Session, Void}, + router_flow_types::{ + Accept, AccessTokenAuth, Authorize, Capture, Defend, Evidence, PSync, PreProcessing, + Session, Upload, Void, + }, router_request_types::{ - AccessTokenRequestData, PaymentsAuthorizeData, PaymentsCancelData, PaymentsCaptureData, - PaymentsPreProcessingData, PaymentsSessionData, PaymentsSyncData, RefundsData, + AcceptDisputeRequestData, AccessTokenRequestData, DefendDisputeRequestData, + PaymentsAuthorizeData, PaymentsCancelData, PaymentsCaptureData, PaymentsPreProcessingData, + PaymentsSessionData, PaymentsSyncData, RefundsData, SubmitEvidenceRequestData, + UploadFileRequestData, + }, + router_response_types::{ + AcceptDisputeResponse, DefendDisputeResponse, PaymentsResponseData, RefundsResponseData, + SubmitEvidenceResponse, UploadFileResponse, }, - router_response_types::{PaymentsResponseData, RefundsResponseData}, }; pub(crate) type PaymentsSyncResponseRouterData = @@ -28,6 +36,15 @@ pub(crate) type PaymentsPreprocessingResponseRouterData = pub(crate) type PaymentsSessionResponseRouterData = ResponseRouterData; +pub(crate) type AcceptDisputeRouterData = + RouterData; +pub(crate) type SubmitEvidenceRouterData = + RouterData; +pub(crate) type UploadFileRouterData = + RouterData; +pub(crate) type DefendDisputeRouterData = + RouterData; + #[cfg(feature = "payouts")] pub type PayoutsResponseRouterData = ResponseRouterData; diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 7d406530cb0..700c2d7336f 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -1,6 +1,5 @@ pub mod adyen; pub mod adyenplatform; -pub mod checkout; #[cfg(feature = "dummy_connector")] pub mod dummyconnector; pub mod ebanx; @@ -27,33 +26,33 @@ pub use hyperswitch_connectors::connectors::{ bamboraapac::Bamboraapac, bankofamerica, bankofamerica::Bankofamerica, billwerk, billwerk::Billwerk, bitpay, bitpay::Bitpay, bluesnap, bluesnap::Bluesnap, boku, boku::Boku, braintree, braintree::Braintree, cashtocode, cashtocode::Cashtocode, chargebee::Chargebee, - coinbase, coinbase::Coinbase, coingate, coingate::Coingate, cryptopay, cryptopay::Cryptopay, - ctp_mastercard, ctp_mastercard::CtpMastercard, cybersource, cybersource::Cybersource, - datatrans, datatrans::Datatrans, deutschebank, deutschebank::Deutschebank, digitalvirgo, - digitalvirgo::Digitalvirgo, dlocal, dlocal::Dlocal, elavon, elavon::Elavon, fiserv, - fiserv::Fiserv, fiservemea, fiservemea::Fiservemea, fiuu, fiuu::Fiuu, forte, forte::Forte, - getnet, getnet::Getnet, globalpay, globalpay::Globalpay, globepay, globepay::Globepay, - gocardless, gocardless::Gocardless, helcim, helcim::Helcim, iatapay, iatapay::Iatapay, inespay, - inespay::Inespay, itaubank, itaubank::Itaubank, jpmorgan, jpmorgan::Jpmorgan, klarna, - klarna::Klarna, mifinity, mifinity::Mifinity, mollie, mollie::Mollie, multisafepay, - multisafepay::Multisafepay, nexinets, nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, - nomupay, nomupay::Nomupay, noon, noon::Noon, novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, - paybox, paybox::Paybox, payeezy, payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, - placetopay, placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, - prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, - redsys::Redsys, shift4, shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, - taxjar::Taxjar, thunes, thunes::Thunes, tsys, tsys::Tsys, unified_authentication_service, - unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, - wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, - xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, + checkout, checkout::Checkout, coinbase, coinbase::Coinbase, coingate, coingate::Coingate, + cryptopay, cryptopay::Cryptopay, ctp_mastercard, ctp_mastercard::CtpMastercard, cybersource, + cybersource::Cybersource, datatrans, datatrans::Datatrans, deutschebank, + deutschebank::Deutschebank, digitalvirgo, digitalvirgo::Digitalvirgo, dlocal, dlocal::Dlocal, + elavon, elavon::Elavon, fiserv, fiserv::Fiserv, fiservemea, fiservemea::Fiservemea, fiuu, + fiuu::Fiuu, forte, forte::Forte, getnet, getnet::Getnet, globalpay, globalpay::Globalpay, + globepay, globepay::Globepay, gocardless, gocardless::Gocardless, helcim, helcim::Helcim, + iatapay, iatapay::Iatapay, inespay, inespay::Inespay, itaubank, itaubank::Itaubank, jpmorgan, + jpmorgan::Jpmorgan, klarna, klarna::Klarna, mifinity, mifinity::Mifinity, mollie, + mollie::Mollie, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, + nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, novalnet, + novalnet::Novalnet, nuvei, nuvei::Nuvei, paybox, paybox::Paybox, payeezy, payeezy::Payeezy, + payme, payme::Payme, payu, payu::Payu, placetopay, placetopay::Placetopay, powertranz, + powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, + razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, square::Square, + stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, tsys, tsys::Tsys, + unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, + volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, + worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, }; #[cfg(feature = "dummy_connector")] pub use self::dummyconnector::DummyConnector; pub use self::{ - adyen::Adyen, adyenplatform::Adyenplatform, checkout::Checkout, ebanx::Ebanx, - gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, opayo::Opayo, opennode::Opennode, - payone::Payone, paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, - stripe::Stripe, threedsecureio::Threedsecureio, trustpay::Trustpay, - wellsfargopayout::Wellsfargopayout, wise::Wise, + adyen::Adyen, adyenplatform::Adyenplatform, ebanx::Ebanx, gpayments::Gpayments, + netcetera::Netcetera, nmi::Nmi, opayo::Opayo, opennode::Opennode, payone::Payone, + paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, + threedsecureio::Threedsecureio, trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, + wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index dbc50fe0421..55fd6e4caff 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -700,7 +700,6 @@ macro_rules! default_imp_for_new_connector_integration_payment { default_imp_for_new_connector_integration_payment!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -738,7 +737,6 @@ macro_rules! default_imp_for_new_connector_integration_refund { default_imp_for_new_connector_integration_refund!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -770,7 +768,6 @@ macro_rules! default_imp_for_new_connector_integration_connector_access_token { default_imp_for_new_connector_integration_connector_access_token!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -824,7 +821,6 @@ macro_rules! default_imp_for_new_connector_integration_submit_evidence { default_imp_for_new_connector_integration_accept_dispute!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -860,7 +856,6 @@ macro_rules! default_imp_for_new_connector_integration_defend_dispute { default_imp_for_new_connector_integration_defend_dispute!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -880,7 +875,6 @@ default_imp_for_new_connector_integration_defend_dispute!( default_imp_for_new_connector_integration_submit_evidence!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -927,7 +921,6 @@ macro_rules! default_imp_for_new_connector_integration_file_upload { default_imp_for_new_connector_integration_file_upload!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1055,7 +1048,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_create { default_imp_for_new_connector_integration_payouts_create!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1094,7 +1086,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_eligibility { default_imp_for_new_connector_integration_payouts_eligibility!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1133,7 +1124,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_fulfill { default_imp_for_new_connector_integration_payouts_fulfill!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1172,7 +1162,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_cancel { default_imp_for_new_connector_integration_payouts_cancel!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1211,7 +1200,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_quote { default_imp_for_new_connector_integration_payouts_quote!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1250,7 +1238,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient { default_imp_for_new_connector_integration_payouts_recipient!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1289,7 +1276,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_sync { default_imp_for_new_connector_integration_payouts_sync!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1328,7 +1314,6 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient_account default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1365,7 +1350,6 @@ macro_rules! default_imp_for_new_connector_integration_webhook_source_verificati default_imp_for_new_connector_integration_webhook_source_verification!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1493,7 +1477,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_sale { default_imp_for_new_connector_integration_frm_sale!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1532,7 +1515,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_checkout { default_imp_for_new_connector_integration_frm_checkout!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1571,7 +1553,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_transaction { default_imp_for_new_connector_integration_frm_transaction!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1610,7 +1591,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_fulfillment { default_imp_for_new_connector_integration_frm_fulfillment!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1649,7 +1629,6 @@ macro_rules! default_imp_for_new_connector_integration_frm_record_return { default_imp_for_new_connector_integration_frm_record_return!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1685,7 +1664,6 @@ macro_rules! default_imp_for_new_connector_integration_revoking_mandates { default_imp_for_new_connector_integration_revoking_mandates!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1870,7 +1848,6 @@ macro_rules! default_imp_for_new_connector_integration_uas { default_imp_for_new_connector_integration_uas!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index b29d30533d2..53ec0da6167 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -215,7 +215,6 @@ impl default_imp_for_complete_authorize!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -260,7 +259,6 @@ impl default_imp_for_webhook_source_verification!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -308,7 +306,6 @@ impl default_imp_for_create_customer!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -728,7 +725,6 @@ impl default_imp_for_pre_processing_steps!( connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -762,7 +758,6 @@ default_imp_for_post_processing_steps!( connector::Paypal, connector::Stripe, connector::Trustpay, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -788,7 +783,6 @@ macro_rules! default_imp_for_payouts { impl Payouts for connector::DummyConnector {} default_imp_for_payouts!( - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -832,7 +826,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_create!( connector::Adyenplatform, - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -878,7 +871,6 @@ impl default_imp_for_payouts_retrieve!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -929,7 +921,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_eligibility!( connector::Adyenplatform, - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -975,7 +966,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_fulfill!( - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1019,7 +1009,6 @@ impl #[cfg(feature = "payouts")] default_imp_for_payouts_cancel!( connector::Adyenplatform, - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1066,7 +1055,6 @@ impl default_imp_for_payouts_quote!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1114,7 +1102,6 @@ impl default_imp_for_payouts_recipient!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1164,7 +1151,6 @@ impl default_imp_for_payouts_recipient_account!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1212,7 +1198,6 @@ impl default_imp_for_approve!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1261,7 +1246,6 @@ impl default_imp_for_reject!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1413,7 +1397,6 @@ impl default_imp_for_frm_sale!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1462,7 +1445,6 @@ impl default_imp_for_frm_checkout!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1511,7 +1493,6 @@ impl default_imp_for_frm_transaction!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1560,7 +1541,6 @@ impl default_imp_for_frm_fulfillment!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1609,7 +1589,6 @@ impl default_imp_for_frm_record_return!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1656,7 +1635,6 @@ impl default_imp_for_incremental_authorization!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1703,7 +1681,6 @@ impl default_imp_for_revoking_mandates!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1923,7 +1900,6 @@ impl default_imp_for_authorize_session_token!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -1970,7 +1946,6 @@ impl default_imp_for_calculate_tax!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -2017,7 +1992,6 @@ impl default_imp_for_session_update!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -2063,7 +2037,6 @@ impl default_imp_for_post_session_tokens!( connector::Adyen, connector::Adyenplatform, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -2112,7 +2085,6 @@ impl default_imp_for_uas_pre_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -2159,7 +2131,6 @@ impl default_imp_for_uas_post_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -2206,7 +2177,6 @@ impl default_imp_for_uas_authentication!( connector::Adyenplatform, connector::Adyen, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, From e77f6735147566e60500c2ea49734748c25e81e7 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Mon, 17 Feb 2025 15:19:32 +0530 Subject: [PATCH 06/10] chore: Fix formatting --- .../hyperswitch_connectors/src/connectors.rs | 17 ++++++++------- crates/hyperswitch_connectors/src/utils.rs | 3 ++- crates/router/src/connector.rs | 21 ++++++++++--------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 494dbda4a02..d91c2e79f8c 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -82,12 +82,13 @@ pub use self::{ elavon::Elavon, fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, getnet::Getnet, globalpay::Globalpay, globepay::Globepay, gocardless::Gocardless, helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, - klarna::Klarna, mifinity::Mifinity, mollie::Mollie, moneris::Moneris, multisafepay::Multisafepay, - nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, noon::Noon, novalnet::Novalnet, - nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, - placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, - razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, - thunes::Thunes, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, - volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, - zen::Zen, zsl::Zsl, + klarna::Klarna, mifinity::Mifinity, mollie::Mollie, moneris::Moneris, + multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, + noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, + payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, + rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, + taxjar::Taxjar, thunes::Thunes, tsys::Tsys, + unified_authentication_service::UnifiedAuthenticationService, volt::Volt, + wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, + zsl::Zsl, }; diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs index de823186595..424dbdb8557 100644 --- a/crates/hyperswitch_connectors/src/utils.rs +++ b/crates/hyperswitch_connectors/src/utils.rs @@ -32,7 +32,8 @@ use common_utils::{ }; use error_stack::{report, ResultExt}; use hyperswitch_domain_models::{ - address::{Address, AddressDetails, PhoneDetails}, mandates, + address::{Address, AddressDetails, PhoneDetails}, + mandates, network_tokenization::NetworkTokenNumber, payment_method_data::{self, Card, CardDetailsForNetworkTransactionId, PaymentMethodData}, router_data::{ diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 4a99335984d..df0646289ab 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -35,16 +35,17 @@ pub use hyperswitch_connectors::connectors::{ globepay, globepay::Globepay, gocardless, gocardless::Gocardless, helcim, helcim::Helcim, iatapay, iatapay::Iatapay, inespay, inespay::Inespay, itaubank, itaubank::Itaubank, jpmorgan, jpmorgan::Jpmorgan, klarna, klarna::Klarna, mifinity, mifinity::Mifinity, mollie, - mollie::Mollie, moneris, moneris::Moneris, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, - nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, novalnet, - novalnet::Novalnet, nuvei, nuvei::Nuvei, paybox, paybox::Paybox, payeezy, payeezy::Payeezy, - payme, payme::Payme, payu, payu::Payu, placetopay, placetopay::Placetopay, powertranz, - powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, - razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, square::Square, - stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, tsys, tsys::Tsys, - unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, - volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, - worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, + mollie::Mollie, moneris, moneris::Moneris, multisafepay, multisafepay::Multisafepay, nexinets, + nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, + novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, paybox, paybox::Paybox, payeezy, + payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, placetopay, placetopay::Placetopay, + powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, + razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, + square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, tsys, + tsys::Tsys, unified_authentication_service, + unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, + wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, + xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, }; #[cfg(feature = "dummy_connector")] From d3528250d4ea43f1b4b2bde018541b25e154fcd1 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Mon, 17 Feb 2025 16:17:07 +0530 Subject: [PATCH 07/10] refactor(connector): [TRUSTPAY] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 3 +- .../src/connectors}/trustpay.rs | 455 ++++++++---------- .../src/connectors}/trustpay/transformers.rs | 343 +++++++------ .../src/default_implementations.rs | 33 ++ .../src/default_implementations_v2.rs | 22 + crates/hyperswitch_connectors/src/utils.rs | 35 ++ crates/router/src/connector.rs | 8 +- .../connector_integration_v2_impls.rs | 23 - crates/router/src/core/payments/flows.rs | 33 -- 9 files changed, 467 insertions(+), 488 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/trustpay.rs (72%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/trustpay/transformers.rs (86%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index d91c2e79f8c..40d46616a89 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -62,6 +62,7 @@ pub mod square; pub mod stax; pub mod taxjar; pub mod thunes; +pub mod trustpay; pub mod tsys; pub mod unified_authentication_service; pub mod volt; @@ -87,7 +88,7 @@ pub use self::{ noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, - taxjar::Taxjar, thunes::Thunes, tsys::Tsys, + taxjar::Taxjar, thunes::Thunes, trustpay::Trustpay, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, zsl::Zsl, diff --git a/crates/router/src/connector/trustpay.rs b/crates/hyperswitch_connectors/src/connectors/trustpay.rs similarity index 72% rename from crates/router/src/connector/trustpay.rs rename to crates/hyperswitch_connectors/src/connectors/trustpay.rs index 10c71a5d375..b3f2c1f9c3e 100644 --- a/crates/router/src/connector/trustpay.rs +++ b/crates/hyperswitch_connectors/src/connectors/trustpay.rs @@ -1,42 +1,57 @@ pub mod transformers; use base64::Engine; +use common_enums::{enums, PaymentAction}; use common_utils::{ crypto, - errors::ReportSwitchExt, + errors::{CustomResult, ReportSwitchExt}, ext_traits::ByteSliceExt, - request::RequestContent, + request::{Method, Request, RequestBuilder, RequestContent}, types::{AmountConvertor, StringMajorUnit, StringMajorUnitForConnector}, }; use error_stack::{Report, ResultExt}; -use masking::PeekInterface; -use transformers as trustpay; - -use super::utils::{ - self as connector_utils, collect_and_sort_values_by_removing_signature, - get_error_code_error_message_based_on_priority, ConnectorErrorType, ConnectorErrorTypeMapping, - PaymentsPreProcessingData, +use hyperswitch_domain_models::{ + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, + PreProcessing, + }, + router_request_types::{ + AccessTokenRequestData, PaymentMethodTokenizationData, PaymentsAuthorizeData, + PaymentsCancelData, PaymentsCaptureData, PaymentsPreProcessingData, PaymentsSessionData, + PaymentsSyncData, RefundsData, SetupMandateRequestData, + }, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsPreProcessingRouterData, PaymentsSyncRouterData, + RefreshTokenRouterData, RefundSyncRouterData, RefundsRouterData, + }, }; -use crate::{ - configs::settings, - consts, - core::{ - errors::{self, CustomResult}, - payments, +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorRedirectResponse, + ConnectorSpecifications, ConnectorValidation, }, + configs::Connectors, + consts, + disputes::DisputePayload, + errors, events::connector_api_logs::ConnectorEvent, - headers, logger, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, - }, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, - ErrorResponse, Response, + PaymentsAuthorizeType, PaymentsPreProcessingType, PaymentsSyncType, RefreshTokenType, + RefundExecuteType, RefundSyncType, Response, }, - utils::{self, BytesExt}, + webhooks, +}; +use masking::{Mask, PeekInterface}; +use transformers as trustpay; + +use crate::{ + constants::headers, + types::ResponseRouterData, + utils::{self, ConnectorErrorType, PaymentsPreProcessingRequestData}, }; #[derive(Clone)] @@ -58,11 +73,11 @@ where { fn build_headers( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { match req.payment_method { - diesel_models::enums::PaymentMethod::BankRedirect => { + enums::PaymentMethod::BankRedirect => { let token = req .access_token .clone() @@ -104,14 +119,14 @@ impl ConnectorCommon for Trustpay { "application/x-www-form-urlencoded" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.trustpay.base_url.as_ref() } fn get_auth_header( &self, - auth_type: &types::ConnectorAuthType, - ) -> CustomResult)>, errors::ConnectorError> { + auth_type: &ConnectorAuthType, + ) -> CustomResult)>, errors::ConnectorError> { let auth = trustpay::TrustpayAuthType::try_from(auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; Ok(vec![( @@ -135,10 +150,11 @@ impl ConnectorCommon for Trustpay { event_builder.map(|i| i.set_error_response_body(&response_data)); router_env::logger::info!(connector_response=?response_data); let error_list = response_data.errors.clone().unwrap_or_default(); - let option_error_code_message = get_error_code_error_message_based_on_priority( - self.clone(), - error_list.into_iter().map(|errors| errors.into()).collect(), - ); + let option_error_code_message = + utils::get_error_code_error_message_based_on_priority( + self.clone(), + error_list.into_iter().map(|errors| errors.into()).collect(), + ); let reason = response_data.errors.map(|errors| { errors .iter() @@ -165,7 +181,7 @@ impl ConnectorCommon for Trustpay { } Err(error_msg) => { event_builder.map(|event| event.set_error(serde_json::json!({"error": res.response.escape_ascii().to_string(), "status_code": res.status_code}))); - logger::error!(deserialization_error =? error_msg); + router_env::logger::error!(deserialization_error =? error_msg); utils::handle_json_response_deserialization_failure(res, "trustpay") } } @@ -178,33 +194,21 @@ impl api::Payment for Trustpay {} impl api::PaymentToken for Trustpay {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Trustpay +impl ConnectorIntegration + for Trustpay { // Not Implemented (R) } impl api::MandateSetup for Trustpay {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Trustpay +impl ConnectorIntegration + for Trustpay { fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Trustpay".to_string()) .into(), @@ -214,20 +218,15 @@ impl impl api::PaymentVoid for Trustpay {} -impl ConnectorIntegration - for Trustpay -{ -} +impl ConnectorIntegration for Trustpay {} impl api::ConnectorAccessToken for Trustpay {} -impl ConnectorIntegration - for Trustpay -{ +impl ConnectorIntegration for Trustpay { fn get_url( &self, - _req: &types::RefreshTokenRouterData, - connectors: &settings::Connectors, + _req: &RefreshTokenRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}{}", @@ -241,9 +240,9 @@ impl ConnectorIntegration CustomResult)>, errors::ConnectorError> { + req: &RefreshTokenRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let auth = trustpay::TrustpayAuthType::try_from(&req.connector_auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; let auth_value = auth @@ -252,15 +251,14 @@ impl ConnectorIntegration CustomResult { let connector_req = trustpay::TrustpayAuthUpdateRequest::try_from(req)?; Ok(RequestContent::FormUrlEncoded(Box::new(connector_req))) @@ -277,18 +275,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &RefreshTokenRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { let req = Some( - services::RequestBuilder::new() - .method(services::Method::Post) + RequestBuilder::new() + .method(Method::Post) .attach_default_headers() - .headers(types::RefreshTokenType::get_headers(self, req, connectors)?) - .url(&types::RefreshTokenType::get_url(self, req, connectors)?) - .set_body(types::RefreshTokenType::get_request_body( - self, req, connectors, - )?) + .headers(RefreshTokenType::get_headers(self, req, connectors)?) + .url(&RefreshTokenType::get_url(self, req, connectors)?) + .set_body(RefreshTokenType::get_request_body(self, req, connectors)?) .build(), ); Ok(req) @@ -296,10 +292,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: trustpay::TrustpayAuthUpdateResponse = res .response .parse_struct("trustpay TrustpayAuthUpdateResponse") @@ -308,7 +304,7 @@ impl ConnectorIntegration - for Trustpay -{ +impl ConnectorIntegration for Trustpay { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -359,12 +353,12 @@ impl ConnectorIntegration CustomResult { let id = req.request.connector_transaction_id.clone(); match req.payment_method { - diesel_models::enums::PaymentMethod::BankRedirect => Ok(format!( + enums::PaymentMethod::BankRedirect => Ok(format!( "{}{}/{}", connectors.trustpay.base_url_bank_redirects, "api/Payments/Payment", @@ -383,15 +377,15 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) .build(), )) } @@ -406,10 +400,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: trustpay::TrustpayPaymentsResponse = res .response .parse_struct("trustpay PaymentsResponse") @@ -418,7 +412,7 @@ impl ConnectorIntegration - for Trustpay -{ -} +impl ConnectorIntegration for Trustpay {} impl api::PaymentsPreProcessing for Trustpay {} -impl - ConnectorIntegration< - api::PreProcessing, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, - > for Trustpay +impl ConnectorIntegration + for Trustpay { fn get_headers( &self, - req: &types::PaymentsPreProcessingRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsPreProcessingRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![( headers::CONTENT_TYPE.to_string(), - types::PaymentsPreProcessingType::get_content_type(self) + PaymentsPreProcessingType::get_content_type(self) .to_string() .into(), )]; @@ -464,22 +451,21 @@ impl fn get_url( &self, - _req: &types::PaymentsPreProcessingRouterData, - connectors: &settings::Connectors, + _req: &PaymentsPreProcessingRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!("{}{}", self.base_url(connectors), "api/v1/intent")) } fn get_request_body( &self, - req: &types::PaymentsPreProcessingRouterData, - _connectors: &settings::Connectors, + req: &PaymentsPreProcessingRouterData, + _connectors: &Connectors, ) -> CustomResult { let req_currency = req.request.get_currency()?; let req_amount = req.request.get_minor_amount()?; - let amount = - connector_utils::convert_amount(self.amount_converter, req_amount, req_currency)?; + let amount = utils::convert_amount(self.amount_converter, req_amount, req_currency)?; let connector_router_data = trustpay::TrustpayRouterData::try_from((amount, req))?; let connector_req = @@ -489,20 +475,18 @@ impl fn build_request( &self, - req: &types::PaymentsPreProcessingRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsPreProcessingRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { let req = Some( - services::RequestBuilder::new() - .method(services::Method::Post) + RequestBuilder::new() + .method(Method::Post) .attach_default_headers() - .headers(types::PaymentsPreProcessingType::get_headers( + .headers(PaymentsPreProcessingType::get_headers( self, req, connectors, )?) - .url(&types::PaymentsPreProcessingType::get_url( - self, req, connectors, - )?) - .set_body(types::PaymentsPreProcessingType::get_request_body( + .url(&PaymentsPreProcessingType::get_url(self, req, connectors)?) + .set_body(PaymentsPreProcessingType::get_request_body( self, req, connectors, )?) .build(), @@ -512,10 +496,10 @@ impl fn handle_response( &self, - data: &types::PaymentsPreProcessingRouterData, + data: &PaymentsPreProcessingRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: trustpay::TrustpayCreateIntentResponse = res .response .parse_struct("TrustpayCreateIntentResponse") @@ -524,7 +508,7 @@ impl event_builder.map(|i| i.set_response_body(&response)); router_env::logger::info!(connector_response=?response); - types::RouterData::try_from(types::ResponseRouterData { + RouterData::try_from(ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -543,21 +527,16 @@ impl impl api::PaymentSession for Trustpay {} -impl ConnectorIntegration - for Trustpay -{ -} +impl ConnectorIntegration for Trustpay {} impl api::PaymentAuthorize for Trustpay {} -impl ConnectorIntegration - for Trustpay -{ +impl ConnectorIntegration for Trustpay { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -567,11 +546,11 @@ impl ConnectorIntegration CustomResult { match req.payment_method { - diesel_models::enums::PaymentMethod::BankRedirect => Ok(format!( + enums::PaymentMethod::BankRedirect => Ok(format!( "{}{}", connectors.trustpay.base_url_bank_redirects, "api/Payments/Payment" )), @@ -585,10 +564,10 @@ impl ConnectorIntegration CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_amount, req.request.currency, @@ -596,29 +575,23 @@ impl ConnectorIntegration { - Ok(RequestContent::Json(Box::new(connector_req))) - } + enums::PaymentMethod::BankRedirect => Ok(RequestContent::Json(Box::new(connector_req))), _ => Ok(RequestContent::FormUrlEncoded(Box::new(connector_req))), } } fn build_request( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -627,10 +600,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: trustpay::TrustpayPaymentsResponse = res .response .parse_struct("trustpay PaymentsResponse") @@ -639,7 +612,7 @@ impl ConnectorIntegration - for Trustpay -{ +impl ConnectorIntegration for Trustpay { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -677,11 +648,11 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { match req.payment_method { - diesel_models::enums::PaymentMethod::BankRedirect => Ok(format!( + enums::PaymentMethod::BankRedirect => Ok(format!( "{}{}{}{}", connectors.trustpay.base_url_bank_redirects, "api/Payments/Payment/", @@ -694,10 +665,10 @@ impl ConnectorIntegration, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = utils::convert_amount( self.amount_converter, req.request.minor_refund_amount, req.request.currency, @@ -706,38 +677,32 @@ impl ConnectorIntegration { - Ok(RequestContent::Json(Box::new(connector_req))) - } + enums::PaymentMethod::BankRedirect => Ok(RequestContent::Json(Box::new(connector_req))), _ => Ok(RequestContent::FormUrlEncoded(Box::new(connector_req))), } } fn build_request( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult, errors::ConnectorError> { + ) -> CustomResult, errors::ConnectorError> { let response: trustpay::RefundResponse = res .response .parse_struct("trustpay RefundResponse") @@ -746,7 +711,7 @@ impl ConnectorIntegration for Trustpay { +impl ConnectorIntegration for Trustpay { fn get_headers( &self, - req: &types::RefundSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -778,8 +743,8 @@ impl ConnectorIntegration CustomResult { let id = req .request @@ -787,7 +752,7 @@ impl ConnectorIntegration Ok(format!( + enums::PaymentMethod::BankRedirect => Ok(format!( "{}{}/{}", connectors.trustpay.base_url_bank_redirects, "api/Payments/Payment", id )), @@ -802,25 +767,25 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::RefundSyncRouterData, + data: &RefundSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: trustpay::RefundResponse = res .response .parse_struct("trustpay RefundResponse") @@ -829,7 +794,7 @@ impl ConnectorIntegration, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult { let details: trustpay::TrustpayWebhookResponse = request .body @@ -884,8 +849,8 @@ impl api::IncomingWebhook for Trustpay { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let response: trustpay::TrustpayWebhookResponse = request .body .parse_struct("TrustpayWebhookResponse") @@ -916,19 +881,19 @@ impl api::IncomingWebhook for Trustpay { ( trustpay::CreditDebitIndicator::Dbit | trustpay::CreditDebitIndicator::Crdt, trustpay::WebhookStatus::Unknown, - ) => Ok(api::IncomingWebhookEvent::EventNotSupported), + ) => Ok(api_models::webhooks::IncomingWebhookEvent::EventNotSupported), (trustpay::CreditDebitIndicator::Crdt, trustpay::WebhookStatus::Refunded) => { - Ok(api::IncomingWebhookEvent::EventNotSupported) + Ok(api_models::webhooks::IncomingWebhookEvent::EventNotSupported) } (trustpay::CreditDebitIndicator::Crdt, trustpay::WebhookStatus::Chargebacked) => { - Ok(api::IncomingWebhookEvent::EventNotSupported) + Ok(api_models::webhooks::IncomingWebhookEvent::EventNotSupported) } } } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let details: trustpay::TrustpayWebhookResponse = request .body @@ -939,14 +904,14 @@ impl api::IncomingWebhook for Trustpay { fn get_webhook_source_verification_algorithm( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::HmacSha256)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let response: trustpay::TrustpayWebhookResponse = request @@ -959,7 +924,7 @@ impl api::IncomingWebhook for Trustpay { fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -968,16 +933,18 @@ impl api::IncomingWebhook for Trustpay { .parse_struct("TrustpayWebhookResponse") .switch()?; let response: serde_json::Value = request.body.parse_struct("Webhook Value").switch()?; - let values = - collect_and_sort_values_by_removing_signature(&response, &trustpay_response.signature); + let values = utils::collect_and_sort_values_by_removing_signature( + &response, + &trustpay_response.signature, + ); let payload = values.join("/"); Ok(payload.into_bytes()) } fn get_dispute_details( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let trustpay_response: trustpay::TrustpayWebhookResponse = request .body .parse_struct("TrustpayWebhookResponse") @@ -988,7 +955,7 @@ impl api::IncomingWebhook for Trustpay { .references .payment_id .ok_or(errors::ConnectorError::WebhookReferenceIdNotFound)?; - Ok(api::disputes::DisputePayload { + Ok(DisputePayload { amount: payment_info.amount.amount.to_string(), currency: payment_info.amount.currency, dispute_stage: api_models::enums::DisputeStage::Dispute, @@ -1003,24 +970,24 @@ impl api::IncomingWebhook for Trustpay { } } -impl services::ConnectorRedirectResponse for Trustpay { +impl ConnectorRedirectResponse for Trustpay { fn get_flow_type( &self, _query_params: &str, _json_payload: Option, - action: services::PaymentAction, - ) -> CustomResult { + action: PaymentAction, + ) -> CustomResult { match action { - services::PaymentAction::PSync - | services::PaymentAction::CompleteAuthorize - | services::PaymentAction::PaymentAuthenticateCompleteAuthorize => { - Ok(payments::CallConnectorAction::Trigger) + PaymentAction::PSync + | PaymentAction::CompleteAuthorize + | PaymentAction::PaymentAuthenticateCompleteAuthorize => { + Ok(enums::CallConnectorAction::Trigger) } } } } -impl ConnectorErrorTypeMapping for Trustpay { +impl utils::ConnectorErrorTypeMapping for Trustpay { fn get_connector_error_type( &self, error_code: String, diff --git a/crates/router/src/connector/trustpay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/trustpay/transformers.rs similarity index 86% rename from crates/router/src/connector/trustpay/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/trustpay/transformers.rs index b7cb7a91f20..52181738579 100644 --- a/crates/router/src/connector/trustpay/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/trustpay/transformers.rs @@ -1,24 +1,37 @@ use std::collections::HashMap; +use api_models::payments::SessionToken; +use common_enums::enums; use common_utils::{ errors::CustomResult, pii::{self, Email}, + request::Method, types::StringMajorUnit, }; use error_stack::{report, ResultExt}; +use hyperswitch_domain_models::{ + payment_method_data::{BankRedirectData, Card, PaymentMethodData}, + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_request_types::{BrowserInformation, PaymentsPreProcessingData, ResponseId}, + router_response_types::{ + PaymentsResponseData, PreprocessingResponseId, RedirectForm, RefundsResponseData, + }, + types::{ + PaymentsAuthorizeRouterData, PaymentsPreProcessingRouterData, RefreshTokenRouterData, + RefundsRouterData, + }, +}; +use hyperswitch_interfaces::{consts, errors}; use masking::{ExposeInterface, PeekInterface, Secret}; use reqwest::Url; use serde::{Deserialize, Serialize}; use crate::{ - connector::utils::{ + types::{RefundsResponseRouterData, ResponseRouterData}, + utils::{ self, AddressDetailsData, BrowserInformationData, CardData, PaymentsAuthorizeRequestData, - PaymentsPreProcessingData, RouterData, + PaymentsPreProcessingRequestData, RouterData as OtherRouterData, }, - consts, - core::errors, - services, - types::{self, domain, storage::enums, BrowserInformation}, }; type Error = error_stack::Report; @@ -45,10 +58,10 @@ pub struct TrustpayAuthType { pub(super) secret_key: Secret, } -impl TryFrom<&types::ConnectorAuthType> for TrustpayAuthType { +impl TryFrom<&ConnectorAuthType> for TrustpayAuthType { type Error = Error; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { - if let types::ConnectorAuthType::SignatureKey { + fn try_from(auth_type: &ConnectorAuthType) -> Result { + if let ConnectorAuthType::SignatureKey { api_key, key1, api_secret, @@ -214,28 +227,28 @@ pub struct TrustpayMandatoryParams { pub billing_first_name: Secret, } -impl TryFrom<&domain::BankRedirectData> for TrustpayPaymentMethod { +impl TryFrom<&BankRedirectData> for TrustpayPaymentMethod { type Error = Error; - fn try_from(value: &domain::BankRedirectData) -> Result { + fn try_from(value: &BankRedirectData) -> Result { match value { - domain::BankRedirectData::Giropay { .. } => Ok(Self::Giropay), - domain::BankRedirectData::Eps { .. } => Ok(Self::Eps), - domain::BankRedirectData::Ideal { .. } => Ok(Self::IDeal), - domain::BankRedirectData::Sofort { .. } => Ok(Self::Sofort), - domain::BankRedirectData::Blik { .. } => Ok(Self::Blik), - domain::BankRedirectData::BancontactCard { .. } - | domain::BankRedirectData::Bizum {} - | domain::BankRedirectData::Interac { .. } - | domain::BankRedirectData::OnlineBankingCzechRepublic { .. } - | domain::BankRedirectData::OnlineBankingFinland { .. } - | domain::BankRedirectData::OnlineBankingPoland { .. } - | domain::BankRedirectData::OnlineBankingSlovakia { .. } - | domain::BankRedirectData::OpenBankingUk { .. } - | domain::BankRedirectData::Przelewy24 { .. } - | domain::BankRedirectData::Trustly { .. } - | domain::BankRedirectData::OnlineBankingFpx { .. } - | domain::BankRedirectData::OnlineBankingThailand { .. } - | domain::BankRedirectData::LocalBankRedirect {} => { + BankRedirectData::Giropay { .. } => Ok(Self::Giropay), + BankRedirectData::Eps { .. } => Ok(Self::Eps), + BankRedirectData::Ideal { .. } => Ok(Self::IDeal), + BankRedirectData::Sofort { .. } => Ok(Self::Sofort), + BankRedirectData::Blik { .. } => Ok(Self::Blik), + BankRedirectData::BancontactCard { .. } + | BankRedirectData::Bizum {} + | BankRedirectData::Interac { .. } + | BankRedirectData::OnlineBankingCzechRepublic { .. } + | BankRedirectData::OnlineBankingFinland { .. } + | BankRedirectData::OnlineBankingPoland { .. } + | BankRedirectData::OnlineBankingSlovakia { .. } + | BankRedirectData::OpenBankingUk { .. } + | BankRedirectData::Przelewy24 { .. } + | BankRedirectData::Trustly { .. } + | BankRedirectData::OnlineBankingFpx { .. } + | BankRedirectData::OnlineBankingThailand { .. } + | BankRedirectData::LocalBankRedirect {} => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("trustpay"), ) @@ -246,7 +259,7 @@ impl TryFrom<&domain::BankRedirectData> for TrustpayPaymentMethod { } fn get_mandatory_fields( - item: &types::PaymentsAuthorizeRouterData, + item: &PaymentsAuthorizeRouterData, ) -> Result { let billing_address = item .get_billing()? @@ -263,11 +276,11 @@ fn get_mandatory_fields( } fn get_card_request_data( - item: &types::PaymentsAuthorizeRouterData, + item: &PaymentsAuthorizeRouterData, browser_info: &BrowserInformation, params: TrustpayMandatoryParams, amount: StringMajorUnit, - ccard: &domain::payments::Card, + ccard: &Card, return_url: String, ) -> Result { let email = item.request.get_email()?; @@ -321,7 +334,7 @@ fn get_full_name( } fn get_debtor_info( - item: &types::PaymentsAuthorizeRouterData, + item: &PaymentsAuthorizeRouterData, pm: TrustpayPaymentMethod, params: TrustpayMandatoryParams, ) -> CustomResult, errors::ConnectorError> { @@ -343,8 +356,8 @@ fn get_debtor_info( } fn get_bank_redirection_request_data( - item: &types::PaymentsAuthorizeRouterData, - bank_redirection_data: &domain::BankRedirectData, + item: &PaymentsAuthorizeRouterData, + bank_redirection_data: &BankRedirectData, params: TrustpayMandatoryParams, amount: StringMajorUnit, auth: TrustpayAuthType, @@ -376,10 +389,10 @@ fn get_bank_redirection_request_data( Ok(payment_request) } -impl TryFrom<&TrustpayRouterData<&types::PaymentsAuthorizeRouterData>> for TrustpayPaymentsRequest { +impl TryFrom<&TrustpayRouterData<&PaymentsAuthorizeRouterData>> for TrustpayPaymentsRequest { type Error = Error; fn try_from( - item: &TrustpayRouterData<&types::PaymentsAuthorizeRouterData>, + item: &TrustpayRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let browser_info = item .router_data @@ -408,7 +421,7 @@ impl TryFrom<&TrustpayRouterData<&types::PaymentsAuthorizeRouterData>> for Trust let auth = TrustpayAuthType::try_from(&item.router_data.connector_auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; match item.router_data.request.payment_method_data { - domain::PaymentMethodData::Card(ref ccard) => Ok(get_card_request_data( + PaymentMethodData::Card(ref ccard) => Ok(get_card_request_data( item.router_data, &default_browser_info, params, @@ -416,7 +429,7 @@ impl TryFrom<&TrustpayRouterData<&types::PaymentsAuthorizeRouterData>> for Trust ccard, item.router_data.request.get_router_return_url()?, )?), - domain::PaymentMethodData::BankRedirect(ref bank_redirection_data) => { + PaymentMethodData::BankRedirect(ref bank_redirection_data) => { get_bank_redirection_request_data( item.router_data, bank_redirection_data, @@ -425,23 +438,23 @@ impl TryFrom<&TrustpayRouterData<&types::PaymentsAuthorizeRouterData>> for Trust auth, ) } - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::Wallet(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::Wallet(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( utils::get_unimplemented_payment_method_error_message("trustpay"), ) @@ -667,18 +680,12 @@ pub enum TrustpayPaymentsResponse { WebhookResponse(Box), } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = Error; fn try_from( - item: types::ResponseRouterData< - F, - TrustpayPaymentsResponse, - T, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { let (status, error, payment_response_data) = get_trustpay_response(item.response, item.http_code)?; @@ -696,8 +703,8 @@ fn handle_cards_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { @@ -707,15 +714,13 @@ fn handle_cards_response( )?; let form_fields = response.redirect_params.unwrap_or_default(); - let redirection_data = response - .redirect_url - .map(|url| services::RedirectForm::Form { - endpoint: url.to_string(), - method: services::Method::Post, - form_fields, - }); + let redirection_data = response.redirect_url.map(|url| RedirectForm::Form { + endpoint: url.to_string(), + method: Method::Post, + form_fields, + }); let error = if msg.is_some() { - Some(types::ErrorResponse { + Some(ErrorResponse { code: response .payment_status .unwrap_or_else(|| consts::NO_ERROR_CODE.to_string()), @@ -730,8 +735,8 @@ fn handle_cards_response( } else { None }; - let payment_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(response.instance_id.clone()), + let payment_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(response.instance_id.clone()), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(None), connector_metadata: None, @@ -748,20 +753,18 @@ fn handle_bank_redirects_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { let status = enums::AttemptStatus::AuthenticationPending; let error = None; - let payment_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( - response.payment_request_id.to_string(), - ), - redirection_data: Box::new(Some(services::RedirectForm::from(( + let payment_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(response.payment_request_id.to_string()), + redirection_data: Box::new(Some(RedirectForm::from(( response.gateway_url, - services::Method::Get, + Method::Get, )))), mandate_reference: Box::new(None), connector_metadata: None, @@ -779,13 +782,13 @@ fn handle_bank_redirects_error_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { let status = enums::AttemptStatus::AuthorizationFailed; - let error = Some(types::ErrorResponse { + let error = Some(ErrorResponse { code: response.payment_result_info.result_code.to_string(), // message vary for the same code, so relying on code alone as it is unique message: response.payment_result_info.result_code.to_string(), @@ -794,8 +797,8 @@ fn handle_bank_redirects_error_response( attempt_status: None, connector_transaction_id: None, }); - let payment_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::NoResponseId, + let payment_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::NoResponseId, redirection_data: Box::new(None), mandate_reference: Box::new(None), connector_metadata: None, @@ -813,8 +816,8 @@ fn handle_bank_redirects_sync_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { @@ -824,7 +827,7 @@ fn handle_bank_redirects_sync_response( .payment_information .status_reason_information .unwrap_or_default(); - Some(types::ErrorResponse { + Some(ErrorResponse { code: reason_info .reason .code @@ -849,8 +852,8 @@ fn handle_bank_redirects_sync_response( } else { None }; - let payment_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + let payment_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( response .payment_information .references @@ -874,8 +877,8 @@ pub fn handle_webhook_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { @@ -884,7 +887,7 @@ pub fn handle_webhook_response( let reason_info = payment_information .status_reason_information .unwrap_or_default(); - Some(types::ErrorResponse { + Some(ErrorResponse { code: reason_info .reason .code @@ -903,8 +906,8 @@ pub fn handle_webhook_response( } else { None }; - let payment_response_data = types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::NoResponseId, + let payment_response_data = PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::NoResponseId, redirection_data: Box::new(None), mandate_reference: Box::new(None), connector_metadata: None, @@ -922,8 +925,8 @@ pub fn get_trustpay_response( ) -> CustomResult< ( enums::AttemptStatus, - Option, - types::PaymentsResponseData, + Option, + PaymentsResponseData, ), errors::ConnectorError, > { @@ -951,9 +954,9 @@ pub struct TrustpayAuthUpdateRequest { pub grant_type: String, } -impl TryFrom<&types::RefreshTokenRouterData> for TrustpayAuthUpdateRequest { +impl TryFrom<&RefreshTokenRouterData> for TrustpayAuthUpdateRequest { type Error = Error; - fn try_from(_item: &types::RefreshTokenRouterData) -> Result { + fn try_from(_item: &RefreshTokenRouterData) -> Result { Ok(Self { grant_type: "client_credentials".to_string(), }) @@ -983,23 +986,23 @@ pub struct TrustpayAccessTokenErrorResponse { pub result_info: ResultInfo, } -impl TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = Error; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { match (item.response.access_token, item.response.expires_in) { (Some(access_token), Some(expires_in)) => Ok(Self { - response: Ok(types::AccessToken { + response: Ok(AccessToken { token: access_token, expires: expires_in, }), ..item.data }), _ => Ok(Self { - response: Err(types::ErrorResponse { + response: Err(ErrorResponse { code: item.response.result_info.result_code.to_string(), // message vary for the same code, so relying on code alone as it is unique message: item.response.result_info.result_code.to_string(), @@ -1026,26 +1029,26 @@ pub struct TrustpayCreateIntentRequest { pub reference: String, } -impl TryFrom<&TrustpayRouterData<&types::PaymentsPreProcessingRouterData>> +impl TryFrom<&TrustpayRouterData<&PaymentsPreProcessingRouterData>> for TrustpayCreateIntentRequest { type Error = Error; fn try_from( - item: &TrustpayRouterData<&types::PaymentsPreProcessingRouterData>, + item: &TrustpayRouterData<&PaymentsPreProcessingRouterData>, ) -> Result { let is_apple_pay = item .router_data .request .payment_method_type .as_ref() - .map(|pmt| matches!(pmt, diesel_models::enums::PaymentMethodType::ApplePay)); + .map(|pmt| matches!(pmt, enums::PaymentMethodType::ApplePay)); let is_google_pay = item .router_data .request .payment_method_type .as_ref() - .map(|pmt| matches!(pmt, diesel_models::enums::PaymentMethodType::GooglePay)); + .map(|pmt| matches!(pmt, enums::PaymentMethodType::GooglePay)); let currency = item.router_data.request.get_currency()?; let amount = item.amount.to_owned(); @@ -1161,21 +1164,21 @@ pub struct ApplePayTotalInfo { impl TryFrom< - types::ResponseRouterData< + ResponseRouterData< F, TrustpayCreateIntentResponse, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, + PaymentsPreProcessingData, + PaymentsResponseData, >, - > for types::RouterData + > for RouterData { type Error = Error; fn try_from( - item: types::ResponseRouterData< + item: ResponseRouterData< F, TrustpayCreateIntentResponse, - types::PaymentsPreProcessingData, - types::PaymentsResponseData, + PaymentsPreProcessingData, + PaymentsResponseData, >, ) -> Result { let create_intent_response = item.response.init_result_data.to_owned(); @@ -1185,11 +1188,11 @@ impl match (pmt, create_intent_response) { ( - diesel_models::enums::PaymentMethodType::ApplePay, + enums::PaymentMethodType::ApplePay, InitResultData::AppleInitResultData(apple_pay_response), ) => get_apple_pay_session(instance_id, &secrets, apple_pay_response, item), ( - diesel_models::enums::PaymentMethodType::GooglePay, + enums::PaymentMethodType::GooglePay, InitResultData::GoogleInitResultData(google_pay_response), ) => get_google_pay_session(instance_id, &secrets, google_pay_response, item), _ => Err(report!(errors::ConnectorError::InvalidWallet)), @@ -1201,21 +1204,13 @@ pub fn get_apple_pay_session( instance_id: String, secrets: &SdkSecretInfo, apple_pay_init_result: TrustpayApplePayResponse, - item: types::ResponseRouterData< - F, - TrustpayCreateIntentResponse, - T, - types::PaymentsResponseData, - >, -) -> Result< - types::RouterData, - error_stack::Report, -> { - Ok(types::RouterData { - response: Ok(types::PaymentsResponseData::PreProcessingResponse { + item: ResponseRouterData, +) -> Result, error_stack::Report> { + Ok(RouterData { + response: Ok(PaymentsResponseData::PreProcessingResponse { connector_metadata: None, - pre_processing_id: types::PreprocessingResponseId::ConnectorTransactionId(instance_id), - session_token: Some(types::api::SessionToken::ApplePay(Box::new( + pre_processing_id: PreprocessingResponseId::ConnectorTransactionId(instance_id), + session_token: Some(SessionToken::ApplePay(Box::new( api_models::payments::ApplepaySessionTokenResponse { session_token_data: Some( api_models::payments::ApplePaySessionResponse::ThirdPartySdk( @@ -1252,7 +1247,7 @@ pub fn get_apple_pay_session( connector_response_reference_id: None, }), // We don't get status from TrustPay but status should be AuthenticationPending by default for session response - status: diesel_models::enums::AttemptStatus::AuthenticationPending, + status: enums::AttemptStatus::AuthenticationPending, ..item.data }) } @@ -1261,21 +1256,13 @@ pub fn get_google_pay_session( instance_id: String, secrets: &SdkSecretInfo, google_pay_init_result: TrustpayGooglePayResponse, - item: types::ResponseRouterData< - F, - TrustpayCreateIntentResponse, - T, - types::PaymentsResponseData, - >, -) -> Result< - types::RouterData, - error_stack::Report, -> { - Ok(types::RouterData { - response: Ok(types::PaymentsResponseData::PreProcessingResponse { + item: ResponseRouterData, +) -> Result, error_stack::Report> { + Ok(RouterData { + response: Ok(PaymentsResponseData::PreProcessingResponse { connector_metadata: None, - pre_processing_id: types::PreprocessingResponseId::ConnectorTransactionId(instance_id), - session_token: Some(types::api::SessionToken::GooglePay(Box::new( + pre_processing_id: PreprocessingResponseId::ConnectorTransactionId(instance_id), + session_token: Some(SessionToken::GooglePay(Box::new( api_models::payments::GpaySessionTokenResponse::GooglePaySession( api_models::payments::GooglePaySessionResponse { connector: "trustpay".to_string(), @@ -1305,7 +1292,7 @@ pub fn get_google_pay_session( connector_response_reference_id: None, }), // We don't get status from TrustPay but status should be AuthenticationPending by default for session response - status: diesel_models::enums::AttemptStatus::AuthenticationPending, + status: enums::AttemptStatus::AuthenticationPending, ..item.data }) } @@ -1416,14 +1403,12 @@ pub enum TrustpayRefundRequest { BankRedirectRefund(Box), } -impl TryFrom<&TrustpayRouterData<&types::RefundsRouterData>> for TrustpayRefundRequest { +impl TryFrom<&TrustpayRouterData<&RefundsRouterData>> for TrustpayRefundRequest { type Error = Error; - fn try_from( - item: &TrustpayRouterData<&types::RefundsRouterData>, - ) -> Result { + fn try_from(item: &TrustpayRouterData<&RefundsRouterData>) -> Result { let amount = item.amount.to_owned(); match item.router_data.payment_method { - diesel_models::enums::PaymentMethod::BankRedirect => { + enums::PaymentMethod::BankRedirect => { let auth = TrustpayAuthType::try_from(&item.router_data.connector_auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; Ok(Self::BankRedirectRefund(Box::new( @@ -1484,11 +1469,10 @@ pub enum RefundResponse { fn handle_cards_refund_response( response: CardsRefundResponse, status_code: u16, -) -> CustomResult<(Option, types::RefundsResponseData), errors::ConnectorError> -{ +) -> CustomResult<(Option, RefundsResponseData), errors::ConnectorError> { let (refund_status, msg) = get_refund_status(&response.payment_status)?; let error = if msg.is_some() { - Some(types::ErrorResponse { + Some(ErrorResponse { code: response.payment_status, message: msg .clone() @@ -1501,7 +1485,7 @@ fn handle_cards_refund_response( } else { None }; - let refund_response_data = types::RefundsResponseData { + let refund_response_data = RefundsResponseData { connector_refund_id: response.instance_id, refund_status, }; @@ -1511,12 +1495,11 @@ fn handle_cards_refund_response( fn handle_webhooks_refund_response( response: WebhookPaymentInformation, status_code: u16, -) -> CustomResult<(Option, types::RefundsResponseData), errors::ConnectorError> -{ - let refund_status = diesel_models::enums::RefundStatus::try_from(response.status)?; +) -> CustomResult<(Option, RefundsResponseData), errors::ConnectorError> { + let refund_status = enums::RefundStatus::try_from(response.status)?; let error = if utils::is_refund_failure(refund_status) { let reason_info = response.status_reason_information.unwrap_or_default(); - Some(types::ErrorResponse { + Some(ErrorResponse { code: reason_info .reason .code @@ -1535,7 +1518,7 @@ fn handle_webhooks_refund_response( } else { None }; - let refund_response_data = types::RefundsResponseData { + let refund_response_data = RefundsResponseData { connector_refund_id: response .references .payment_request_id @@ -1548,10 +1531,10 @@ fn handle_webhooks_refund_response( fn handle_bank_redirects_refund_response( response: BankRedirectRefundResponse, status_code: u16, -) -> (Option, types::RefundsResponseData) { +) -> (Option, RefundsResponseData) { let (refund_status, msg) = get_refund_status_from_result_info(response.result_info.result_code); let error = if msg.is_some() { - Some(types::ErrorResponse { + Some(ErrorResponse { code: response.result_info.result_code.to_string(), // message vary for the same code, so relying on code alone as it is unique message: response.result_info.result_code.to_string(), @@ -1563,7 +1546,7 @@ fn handle_bank_redirects_refund_response( } else { None }; - let refund_response_data = types::RefundsResponseData { + let refund_response_data = RefundsResponseData { connector_refund_id: response.payment_request_id.to_string(), refund_status, }; @@ -1573,14 +1556,14 @@ fn handle_bank_redirects_refund_response( fn handle_bank_redirects_refund_sync_response( response: SyncResponseBankRedirect, status_code: u16, -) -> (Option, types::RefundsResponseData) { +) -> (Option, RefundsResponseData) { let refund_status = enums::RefundStatus::from(response.payment_information.status); let error = if utils::is_refund_failure(refund_status) { let reason_info = response .payment_information .status_reason_information .unwrap_or_default(); - Some(types::ErrorResponse { + Some(ErrorResponse { code: reason_info .reason .code @@ -1599,7 +1582,7 @@ fn handle_bank_redirects_refund_sync_response( } else { None }; - let refund_response_data = types::RefundsResponseData { + let refund_response_data = RefundsResponseData { connector_refund_id: response.payment_information.references.payment_request_id, refund_status, }; @@ -1609,8 +1592,8 @@ fn handle_bank_redirects_refund_sync_response( fn handle_bank_redirects_refund_sync_error_response( response: ErrorResponseBankRedirect, status_code: u16, -) -> (Option, types::RefundsResponseData) { - let error = Some(types::ErrorResponse { +) -> (Option, RefundsResponseData) { + let error = Some(ErrorResponse { code: response.payment_result_info.result_code.to_string(), // message vary for the same code, so relying on code alone as it is unique message: response.payment_result_info.result_code.to_string(), @@ -1620,20 +1603,16 @@ fn handle_bank_redirects_refund_sync_error_response( connector_transaction_id: None, }); //unreachable case as we are sending error as Some() - let refund_response_data = types::RefundsResponseData { + let refund_response_data = RefundsResponseData { connector_refund_id: "".to_string(), refund_status: enums::RefundStatus::Failure, }; (error, refund_response_data) } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = Error; - fn try_from( - item: types::RefundsResponseRouterData, - ) -> Result { + fn try_from(item: RefundsResponseRouterData) -> Result { let (error, response) = match item.response { RefundResponse::CardsRefund(response) => { handle_cards_refund_response(*response, item.http_code)? @@ -1773,7 +1752,7 @@ impl TryFrom for enums::AttemptStatus { } } -impl TryFrom for diesel_models::enums::RefundStatus { +impl TryFrom for enums::RefundStatus { type Error = errors::ConnectorError; fn try_from(item: WebhookStatus) -> Result { match item { diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index 2ee2cd9af23..f91f578b7c9 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -158,6 +158,7 @@ default_imp_for_authorize_session_token!( connectors::UnifiedAuthenticationService, connectors::Volt, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Worldline, connectors::Worldpay, @@ -245,6 +246,7 @@ default_imp_for_calculate_tax!( connectors::Stax, connectors::Square, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Volt, @@ -341,6 +343,7 @@ default_imp_for_session_update!( connectors::Powertranz, connectors::Prophetpay, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Deutschebank, connectors::Volt, @@ -428,6 +431,7 @@ default_imp_for_post_session_tokens!( connectors::Powertranz, connectors::Prophetpay, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Deutschebank, @@ -500,6 +504,7 @@ default_imp_for_complete_authorize!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Wellsfargo, @@ -589,6 +594,7 @@ default_imp_for_incremental_authorization!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -677,6 +683,7 @@ default_imp_for_create_customer!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -928,6 +935,7 @@ default_imp_for_post_processing_steps!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1019,6 +1027,7 @@ default_imp_for_approve!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1110,6 +1119,7 @@ default_imp_for_reject!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1201,6 +1211,7 @@ default_imp_for_webhook_source_verification!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1292,6 +1303,7 @@ default_imp_for_accept_dispute!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1382,6 +1394,7 @@ default_imp_for_submit_evidence!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1472,6 +1485,7 @@ default_imp_for_defend_dispute!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1571,6 +1585,7 @@ default_imp_for_file_upload!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1653,6 +1668,7 @@ default_imp_for_payouts!( connectors::Square, connectors::Stax, connectors::Taxjar, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Volt, @@ -1746,6 +1762,7 @@ default_imp_for_payouts_create!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1839,6 +1856,7 @@ default_imp_for_payouts_retrieve!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1932,6 +1950,7 @@ default_imp_for_payouts_eligibility!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2024,6 +2043,7 @@ default_imp_for_payouts_fulfill!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2117,6 +2137,7 @@ default_imp_for_payouts_cancel!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2210,6 +2231,7 @@ default_imp_for_payouts_quote!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2303,6 +2325,7 @@ default_imp_for_payouts_recipient!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2396,6 +2419,7 @@ default_imp_for_payouts_recipient_account!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2489,6 +2513,7 @@ default_imp_for_frm_sale!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2582,6 +2607,7 @@ default_imp_for_frm_checkout!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2675,6 +2701,7 @@ default_imp_for_frm_transaction!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2768,6 +2795,7 @@ default_imp_for_frm_fulfillment!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2861,6 +2889,7 @@ default_imp_for_frm_record_return!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2949,6 +2978,7 @@ default_imp_for_revoking_mandates!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -3040,6 +3070,7 @@ default_imp_for_uas_pre_authentication!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Worldline, connectors::Worldpay, @@ -3129,6 +3160,7 @@ default_imp_for_uas_post_authentication!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Worldline, connectors::Worldpay, @@ -3218,6 +3250,7 @@ default_imp_for_uas_authentication!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Wellsfargo, connectors::Worldline, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index bf3a44b9b9d..650455cdf47 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -268,6 +268,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -360,6 +361,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Wellsfargo, @@ -447,6 +449,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -539,6 +542,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -630,6 +634,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -722,6 +727,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -824,6 +830,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -918,6 +925,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1012,6 +1020,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1106,6 +1115,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1200,6 +1210,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1294,6 +1305,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1388,6 +1400,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1482,6 +1495,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1576,6 +1590,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1668,6 +1683,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1762,6 +1778,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1856,6 +1873,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -1950,6 +1968,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2044,6 +2063,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2138,6 +2158,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, @@ -2229,6 +2250,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::UnifiedAuthenticationService, connectors::Worldline, diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs index 424dbdb8557..a77add7f1f5 100644 --- a/crates/hyperswitch_connectors/src/utils.rs +++ b/crates/hyperswitch_connectors/src/utils.rs @@ -4501,6 +4501,41 @@ pub fn get_mandate_details( .transpose() } +pub fn collect_values_by_removing_signature(value: &Value, signature: &String) -> Vec { + match value { + Value::Null => vec!["null".to_owned()], + Value::Bool(b) => vec![b.to_string()], + Value::Number(n) => match n.as_f64() { + Some(f) => vec![format!("{f:.2}")], + None => vec![n.to_string()], + }, + Value::String(s) => { + if signature == s { + vec![] + } else { + vec![s.clone()] + } + } + Value::Array(arr) => arr + .iter() + .flat_map(|v| collect_values_by_removing_signature(v, signature)) + .collect(), + Value::Object(obj) => obj + .values() + .flat_map(|v| collect_values_by_removing_signature(v, signature)) + .collect(), + } +} + +pub fn collect_and_sort_values_by_removing_signature( + value: &Value, + signature: &String, +) -> Vec { + let mut values = collect_values_by_removing_signature(value, signature); + values.sort(); + values +} + #[derive(Debug, strum::Display, Eq, PartialEq, Hash)] pub enum PaymentMethodDataType { Card, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index df0646289ab..c8b1b7e2fc8 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -15,7 +15,6 @@ pub mod riskified; pub mod signifyd; pub mod stripe; pub mod threedsecureio; -pub mod trustpay; pub mod utils; pub mod wellsfargopayout; pub mod wise; @@ -41,8 +40,8 @@ pub use hyperswitch_connectors::connectors::{ payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, placetopay, placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, - square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, tsys, - tsys::Tsys, unified_authentication_service, + square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, trustpay, + trustpay::Trustpay, tsys, tsys::Tsys, unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, @@ -54,6 +53,5 @@ pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, ebanx::Ebanx, gpayments::Gpayments, netcetera::Netcetera, nmi::Nmi, opayo::Opayo, opennode::Opennode, payone::Payone, paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, - threedsecureio::Threedsecureio, trustpay::Trustpay, wellsfargopayout::Wellsfargopayout, - wise::Wise, + threedsecureio::Threedsecureio, wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index c7cf8a40c52..b6f9ee16612 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -711,7 +711,6 @@ default_imp_for_new_connector_integration_payment!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wellsfargopayout, connector::Wise, @@ -748,7 +747,6 @@ default_imp_for_new_connector_integration_refund!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -779,7 +777,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -832,7 +829,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -867,7 +863,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -886,7 +881,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -932,7 +926,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1060,7 +1053,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1098,7 +1090,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1136,7 +1127,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1174,7 +1164,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1212,7 +1201,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1250,7 +1238,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1289,7 +1276,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wise, connector::Plaid ); @@ -1326,7 +1312,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1362,7 +1347,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1490,7 +1474,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1528,7 +1511,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1566,7 +1548,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1604,7 +1585,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1642,7 +1622,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1677,7 +1656,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Riskified, connector::Signifyd, connector::Stripe, - connector::Trustpay, connector::Threedsecureio, connector::Wise, connector::Plaid @@ -1864,7 +1842,6 @@ default_imp_for_new_connector_integration_uas!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index 6cd44227333..596b7e70d67 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -226,7 +226,6 @@ default_imp_for_complete_authorize!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wise, connector::Wellsfargopayout ); @@ -271,7 +270,6 @@ default_imp_for_webhook_source_verification!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -318,7 +316,6 @@ default_imp_for_create_customer!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -516,7 +513,6 @@ default_imp_for_accept_dispute!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -583,7 +579,6 @@ default_imp_for_file_upload!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Opennode, connector::Wellsfargopayout, connector::Wise @@ -629,7 +624,6 @@ default_imp_for_submit_evidence!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Opennode, connector::Wellsfargopayout, connector::Wise @@ -676,7 +670,6 @@ default_imp_for_defend_dispute!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Opennode, connector::Wellsfargopayout, connector::Wise @@ -758,7 +751,6 @@ default_imp_for_post_processing_steps!( connector::Nmi, connector::Paypal, connector::Stripe, - connector::Trustpay, connector::Ebanx, connector::Gpayments, connector::Netcetera, @@ -793,7 +785,6 @@ default_imp_for_payouts!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -837,7 +828,6 @@ default_imp_for_payouts_create!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -884,7 +874,6 @@ default_imp_for_payouts_retrieve!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -934,7 +923,6 @@ default_imp_for_payouts_eligibility!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -976,7 +964,6 @@ default_imp_for_payouts_fulfill!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -1021,7 +1008,6 @@ default_imp_for_payouts_cancel!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -1068,7 +1054,6 @@ default_imp_for_payouts_quote!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -1114,7 +1099,6 @@ default_imp_for_payouts_recipient!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout ); @@ -1164,7 +1148,6 @@ default_imp_for_payouts_recipient_account!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1212,7 +1195,6 @@ default_imp_for_approve!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1260,7 +1242,6 @@ default_imp_for_reject!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1410,7 +1391,6 @@ default_imp_for_frm_sale!( connector::Plaid, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1458,7 +1438,6 @@ default_imp_for_frm_checkout!( connector::Plaid, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1506,7 +1485,6 @@ default_imp_for_frm_transaction!( connector::Plaid, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1554,7 +1532,6 @@ default_imp_for_frm_fulfillment!( connector::Plaid, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1602,7 +1579,6 @@ default_imp_for_frm_record_return!( connector::Plaid, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1650,7 +1626,6 @@ default_imp_for_incremental_authorization!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1696,7 +1671,6 @@ default_imp_for_revoking_mandates!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wise ); @@ -1916,7 +1890,6 @@ default_imp_for_authorize_session_token!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -1962,7 +1935,6 @@ default_imp_for_calculate_tax!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -2007,7 +1979,6 @@ default_imp_for_session_update!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -2052,7 +2023,6 @@ default_imp_for_post_session_tokens!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -2101,7 +2071,6 @@ default_imp_for_uas_pre_authentication!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -2147,7 +2116,6 @@ default_imp_for_uas_post_authentication!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); @@ -2193,7 +2161,6 @@ default_imp_for_uas_authentication!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise ); From 1d7d15b3e278c77a20d4dd8ce6b2784ad99b2191 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Wed, 19 Feb 2025 15:51:12 +0530 Subject: [PATCH 08/10] refactor(connector): [OPENNODE] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 9 +- .../src/connectors}/opennode.rs | 230 ++++++++---------- .../src/connectors}/opennode/transformers.rs | 87 +++---- .../src/default_implementations.rs | 35 +++ .../src/default_implementations_v2.rs | 22 ++ crates/router/src/connector.rs | 19 +- .../connector_integration_v2_impls.rs | 23 -- crates/router/src/core/payments/flows.rs | 35 --- 8 files changed, 218 insertions(+), 242 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/opennode.rs (63%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/opennode/transformers.rs (73%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 40d46616a89..b6db00dcd4e 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -47,6 +47,7 @@ pub mod nomupay; pub mod noon; pub mod novalnet; pub mod nuvei; +pub mod opennode; pub mod paybox; pub mod payeezy; pub mod payme; @@ -85,10 +86,10 @@ pub use self::{ helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, mifinity::Mifinity, mollie::Mollie, moneris::Moneris, multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, - noon::Noon, novalnet::Novalnet, nuvei::Nuvei, paybox::Paybox, payeezy::Payeezy, payme::Payme, - payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, - rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, - taxjar::Taxjar, thunes::Thunes, trustpay::Trustpay, tsys::Tsys, + noon::Noon, novalnet::Novalnet, nuvei::Nuvei, opennode::Opennode, paybox::Paybox, + payeezy::Payeezy, payme::Payme, payu::Payu, placetopay::Placetopay, powertranz::Powertranz, + prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, + square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, trustpay::Trustpay, tsys::Tsys, unified_authentication_service::UnifiedAuthenticationService, volt::Volt, wellsfargo::Wellsfargo, worldline::Worldline, worldpay::Worldpay, xendit::Xendit, zen::Zen, zsl::Zsl, diff --git a/crates/router/src/connector/opennode.rs b/crates/hyperswitch_connectors/src/connectors/opennode.rs similarity index 63% rename from crates/router/src/connector/opennode.rs rename to crates/hyperswitch_connectors/src/connectors/opennode.rs index 1c11da05712..fefd2f77768 100644 --- a/crates/router/src/connector/opennode.rs +++ b/crates/hyperswitch_connectors/src/connectors/opennode.rs @@ -2,29 +2,47 @@ pub mod transformers; use std::fmt::Debug; -use common_utils::{crypto, request::RequestContent}; +use common_utils::{ + crypto, + errors::CustomResult, + ext_traits::BytesExt, + request::{Method, Request, RequestBuilder, RequestContent}, +}; use error_stack::ResultExt; -use transformers as opennode; - -use self::opennode::OpennodeWebhookDetails; -use crate::{ - configs::settings, - consts, - core::errors::{self, CustomResult}, - events::connector_api_logs::ConnectorEvent, - headers, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, +use hyperswitch_domain_models::{ + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, }, + router_request_types::{ + AccessTokenRequestData, PaymentMethodTokenizationData, PaymentsAuthorizeData, + PaymentsCancelData, PaymentsCaptureData, PaymentsSessionData, PaymentsSyncData, + RefundsData, SetupMandateRequestData, + }, + router_response_types::{PaymentsResponseData, RefundsResponseData}, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, - ErrorResponse, Response, + PaymentsAuthorizeRouterData, PaymentsCaptureRouterData, PaymentsSyncRouterData, + RefundsRouterData, + }, +}; +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorSpecifications, + ConnectorValidation, }, - utils::BytesExt, + configs::Connectors, + consts, errors, + events::connector_api_logs::ConnectorEvent, + types::{PaymentsAuthorizeType, PaymentsSyncType, Response}, + webhooks::{self, IncomingWebhook}, }; +use masking::{Mask, Maskable}; +use transformers as opennode; + +use self::opennode::OpennodeWebhookDetails; +use crate::{constants::headers, types::ResponseRouterData}; #[derive(Debug, Clone)] pub struct Opennode; @@ -49,9 +67,9 @@ where { fn build_headers( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let mut header = vec![ ( headers::CONTENT_TYPE.to_string(), @@ -81,14 +99,14 @@ impl ConnectorCommon for Opennode { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.opennode.base_url.as_ref() } fn get_auth_header( &self, - auth_type: &types::ConnectorAuthType, - ) -> CustomResult)>, errors::ConnectorError> { + auth_type: &ConnectorAuthType, + ) -> CustomResult)>, errors::ConnectorError> { let auth = opennode::OpennodeAuthType::try_from(auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; Ok(vec![( @@ -123,43 +141,26 @@ impl ConnectorCommon for Opennode { impl ConnectorValidation for Opennode {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Opennode +impl ConnectorIntegration + for Opennode { // Not Implemented (R) } -impl ConnectorIntegration - for Opennode -{ +impl ConnectorIntegration for Opennode { //TODO: implement sessions flow } -impl ConnectorIntegration - for Opennode -{ -} +impl ConnectorIntegration for Opennode {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Opennode +impl ConnectorIntegration + for Opennode { fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Opennode".to_string()) .into(), @@ -167,14 +168,12 @@ impl } } -impl ConnectorIntegration - for Opennode -{ +impl ConnectorIntegration for Opennode { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -184,16 +183,16 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}/v1/charges", self.base_url(_connectors))) } fn get_request_body( &self, - req: &types::PaymentsAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_router_data = opennode::OpennodeRouterData::try_from(( &self.get_currency_unit(), @@ -207,19 +206,15 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -228,10 +223,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opennode::OpennodePaymentsResponse = res .response .parse_struct("Opennode PaymentsAuthorizeResponse") @@ -240,7 +235,7 @@ impl ConnectorIntegration - for Opennode -{ +impl ConnectorIntegration for Opennode { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -274,8 +267,8 @@ impl ConnectorIntegration CustomResult { let connector_id = _req .request @@ -291,24 +284,24 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsSyncRouterData, + data: &PaymentsSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opennode::OpennodePaymentsResponse = res .response .parse_struct("opennode PaymentsSyncResponse") @@ -317,7 +310,7 @@ impl ConnectorIntegration - for Opennode -{ +impl ConnectorIntegration for Opennode { fn build_request( &self, - _req: &types::PaymentsCaptureRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &PaymentsCaptureRouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err(errors::ConnectorError::FlowNotSupported { flow: "Capture".to_string(), connector: "Opennode".to_string(), @@ -350,19 +341,14 @@ impl ConnectorIntegration - for Opennode -{ -} +impl ConnectorIntegration for Opennode {} -impl ConnectorIntegration - for Opennode -{ +impl ConnectorIntegration for Opennode { fn build_request( &self, - _req: &types::RefundsRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RefundsRouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Refund flow not Implemented".to_string()) .into(), @@ -370,22 +356,22 @@ impl ConnectorIntegration for Opennode { +impl ConnectorIntegration for Opennode { // default implementation of build_request method will be executed } #[async_trait::async_trait] -impl api::IncomingWebhook for Opennode { +impl IncomingWebhook for Opennode { fn get_webhook_source_verification_algorithm( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::HmacSha256)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { let notif = serde_urlencoded::from_bytes::(request.body) @@ -397,7 +383,7 @@ impl api::IncomingWebhook for Opennode { fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -408,7 +394,7 @@ impl api::IncomingWebhook for Opennode { fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult { let notif = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; @@ -419,29 +405,29 @@ impl api::IncomingWebhook for Opennode { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let notif = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; match notif.status { opennode::OpennodePaymentStatus::Paid => { - Ok(api::IncomingWebhookEvent::PaymentIntentSuccess) + Ok(api_models::webhooks::IncomingWebhookEvent::PaymentIntentSuccess) } opennode::OpennodePaymentStatus::Underpaid | opennode::OpennodePaymentStatus::Expired => { - Ok(api::IncomingWebhookEvent::PaymentActionRequired) + Ok(api_models::webhooks::IncomingWebhookEvent::PaymentActionRequired) } opennode::OpennodePaymentStatus::Processing => { - Ok(api::IncomingWebhookEvent::PaymentIntentProcessing) + Ok(api_models::webhooks::IncomingWebhookEvent::PaymentIntentProcessing) } - _ => Ok(api::IncomingWebhookEvent::EventNotSupported), + _ => Ok(api_models::webhooks::IncomingWebhookEvent::EventNotSupported), } } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { let notif = serde_urlencoded::from_bytes::(request.body) .change_context(errors::ConnectorError::WebhookBodyDecodingFailed)?; diff --git a/crates/router/src/connector/opennode/transformers.rs b/crates/hyperswitch_connectors/src/connectors/opennode/transformers.rs similarity index 73% rename from crates/router/src/connector/opennode/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/opennode/transformers.rs index 067237bc3e2..3aa6c63ba51 100644 --- a/crates/router/src/connector/opennode/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/opennode/transformers.rs @@ -1,13 +1,21 @@ use std::collections::HashMap; +use common_enums::{enums, AttemptStatus}; +use common_utils::request::Method; +use hyperswitch_domain_models::{ + router_data::{ConnectorAuthType, RouterData}, + router_flow_types::refunds::{Execute, RSync}, + router_request_types::ResponseId, + router_response_types::{PaymentsResponseData, RedirectForm, RefundsResponseData}, + types::{PaymentsAuthorizeRouterData, RefundsRouterData}, +}; +use hyperswitch_interfaces::{api::CurrencyUnit, errors}; use masking::Secret; use serde::{Deserialize, Serialize}; use crate::{ - connector::utils::{PaymentsAuthorizeRequestData, RouterData}, - core::errors, - services, - types::{self, api, storage::enums}, + types::{RefundsResponseRouterData, ResponseRouterData}, + utils::{PaymentsAuthorizeRequestData, RouterData as OtherRouterData}, }; #[derive(Debug, Serialize)] @@ -16,16 +24,11 @@ pub struct OpennodeRouterData { pub router_data: T, } -impl TryFrom<(&api::CurrencyUnit, enums::Currency, i64, T)> for OpennodeRouterData { +impl TryFrom<(&CurrencyUnit, enums::Currency, i64, T)> for OpennodeRouterData { type Error = error_stack::Report; fn try_from( - (_currency_unit, _currency, amount, router_data): ( - &api::CurrencyUnit, - enums::Currency, - i64, - T, - ), + (_currency_unit, _currency, amount, router_data): (&CurrencyUnit, enums::Currency, i64, T), ) -> Result { Ok(Self { amount, @@ -46,10 +49,10 @@ pub struct OpennodePaymentsRequest { order_id: String, } -impl TryFrom<&OpennodeRouterData<&types::PaymentsAuthorizeRouterData>> for OpennodePaymentsRequest { +impl TryFrom<&OpennodeRouterData<&PaymentsAuthorizeRouterData>> for OpennodePaymentsRequest { type Error = error_stack::Report; fn try_from( - item: &OpennodeRouterData<&types::PaymentsAuthorizeRouterData>, + item: &OpennodeRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { get_crypto_specific_payment_data(item) } @@ -61,11 +64,11 @@ pub struct OpennodeAuthType { pub(super) api_key: Secret, } -impl TryFrom<&types::ConnectorAuthType> for OpennodeAuthType { +impl TryFrom<&ConnectorAuthType> for OpennodeAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { + fn try_from(auth_type: &ConnectorAuthType) -> Result { match auth_type { - types::ConnectorAuthType::HeaderKey { api_key } => Ok(Self { + ConnectorAuthType::HeaderKey { api_key } => Ok(Self { api_key: api_key.to_owned(), }), _ => Err(errors::ConnectorError::FailedToObtainAuthType.into()), @@ -88,7 +91,7 @@ pub enum OpennodePaymentStatus { Unknown, } -impl From for enums::AttemptStatus { +impl From for AttemptStatus { fn from(item: OpennodePaymentStatus) -> Self { match item { OpennodePaymentStatus::Unpaid => Self::AuthenticationPending, @@ -114,29 +117,23 @@ pub struct OpennodePaymentsResponse { data: OpennodePaymentsResponseData, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData< - F, - OpennodePaymentsResponse, - T, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { let form_fields = HashMap::new(); - let redirection_data = services::RedirectForm::Form { + let redirection_data = RedirectForm::Form { endpoint: item.response.data.hosted_checkout_url.to_string(), - method: services::Method::Get, + method: Method::Get, form_fields, }; - let connector_id = types::ResponseId::ConnectorTransactionId(item.response.data.id); + let connector_id = ResponseId::ConnectorTransactionId(item.response.data.id); let attempt_status = item.response.data.status; let response_data = if attempt_status != OpennodePaymentStatus::Underpaid { - Ok(types::PaymentsResponseData::TransactionResponse { + Ok(PaymentsResponseData::TransactionResponse { resource_id: connector_id, redirection_data: Box::new(Some(redirection_data)), mandate_reference: Box::new(None), @@ -147,9 +144,9 @@ impl charges: None, }) } else { - Ok(types::PaymentsResponseData::TransactionUnresolvedResponse { + Ok(PaymentsResponseData::TransactionUnresolvedResponse { resource_id: connector_id, - reason: Some(api::enums::UnresolvedResponseReason { + reason: Some(api_models::enums::UnresolvedResponseReason { code: "UNDERPAID".to_string(), message: "Please check the transaction in opennode dashboard and resolve manually" @@ -159,7 +156,7 @@ impl }) }; Ok(Self { - status: enums::AttemptStatus::from(attempt_status), + status: AttemptStatus::from(attempt_status), response: response_data, ..item.data }) @@ -174,11 +171,9 @@ pub struct OpennodeRefundRequest { pub amount: i64, } -impl TryFrom<&OpennodeRouterData<&types::RefundsRouterData>> for OpennodeRefundRequest { +impl TryFrom<&OpennodeRouterData<&RefundsRouterData>> for OpennodeRefundRequest { type Error = error_stack::Report; - fn try_from( - item: &OpennodeRouterData<&types::RefundsRouterData>, - ) -> Result { + fn try_from(item: &OpennodeRouterData<&RefundsRouterData>) -> Result { Ok(Self { amount: item.router_data.request.refund_amount, }) @@ -211,15 +206,13 @@ pub struct RefundResponse { status: RefundStatus, } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id.to_string(), refund_status: enums::RefundStatus::from(item.response.status), }), @@ -228,15 +221,13 @@ impl TryFrom> } } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id.to_string(), refund_status: enums::RefundStatus::from(item.response.status), }), @@ -252,7 +243,7 @@ pub struct OpennodeErrorResponse { } fn get_crypto_specific_payment_data( - item: &OpennodeRouterData<&types::PaymentsAuthorizeRouterData>, + item: &OpennodeRouterData<&PaymentsAuthorizeRouterData>, ) -> Result> { let amount = item.amount; let currency = item.router_data.request.currency.to_string(); diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index f91f578b7c9..3438c95384d 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -138,6 +138,7 @@ default_imp_for_authorize_session_token!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Paybox, connectors::Payeezy, connectors::Payme, @@ -228,6 +229,7 @@ default_imp_for_calculate_tax!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Paybox, connectors::Nomupay, connectors::Noon, @@ -323,6 +325,7 @@ default_imp_for_session_update!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -414,6 +417,7 @@ default_imp_for_post_session_tokens!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -494,6 +498,7 @@ default_imp_for_complete_authorize!( connectors::Noon, connectors::Novalnet, connectors::Nexinets, + connectors::Opennode, connectors::Payeezy, connectors::Payu, connectors::Placetopay, @@ -574,6 +579,7 @@ default_imp_for_incremental_authorization!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -668,6 +674,7 @@ default_imp_for_create_customer!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -749,6 +756,7 @@ default_imp_for_connector_redirect_response!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nomupay, connectors::Payeezy, connectors::Payu, @@ -827,6 +835,7 @@ default_imp_for_pre_processing_steps!( connectors::Noon, connectors::Novalnet, connectors::Nexinets, + connectors::Opennode, connectors::Paybox, connectors::Payeezy, connectors::Payu, @@ -915,6 +924,7 @@ default_imp_for_post_processing_steps!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1007,6 +1017,7 @@ default_imp_for_approve!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1099,6 +1110,7 @@ default_imp_for_reject!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1191,6 +1203,7 @@ default_imp_for_webhook_source_verification!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1283,6 +1296,7 @@ default_imp_for_accept_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1374,6 +1388,7 @@ default_imp_for_submit_evidence!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1465,6 +1480,7 @@ default_imp_for_defend_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1565,6 +1581,7 @@ default_imp_for_file_upload!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1650,6 +1667,7 @@ default_imp_for_payouts!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Paybox, connectors::Nomupay, connectors::Noon, @@ -1742,6 +1760,7 @@ default_imp_for_payouts_create!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1836,6 +1855,7 @@ default_imp_for_payouts_retrieve!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1930,6 +1950,7 @@ default_imp_for_payouts_eligibility!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2023,6 +2044,7 @@ default_imp_for_payouts_fulfill!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2117,6 +2139,7 @@ default_imp_for_payouts_cancel!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2211,6 +2234,7 @@ default_imp_for_payouts_quote!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2305,6 +2329,7 @@ default_imp_for_payouts_recipient!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2399,6 +2424,7 @@ default_imp_for_payouts_recipient_account!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2493,6 +2519,7 @@ default_imp_for_frm_sale!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2587,6 +2614,7 @@ default_imp_for_frm_checkout!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2681,6 +2709,7 @@ default_imp_for_frm_transaction!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2775,6 +2804,7 @@ default_imp_for_frm_fulfillment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2869,6 +2899,7 @@ default_imp_for_frm_record_return!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2958,6 +2989,7 @@ default_imp_for_revoking_mandates!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -3050,6 +3082,7 @@ default_imp_for_uas_pre_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Payeezy, connectors::Payme, @@ -3140,6 +3173,7 @@ default_imp_for_uas_post_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Payeezy, connectors::Payme, @@ -3230,6 +3264,7 @@ default_imp_for_uas_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Payeezy, connectors::Payme, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index 650455cdf47..a306aefcac6 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -248,6 +248,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -341,6 +342,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -429,6 +431,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -522,6 +525,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -614,6 +618,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -707,6 +712,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -810,6 +816,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -905,6 +912,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1000,6 +1008,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1095,6 +1104,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1190,6 +1200,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1285,6 +1296,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1380,6 +1392,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1475,6 +1488,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1570,6 +1584,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1663,6 +1678,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1758,6 +1774,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1853,6 +1870,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -1948,6 +1966,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2043,6 +2062,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2138,6 +2158,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, @@ -2230,6 +2251,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opennode, connectors::Nuvei, connectors::Paybox, connectors::Payeezy, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index c8b1b7e2fc8..99d132fc875 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -7,7 +7,6 @@ pub mod gpayments; pub mod netcetera; pub mod nmi; pub mod opayo; -pub mod opennode; pub mod payone; pub mod paypal; pub mod plaid; @@ -36,12 +35,12 @@ pub use hyperswitch_connectors::connectors::{ jpmorgan::Jpmorgan, klarna, klarna::Klarna, mifinity, mifinity::Mifinity, mollie, mollie::Mollie, moneris, moneris::Moneris, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, - novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, paybox, paybox::Paybox, payeezy, - payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, placetopay, placetopay::Placetopay, - powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, - razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, shift4::Shift4, square, - square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, trustpay, - trustpay::Trustpay, tsys, tsys::Tsys, unified_authentication_service, + novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, opennode, opennode::Opennode, paybox, + paybox::Paybox, payeezy, payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, placetopay, + placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, + rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, + shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, + thunes::Thunes, trustpay, trustpay::Trustpay, tsys, tsys::Tsys, unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, @@ -51,7 +50,7 @@ pub use hyperswitch_connectors::connectors::{ pub use self::dummyconnector::DummyConnector; pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, ebanx::Ebanx, gpayments::Gpayments, - netcetera::Netcetera, nmi::Nmi, opayo::Opayo, opennode::Opennode, payone::Payone, - paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, - threedsecureio::Threedsecureio, wellsfargopayout::Wellsfargopayout, wise::Wise, + netcetera::Netcetera, nmi::Nmi, opayo::Opayo, payone::Payone, paypal::Paypal, plaid::Plaid, + riskified::Riskified, signifyd::Signifyd, stripe::Stripe, threedsecureio::Threedsecureio, + wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index b6f9ee16612..018239fa96d 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -705,7 +705,6 @@ default_imp_for_new_connector_integration_payment!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -741,7 +740,6 @@ default_imp_for_new_connector_integration_refund!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -771,7 +769,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -823,7 +820,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -857,7 +853,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -875,7 +870,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -920,7 +914,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1047,7 +1040,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1084,7 +1076,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1121,7 +1112,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1158,7 +1148,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1195,7 +1184,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1232,7 +1220,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1269,7 +1256,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1306,7 +1292,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1341,7 +1326,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1468,7 +1452,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1505,7 +1488,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1542,7 +1524,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1579,7 +1560,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1616,7 +1596,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1650,7 +1629,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Riskified, @@ -1834,7 +1812,6 @@ default_imp_for_new_connector_integration_uas!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index 596b7e70d67..a4dab39978c 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -219,7 +219,6 @@ default_imp_for_complete_authorize!( connector::Gpayments, connector::Netcetera, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -263,7 +262,6 @@ default_imp_for_webhook_source_verification!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -309,7 +307,6 @@ default_imp_for_create_customer!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -356,7 +353,6 @@ default_imp_for_connector_redirect_response!( connector::Gpayments, connector::Netcetera, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -505,7 +501,6 @@ default_imp_for_accept_dispute!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -579,7 +574,6 @@ default_imp_for_file_upload!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Opennode, connector::Wellsfargopayout, connector::Wise ); @@ -624,7 +618,6 @@ default_imp_for_submit_evidence!( connector::Riskified, connector::Signifyd, connector::Threedsecureio, - connector::Opennode, connector::Wellsfargopayout, connector::Wise ); @@ -670,7 +663,6 @@ default_imp_for_defend_dispute!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Opennode, connector::Wellsfargopayout, connector::Wise ); @@ -723,7 +715,6 @@ default_imp_for_pre_processing_steps!( connector::Gpayments, connector::Netcetera, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -755,7 +746,6 @@ default_imp_for_post_processing_steps!( connector::Gpayments, connector::Netcetera, connector::Opayo, - connector::Opennode, connector::Payone, connector::Riskified, connector::Signifyd, @@ -780,7 +770,6 @@ default_imp_for_payouts!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -822,7 +811,6 @@ default_imp_for_payouts_create!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -867,7 +855,6 @@ default_imp_for_payouts_retrieve!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -915,7 +902,6 @@ default_imp_for_payouts_eligibility!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -959,7 +945,6 @@ default_imp_for_payouts_fulfill!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -1001,7 +986,6 @@ default_imp_for_payouts_cancel!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1046,7 +1030,6 @@ default_imp_for_payouts_quote!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1092,7 +1075,6 @@ default_imp_for_payouts_recipient!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1141,7 +1123,6 @@ default_imp_for_payouts_recipient_account!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1187,7 +1168,6 @@ default_imp_for_approve!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1234,7 +1214,6 @@ default_imp_for_reject!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1385,7 +1364,6 @@ default_imp_for_frm_sale!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1432,7 +1410,6 @@ default_imp_for_frm_checkout!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1479,7 +1456,6 @@ default_imp_for_frm_transaction!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1526,7 +1502,6 @@ default_imp_for_frm_fulfillment!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1573,7 +1548,6 @@ default_imp_for_frm_record_return!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1618,7 +1592,6 @@ default_imp_for_incremental_authorization!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1663,7 +1636,6 @@ default_imp_for_revoking_mandates!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1882,7 +1854,6 @@ default_imp_for_authorize_session_token!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1927,7 +1898,6 @@ default_imp_for_calculate_tax!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -1972,7 +1942,6 @@ default_imp_for_session_update!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -2016,7 +1985,6 @@ default_imp_for_post_session_tokens!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Plaid, connector::Riskified, @@ -2063,7 +2031,6 @@ default_imp_for_uas_pre_authentication!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -2108,7 +2075,6 @@ default_imp_for_uas_post_authentication!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, @@ -2153,7 +2119,6 @@ default_imp_for_uas_authentication!( connector::Netcetera, connector::Nmi, connector::Opayo, - connector::Opennode, connector::Payone, connector::Paypal, connector::Plaid, From 4262b664e1d781d1eacac15083fec413025abca0 Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Wed, 19 Feb 2025 16:47:34 +0530 Subject: [PATCH 09/10] refactor(connector): [OPAYO] Move to crate hyperswitch_connectors --- .../hyperswitch_connectors/src/connectors.rs | 3 +- .../src/connectors}/opayo.rs | 315 ++++++++---------- .../src/connectors}/opayo/transformers.rs | 97 +++--- .../src/default_implementations.rs | 35 ++ .../src/default_implementations_v2.rs | 22 ++ crates/router/src/connector.rs | 21 +- .../connector_integration_v2_impls.rs | 26 -- crates/router/src/core/payments/flows.rs | 38 --- 8 files changed, 267 insertions(+), 290 deletions(-) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/opayo.rs (61%) rename crates/{router/src/connector => hyperswitch_connectors/src/connectors}/opayo/transformers.rs (65%) diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index b6db00dcd4e..f1b090b7b70 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -47,6 +47,7 @@ pub mod nomupay; pub mod noon; pub mod novalnet; pub mod nuvei; +pub mod opayo; pub mod opennode; pub mod paybox; pub mod payeezy; @@ -86,7 +87,7 @@ pub use self::{ helcim::Helcim, iatapay::Iatapay, inespay::Inespay, itaubank::Itaubank, jpmorgan::Jpmorgan, klarna::Klarna, mifinity::Mifinity, mollie::Mollie, moneris::Moneris, multisafepay::Multisafepay, nexinets::Nexinets, nexixpay::Nexixpay, nomupay::Nomupay, - noon::Noon, novalnet::Novalnet, nuvei::Nuvei, opennode::Opennode, paybox::Paybox, + noon::Noon, novalnet::Novalnet, nuvei::Nuvei, opayo::Opayo, opennode::Opennode, paybox::Paybox, payeezy::Payeezy, payme::Payme, payu::Payu, placetopay::Placetopay, powertranz::Powertranz, prophetpay::Prophetpay, rapyd::Rapyd, razorpay::Razorpay, redsys::Redsys, shift4::Shift4, square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, trustpay::Trustpay, tsys::Tsys, diff --git a/crates/router/src/connector/opayo.rs b/crates/hyperswitch_connectors/src/connectors/opayo.rs similarity index 61% rename from crates/router/src/connector/opayo.rs rename to crates/hyperswitch_connectors/src/connectors/opayo.rs index a9fc439e54c..b2aadda37f7 100644 --- a/crates/router/src/connector/opayo.rs +++ b/crates/hyperswitch_connectors/src/connectors/opayo.rs @@ -1,32 +1,49 @@ mod transformers; +use common_enums::enums; use common_utils::{ - request::RequestContent, + errors::CustomResult, + ext_traits::BytesExt, + request::{Method, Request, RequestBuilder, RequestContent}, types::{AmountConvertor, MinorUnit, MinorUnitForConnector}, }; -use diesel_models::enums; use error_stack::{report, ResultExt}; -use masking::ExposeInterface; -use transformers as opayo; - -use crate::{ - configs::settings, - connector::{utils as connector_utils, utils::convert_amount}, - core::errors::{self, CustomResult}, - events::connector_api_logs::ConnectorEvent, - headers, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, +use hyperswitch_domain_models::{ + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{ + access_token_auth::AccessTokenAuth, + payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void}, + refunds::{Execute, RSync}, }, + router_request_types::{ + AccessTokenRequestData, PaymentMethodTokenizationData, PaymentsAuthorizeData, + PaymentsCancelData, PaymentsCaptureData, PaymentsSessionData, PaymentsSyncData, + RefundsData, SetupMandateRequestData, + }, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsCaptureRouterData, PaymentsSyncRouterData, + RefundSyncRouterData, RefundsRouterData, + }, +}; +use hyperswitch_interfaces::{ + api::{ + self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorSpecifications, + ConnectorValidation, + }, + configs::Connectors, + errors, + events::connector_api_logs::ConnectorEvent, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt}, - ErrorResponse, Response, + PaymentsAuthorizeType, PaymentsCaptureType, PaymentsSyncType, RefundExecuteType, + RefundSyncType, Response, }, - utils::BytesExt, + webhooks, }; +use masking::{ExposeInterface, Mask}; +use transformers as opayo; + +use crate::{constants::headers, types::ResponseRouterData, utils::convert_amount}; #[derive(Clone)] pub struct Opayo { @@ -54,12 +71,8 @@ impl api::RefundExecute for Opayo {} impl api::RefundSync for Opayo {} impl api::PaymentToken for Opayo {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Opayo +impl ConnectorIntegration + for Opayo { } @@ -69,9 +82,9 @@ where { fn build_headers( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let content_type = ConnectorCommon::common_get_content_type(self); let mut common_headers = self.get_auth_header(&req.connector_auth_type)?; common_headers.push(( @@ -90,14 +103,14 @@ impl ConnectorCommon for Opayo { fn common_get_content_type(&self) -> &'static str { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.opayo.base_url.as_ref() } fn get_auth_header( &self, - auth_type: &types::ConnectorAuthType, - ) -> CustomResult)>, errors::ConnectorError> { + auth_type: &ConnectorAuthType, + ) -> CustomResult)>, errors::ConnectorError> { let auth = opayo::OpayoAuthType::try_from(auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType)?; Ok(vec![( @@ -143,39 +156,24 @@ impl ConnectorValidation for Opayo { | enums::CaptureMethod::Manual | enums::CaptureMethod::SequentialAutomatic => Ok(()), enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err( - connector_utils::construct_not_supported_error_report(capture_method, self.id()), + crate::utils::construct_not_supported_error_report(capture_method, self.id()), ), } } } -impl ConnectorIntegration - for Opayo -{ +impl ConnectorIntegration for Opayo { //TODO: implement sessions flow } -impl ConnectorIntegration - for Opayo -{ -} +impl ConnectorIntegration for Opayo {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Opayo -{ +impl ConnectorIntegration for Opayo { fn build_request( &self, - _req: &types::RouterData< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - >, - _connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + _req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Err( errors::ConnectorError::NotImplemented("Setup Mandate flow for Opayo".to_string()) .into(), @@ -183,14 +181,12 @@ impl } } -impl ConnectorIntegration - for Opayo -{ +impl ConnectorIntegration for Opayo { fn get_headers( &self, - req: &types::PaymentsAuthorizeRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -200,16 +196,16 @@ impl ConnectorIntegration CustomResult { Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into()) } fn get_request_body( &self, - req: &types::PaymentsAuthorizeRouterData, - _connectors: &settings::Connectors, + req: &PaymentsAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { let amount = convert_amount( self.amount_converter, @@ -223,20 +219,16 @@ impl ConnectorIntegration CustomResult, errors::ConnectorError> { + req: &PaymentsAuthorizeRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsAuthorizeType::get_url( - self, req, connectors, - )?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsAuthorizeType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsAuthorizeType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsAuthorizeType::get_request_body( + .headers(PaymentsAuthorizeType::get_headers(self, req, connectors)?) + .set_body(PaymentsAuthorizeType::get_request_body( self, req, connectors, )?) .build(), @@ -245,10 +237,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opayo::OpayoPaymentsResponse = res .response .parse_struct("Opayo PaymentsAuthorizeResponse") @@ -257,7 +249,7 @@ impl ConnectorIntegration - for Opayo -{ +impl ConnectorIntegration for Opayo { fn get_headers( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -290,33 +280,33 @@ impl ConnectorIntegration CustomResult { Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into()) } fn build_request( &self, - req: &types::PaymentsSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::PaymentsSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&PaymentsSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?) + .headers(PaymentsSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::PaymentsSyncRouterData, + data: &PaymentsSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opayo::OpayoPaymentsResponse = res .response .parse_struct("opayo PaymentsSyncResponse") @@ -325,7 +315,7 @@ impl ConnectorIntegration - for Opayo -{ +impl ConnectorIntegration for Opayo { fn get_headers( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -358,34 +346,32 @@ impl ConnectorIntegration CustomResult { Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into()) } fn get_request_body( &self, - _req: &types::PaymentsCaptureRouterData, - _connectors: &settings::Connectors, + _req: &PaymentsCaptureRouterData, + _connectors: &Connectors, ) -> CustomResult { Err(errors::ConnectorError::NotImplemented("get_request_body method".to_string()).into()) } fn build_request( &self, - req: &types::PaymentsCaptureRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &PaymentsCaptureRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&PaymentsCaptureType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::PaymentsCaptureType::get_headers( - self, req, connectors, - )?) - .set_body(types::PaymentsCaptureType::get_request_body( + .headers(PaymentsCaptureType::get_headers(self, req, connectors)?) + .set_body(PaymentsCaptureType::get_request_body( self, req, connectors, )?) .build(), @@ -394,10 +380,10 @@ impl ConnectorIntegration, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opayo::OpayoPaymentsResponse = res .response .parse_struct("Opayo PaymentsCaptureResponse") @@ -406,7 +392,7 @@ impl ConnectorIntegration - for Opayo -{ -} +impl ConnectorIntegration for Opayo {} -impl ConnectorIntegration for Opayo { +impl ConnectorIntegration for Opayo { fn get_headers( &self, - req: &types::RefundsRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -442,16 +425,16 @@ impl ConnectorIntegration, - _connectors: &settings::Connectors, + _req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into()) } fn get_request_body( &self, - req: &types::RefundsRouterData, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { let refund_amount = convert_amount( self.amount_converter, @@ -466,29 +449,25 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { - let request = services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefundExecuteType::get_url(self, req, connectors)?) + req: &RefundsRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { + let request = RequestBuilder::new() + .method(Method::Post) + .url(&RefundExecuteType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundExecuteType::get_headers( - self, req, connectors, - )?) - .set_body(types::RefundExecuteType::get_request_body( - self, req, connectors, - )?) + .headers(RefundExecuteType::get_headers(self, req, connectors)?) + .set_body(RefundExecuteType::get_request_body(self, req, connectors)?) .build(); Ok(Some(request)) } fn handle_response( &self, - data: &types::RefundsRouterData, + data: &RefundsRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult, errors::ConnectorError> { + ) -> CustomResult, errors::ConnectorError> { let response: opayo::RefundResponse = res .response .parse_struct("opayo RefundResponse") @@ -497,7 +476,7 @@ impl ConnectorIntegration for Opayo { +impl ConnectorIntegration for Opayo { fn get_headers( &self, - req: &types::RefundSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { self.build_headers(req, connectors) } @@ -528,33 +507,33 @@ impl ConnectorIntegration CustomResult { Err(errors::ConnectorError::NotImplemented("get_url method".to_string()).into()) } fn build_request( &self, - req: &types::RefundSyncRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RefundSyncRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Get) - .url(&types::RefundSyncType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Get) + .url(&RefundSyncType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefundSyncType::get_headers(self, req, connectors)?) + .headers(RefundSyncType::get_headers(self, req, connectors)?) .build(), )) } fn handle_response( &self, - data: &types::RefundSyncRouterData, + data: &RefundSyncRouterData, event_builder: Option<&mut ConnectorEvent>, res: Response, - ) -> CustomResult { + ) -> CustomResult { let response: opayo::RefundResponse = res .response .parse_struct("opayo RefundSyncResponse") @@ -563,7 +542,7 @@ impl ConnectorIntegration, - ) -> CustomResult { + _request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { Err(report!(errors::ConnectorError::WebhooksNotImplemented)) } fn get_webhook_event_type( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + _request: &webhooks::IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { Err(report!(errors::ConnectorError::WebhooksNotImplemented)) } fn get_webhook_resource_object( &self, - _request: &api::IncomingWebhookRequestDetails<'_>, + _request: &webhooks::IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Err(report!(errors::ConnectorError::WebhooksNotImplemented)) } diff --git a/crates/router/src/connector/opayo/transformers.rs b/crates/hyperswitch_connectors/src/connectors/opayo/transformers.rs similarity index 65% rename from crates/router/src/connector/opayo/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/opayo/transformers.rs index 992acfb5ef0..819f8e10402 100644 --- a/crates/router/src/connector/opayo/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/opayo/transformers.rs @@ -1,12 +1,22 @@ +use common_enums::enums; use common_utils::types::MinorUnit; +use hyperswitch_domain_models::{ + payment_method_data::PaymentMethodData, + router_data::{ConnectorAuthType, RouterData}, + router_flow_types::{Execute, RSync}, + router_request_types::ResponseId, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{PaymentsAuthorizeRouterData, RefundsRouterData}, +}; +use hyperswitch_interfaces::errors; use masking::Secret; use serde::{Deserialize, Serialize}; use crate::{ - connector::utils::{self, PaymentsAuthorizeRequestData, RouterData}, - core::errors, - types::{self, api, domain, storage::enums}, + types::{RefundsResponseRouterData, ResponseRouterData}, + utils::{PaymentsAuthorizeRequestData, RouterData as OtherRouterData}, }; + #[derive(Debug, Serialize)] pub struct OpayoRouterData { pub amount: MinorUnit, @@ -38,14 +48,14 @@ pub struct OpayoCard { complete: bool, } -impl TryFrom<&OpayoRouterData<&types::PaymentsAuthorizeRouterData>> for OpayoPaymentsRequest { +impl TryFrom<&OpayoRouterData<&PaymentsAuthorizeRouterData>> for OpayoPaymentsRequest { type Error = error_stack::Report; fn try_from( - item_data: &OpayoRouterData<&types::PaymentsAuthorizeRouterData>, + item_data: &OpayoRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let item = item_data.router_data.clone(); match item.request.payment_method_data.clone() { - domain::PaymentMethodData::Card(req_card) => { + PaymentMethodData::Card(req_card) => { let card = OpayoCard { name: item .get_optional_billing_full_name() @@ -61,26 +71,26 @@ impl TryFrom<&OpayoRouterData<&types::PaymentsAuthorizeRouterData>> for OpayoPay card, }) } - domain::PaymentMethodData::CardRedirect(_) - | domain::PaymentMethodData::Wallet(_) - | domain::PaymentMethodData::PayLater(_) - | domain::PaymentMethodData::BankRedirect(_) - | domain::PaymentMethodData::BankDebit(_) - | domain::PaymentMethodData::BankTransfer(_) - | domain::PaymentMethodData::Crypto(_) - | domain::PaymentMethodData::MandatePayment - | domain::PaymentMethodData::Reward - | domain::PaymentMethodData::RealTimePayment(_) - | domain::PaymentMethodData::MobilePayment(_) - | domain::PaymentMethodData::Upi(_) - | domain::PaymentMethodData::Voucher(_) - | domain::PaymentMethodData::GiftCard(_) - | domain::PaymentMethodData::OpenBanking(_) - | domain::PaymentMethodData::CardToken(_) - | domain::PaymentMethodData::NetworkToken(_) - | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { + PaymentMethodData::CardRedirect(_) + | PaymentMethodData::Wallet(_) + | PaymentMethodData::PayLater(_) + | PaymentMethodData::BankRedirect(_) + | PaymentMethodData::BankDebit(_) + | PaymentMethodData::BankTransfer(_) + | PaymentMethodData::Crypto(_) + | PaymentMethodData::MandatePayment + | PaymentMethodData::Reward + | PaymentMethodData::RealTimePayment(_) + | PaymentMethodData::MobilePayment(_) + | PaymentMethodData::Upi(_) + | PaymentMethodData::Voucher(_) + | PaymentMethodData::GiftCard(_) + | PaymentMethodData::OpenBanking(_) + | PaymentMethodData::CardToken(_) + | PaymentMethodData::NetworkToken(_) + | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => { Err(errors::ConnectorError::NotImplemented( - utils::get_unimplemented_payment_method_error_message("Opayo"), + crate::utils::get_unimplemented_payment_method_error_message("Opayo"), ) .into()) } @@ -93,11 +103,11 @@ pub struct OpayoAuthType { pub(super) api_key: Secret, } -impl TryFrom<&types::ConnectorAuthType> for OpayoAuthType { +impl TryFrom<&ConnectorAuthType> for OpayoAuthType { type Error = error_stack::Report; - fn try_from(auth_type: &types::ConnectorAuthType) -> Result { + fn try_from(auth_type: &ConnectorAuthType) -> Result { match auth_type { - types::ConnectorAuthType::HeaderKey { api_key } => Ok(Self { + ConnectorAuthType::HeaderKey { api_key } => Ok(Self { api_key: api_key.to_owned(), }), _ => Err(errors::ConnectorError::FailedToObtainAuthType.into()), @@ -131,18 +141,17 @@ pub struct OpayoPaymentsResponse { transaction_id: String, } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { Ok(Self { status: enums::AttemptStatus::from(item.response.status), - response: Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId( + response: Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId( item.response.transaction_id.clone(), ), redirection_data: Box::new(None), @@ -165,9 +174,9 @@ pub struct OpayoRefundRequest { pub amount: MinorUnit, } -impl TryFrom<&OpayoRouterData<&types::RefundsRouterData>> for OpayoRefundRequest { +impl TryFrom<&OpayoRouterData<&RefundsRouterData>> for OpayoRefundRequest { type Error = error_stack::Report; - fn try_from(item: &OpayoRouterData<&types::RefundsRouterData>) -> Result { + fn try_from(item: &OpayoRouterData<&RefundsRouterData>) -> Result { Ok(Self { amount: item.amount, }) @@ -202,15 +211,13 @@ pub struct RefundResponse { status: RefundStatus, } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id.to_string(), refund_status: enums::RefundStatus::from(item.response.status), }), @@ -219,15 +226,13 @@ impl TryFrom> } } -impl TryFrom> - for types::RefundsRouterData -{ +impl TryFrom> for RefundsRouterData { type Error = error_stack::Report; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id.to_string(), refund_status: enums::RefundStatus::from(item.response.status), }), diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index 3438c95384d..6d1459fb86b 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -138,6 +138,7 @@ default_imp_for_authorize_session_token!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Paybox, connectors::Payeezy, @@ -229,6 +230,7 @@ default_imp_for_calculate_tax!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Paybox, connectors::Nomupay, @@ -325,6 +327,7 @@ default_imp_for_session_update!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -417,6 +420,7 @@ default_imp_for_post_session_tokens!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -498,6 +502,7 @@ default_imp_for_complete_authorize!( connectors::Noon, connectors::Novalnet, connectors::Nexinets, + connectors::Opayo, connectors::Opennode, connectors::Payeezy, connectors::Payu, @@ -579,6 +584,7 @@ default_imp_for_incremental_authorization!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -674,6 +680,7 @@ default_imp_for_create_customer!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -756,6 +763,7 @@ default_imp_for_connector_redirect_response!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nomupay, connectors::Payeezy, @@ -835,6 +843,7 @@ default_imp_for_pre_processing_steps!( connectors::Noon, connectors::Novalnet, connectors::Nexinets, + connectors::Opayo, connectors::Opennode, connectors::Paybox, connectors::Payeezy, @@ -924,6 +933,7 @@ default_imp_for_post_processing_steps!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1017,6 +1027,7 @@ default_imp_for_approve!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1110,6 +1121,7 @@ default_imp_for_reject!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1203,6 +1215,7 @@ default_imp_for_webhook_source_verification!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1296,6 +1309,7 @@ default_imp_for_accept_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1388,6 +1402,7 @@ default_imp_for_submit_evidence!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1480,6 +1495,7 @@ default_imp_for_defend_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1581,6 +1597,7 @@ default_imp_for_file_upload!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1667,6 +1684,7 @@ default_imp_for_payouts!( connectors::Multisafepay, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Paybox, connectors::Nomupay, @@ -1760,6 +1778,7 @@ default_imp_for_payouts_create!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1855,6 +1874,7 @@ default_imp_for_payouts_retrieve!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1950,6 +1970,7 @@ default_imp_for_payouts_eligibility!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2044,6 +2065,7 @@ default_imp_for_payouts_fulfill!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2139,6 +2161,7 @@ default_imp_for_payouts_cancel!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2234,6 +2257,7 @@ default_imp_for_payouts_quote!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2329,6 +2353,7 @@ default_imp_for_payouts_recipient!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2424,6 +2449,7 @@ default_imp_for_payouts_recipient_account!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2519,6 +2545,7 @@ default_imp_for_frm_sale!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2614,6 +2641,7 @@ default_imp_for_frm_checkout!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2709,6 +2737,7 @@ default_imp_for_frm_transaction!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2804,6 +2833,7 @@ default_imp_for_frm_fulfillment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2899,6 +2929,7 @@ default_imp_for_frm_record_return!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2989,6 +3020,7 @@ default_imp_for_revoking_mandates!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -3082,6 +3114,7 @@ default_imp_for_uas_pre_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Payeezy, @@ -3173,6 +3206,7 @@ default_imp_for_uas_post_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Payeezy, @@ -3264,6 +3298,7 @@ default_imp_for_uas_authentication!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Payeezy, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index a306aefcac6..d00eb841868 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -248,6 +248,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -342,6 +343,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -431,6 +433,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -525,6 +528,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -618,6 +622,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -712,6 +717,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -816,6 +822,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -912,6 +919,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1008,6 +1016,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1104,6 +1113,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1200,6 +1210,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1296,6 +1307,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1392,6 +1404,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1488,6 +1501,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1584,6 +1598,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1678,6 +1693,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1774,6 +1790,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1870,6 +1887,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -1966,6 +1984,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2062,6 +2081,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2158,6 +2178,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, @@ -2251,6 +2272,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, + connectors::Opayo, connectors::Opennode, connectors::Nuvei, connectors::Paybox, diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 99d132fc875..a00f5ed674f 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -6,7 +6,6 @@ pub mod ebanx; pub mod gpayments; pub mod netcetera; pub mod nmi; -pub mod opayo; pub mod payone; pub mod paypal; pub mod plaid; @@ -35,22 +34,22 @@ pub use hyperswitch_connectors::connectors::{ jpmorgan::Jpmorgan, klarna, klarna::Klarna, mifinity, mifinity::Mifinity, mollie, mollie::Mollie, moneris, moneris::Moneris, multisafepay, multisafepay::Multisafepay, nexinets, nexinets::Nexinets, nexixpay, nexixpay::Nexixpay, nomupay, nomupay::Nomupay, noon, noon::Noon, - novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, opennode, opennode::Opennode, paybox, - paybox::Paybox, payeezy, payeezy::Payeezy, payme, payme::Payme, payu, payu::Payu, placetopay, - placetopay::Placetopay, powertranz, powertranz::Powertranz, prophetpay, prophetpay::Prophetpay, - rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, redsys::Redsys, shift4, - shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, - thunes::Thunes, trustpay, trustpay::Trustpay, tsys, tsys::Tsys, unified_authentication_service, - unified_authentication_service::UnifiedAuthenticationService, volt, volt::Volt, wellsfargo, - wellsfargo::Wellsfargo, worldline, worldline::Worldline, worldpay, worldpay::Worldpay, xendit, - xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, + novalnet, novalnet::Novalnet, nuvei, nuvei::Nuvei, opayo, opayo::Opayo, opennode, + opennode::Opennode, paybox, paybox::Paybox, payeezy, payeezy::Payeezy, payme, payme::Payme, + payu, payu::Payu, placetopay, placetopay::Placetopay, powertranz, powertranz::Powertranz, + prophetpay, prophetpay::Prophetpay, rapyd, rapyd::Rapyd, razorpay, razorpay::Razorpay, redsys, + redsys::Redsys, shift4, shift4::Shift4, square, square::Square, stax, stax::Stax, taxjar, + taxjar::Taxjar, thunes, thunes::Thunes, trustpay, trustpay::Trustpay, tsys, tsys::Tsys, + unified_authentication_service, unified_authentication_service::UnifiedAuthenticationService, + volt, volt::Volt, wellsfargo, wellsfargo::Wellsfargo, worldline, worldline::Worldline, + worldpay, worldpay::Worldpay, xendit, xendit::Xendit, zen, zen::Zen, zsl, zsl::Zsl, }; #[cfg(feature = "dummy_connector")] pub use self::dummyconnector::DummyConnector; pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, ebanx::Ebanx, gpayments::Gpayments, - netcetera::Netcetera, nmi::Nmi, opayo::Opayo, payone::Payone, paypal::Paypal, plaid::Plaid, + netcetera::Netcetera, nmi::Nmi, payone::Payone, paypal::Paypal, plaid::Plaid, riskified::Riskified, signifyd::Signifyd, stripe::Stripe, threedsecureio::Threedsecureio, wellsfargopayout::Wellsfargopayout, wise::Wise, }; diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs index 018239fa96d..560828f85b6 100644 --- a/crates/router/src/core/payments/connector_integration_v2_impls.rs +++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs @@ -704,7 +704,6 @@ default_imp_for_new_connector_integration_payment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -739,7 +738,6 @@ default_imp_for_new_connector_integration_refund!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -768,7 +766,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -819,7 +816,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -852,7 +848,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -869,7 +864,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -913,7 +907,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -981,7 +974,6 @@ default_imp_for_new_connector_integration_payouts!( connector::Nomupay, connector::Noon, connector::Novalnet, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -1039,7 +1031,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1075,7 +1066,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1111,7 +1101,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1147,7 +1136,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1183,7 +1171,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1219,7 +1206,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1255,7 +1241,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1291,7 +1276,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1325,7 +1309,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1393,7 +1376,6 @@ default_imp_for_new_connector_integration_frm!( connector::Nomupay, connector::Noon, connector::Novalnet, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -1451,7 +1433,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1487,7 +1468,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1523,7 +1503,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1559,7 +1538,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1595,7 +1573,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1628,7 +1605,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Riskified, @@ -1734,7 +1710,6 @@ default_imp_for_new_connector_integration_connector_authentication!( connector::Noon, connector::Novalnet, connector::Nuvei, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -1811,7 +1786,6 @@ default_imp_for_new_connector_integration_uas!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index a4dab39978c..d377b9bb936 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -218,7 +218,6 @@ default_imp_for_complete_authorize!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -261,7 +260,6 @@ default_imp_for_webhook_source_verification!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -306,7 +304,6 @@ default_imp_for_create_customer!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -352,7 +349,6 @@ default_imp_for_connector_redirect_response!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -426,7 +422,6 @@ default_imp_for_connector_request_id!( connector::Noon, connector::Novalnet, connector::Nuvei, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -500,7 +495,6 @@ default_imp_for_accept_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -567,7 +561,6 @@ default_imp_for_file_upload!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -611,7 +604,6 @@ default_imp_for_submit_evidence!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -655,7 +647,6 @@ default_imp_for_defend_dispute!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -714,7 +705,6 @@ default_imp_for_pre_processing_steps!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -745,7 +735,6 @@ default_imp_for_post_processing_steps!( connector::Ebanx, connector::Gpayments, connector::Netcetera, - connector::Opayo, connector::Payone, connector::Riskified, connector::Signifyd, @@ -769,7 +758,6 @@ default_imp_for_payouts!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -810,7 +798,6 @@ default_imp_for_payouts_create!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -854,7 +841,6 @@ default_imp_for_payouts_retrieve!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -901,7 +887,6 @@ default_imp_for_payouts_eligibility!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -944,7 +929,6 @@ default_imp_for_payouts_fulfill!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Plaid, connector::Riskified, connector::Signifyd, @@ -985,7 +969,6 @@ default_imp_for_payouts_cancel!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1029,7 +1012,6 @@ default_imp_for_payouts_quote!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1074,7 +1056,6 @@ default_imp_for_payouts_recipient!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1122,7 +1103,6 @@ default_imp_for_payouts_recipient_account!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1167,7 +1147,6 @@ default_imp_for_approve!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1213,7 +1192,6 @@ default_imp_for_reject!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1291,7 +1269,6 @@ default_imp_for_fraud_check!( connector::Noon, connector::Novalnet, connector::Nuvei, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -1363,7 +1340,6 @@ default_imp_for_frm_sale!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1409,7 +1385,6 @@ default_imp_for_frm_checkout!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1455,7 +1430,6 @@ default_imp_for_frm_transaction!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1501,7 +1475,6 @@ default_imp_for_frm_fulfillment!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1547,7 +1520,6 @@ default_imp_for_frm_record_return!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1591,7 +1563,6 @@ default_imp_for_incremental_authorization!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1635,7 +1606,6 @@ default_imp_for_revoking_mandates!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1785,7 +1755,6 @@ default_imp_for_connector_authentication!( connector::Noon, connector::Novalnet, connector::Nuvei, - connector::Opayo, connector::Opennode, connector::Paybox, connector::Payeezy, @@ -1853,7 +1822,6 @@ default_imp_for_authorize_session_token!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1897,7 +1865,6 @@ default_imp_for_calculate_tax!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -1941,7 +1908,6 @@ default_imp_for_session_update!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -1984,7 +1950,6 @@ default_imp_for_post_session_tokens!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Plaid, connector::Riskified, @@ -2030,7 +1995,6 @@ default_imp_for_uas_pre_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -2074,7 +2038,6 @@ default_imp_for_uas_post_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, @@ -2118,7 +2081,6 @@ default_imp_for_uas_authentication!( connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Opayo, connector::Payone, connector::Paypal, connector::Plaid, From 23cfe650fc8e32a4c68f8f54c05aa084e28bbb1b Mon Sep 17 00:00:00 2001 From: Deepanshu Bansal Date: Thu, 20 Feb 2025 15:58:28 +0530 Subject: [PATCH 10/10] chore: Resolve merge conflicts --- .../hyperswitch_connectors/src/default_implementations.rs | 7 +++++++ crates/router/src/core/payments/flows.rs | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index b410e71ffe1..72193d96137 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -3352,6 +3352,7 @@ default_imp_for_uas_authentication_confirmation!( connectors::Aci, connectors::Airwallex, connectors::Amazonpay, + connectors::Authorizedotnet, connectors::Bambora, connectors::Bamboraapac, connectors::Bankofamerica, @@ -3362,6 +3363,7 @@ default_imp_for_uas_authentication_confirmation!( connectors::Boku, connectors::Cashtocode, connectors::Chargebee, + connectors::Checkout, connectors::Coinbase, connectors::Coingate, connectors::Cryptopay, @@ -3387,10 +3389,13 @@ default_imp_for_uas_authentication_confirmation!( connectors::Jpmorgan, connectors::Klarna, connectors::Nomupay, + connectors::Noon, connectors::Novalnet, connectors::Nexinets, connectors::Nexixpay, connectors::Nuvei, + connectors::Opayo, + connectors::Opennode, connectors::Payeezy, connectors::Payu, connectors::Powertranz, @@ -3400,6 +3405,7 @@ default_imp_for_uas_authentication_confirmation!( connectors::Moneris, connectors::Multisafepay, connectors::Paybox, + connectors::Payme, connectors::Placetopay, connectors::Rapyd, connectors::Razorpay, @@ -3409,6 +3415,7 @@ default_imp_for_uas_authentication_confirmation!( connectors::Square, connectors::Taxjar, connectors::Thunes, + connectors::Trustpay, connectors::Tsys, connectors::Worldline, connectors::Worldpay, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index 0bfd3859537..fb34601a7bf 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -2068,16 +2068,10 @@ macro_rules! default_imp_for_uas_authentication_confirmation { default_imp_for_uas_authentication_confirmation!( connector::Adyenplatform, connector::Adyen, - connector::Authorizedotnet, - connector::Checkout, connector::Ebanx, connector::Gpayments, connector::Netcetera, connector::Nmi, - connector::Noon, - connector::Opayo, - connector::Opennode, - connector::Payme, connector::Payone, connector::Paypal, connector::Plaid, @@ -2085,7 +2079,6 @@ default_imp_for_uas_authentication_confirmation!( connector::Signifyd, connector::Stripe, connector::Threedsecureio, - connector::Trustpay, connector::Wellsfargopayout, connector::Wise );