diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs index 1f24e1ce412..e7dda0b7925 100644 --- a/crates/hyperswitch_connectors/src/connectors.rs +++ b/crates/hyperswitch_connectors/src/connectors.rs @@ -24,6 +24,7 @@ pub mod fiserv; pub mod fiservemea; pub mod fiuu; pub mod forte; +pub mod globalpay; pub mod globepay; pub mod gocardless; pub mod helcim; @@ -71,14 +72,14 @@ pub use self::{ chargebee::Chargebee, coinbase::Coinbase, 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, 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, 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, + fiservemea::Fiservemea, fiuu::Fiuu, forte::Forte, 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, + 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, }; diff --git a/crates/router/src/connector/globalpay.rs b/crates/hyperswitch_connectors/src/connectors/globalpay.rs similarity index 61% rename from crates/router/src/connector/globalpay.rs rename to crates/hyperswitch_connectors/src/connectors/globalpay.rs index 2e971f8034a..6d233bcfc33 100644 --- a/crates/router/src/connector/globalpay.rs +++ b/crates/hyperswitch_connectors/src/connectors/globalpay.rs @@ -1,42 +1,68 @@ mod requests; -use super::utils as connector_utils; mod response; pub mod transformers; -use ::common_utils::{errors::ReportSwitchExt, ext_traits::ByteSliceExt, request::RequestContent}; -use common_utils::types::{AmountConvertor, StringMinorUnit, StringMinorUnitForConnector}; -use diesel_models::enums; -use error_stack::ResultExt; -use masking::PeekInterface; -use serde_json::Value; -use self::{ - requests::{GlobalpayPaymentsRequest, GlobalpayRefreshTokenRequest}, - response::{ - GlobalpayPaymentsResponse, GlobalpayRefreshTokenErrorResponse, - GlobalpayRefreshTokenResponse, +use api_models::webhooks::IncomingWebhookEvent; +use common_enums::{enums, CallConnectorAction, PaymentAction}; +use common_utils::{ + crypto, + errors::{CustomResult, ReportSwitchExt}, + ext_traits::{ByteSliceExt, BytesExt}, + request::{Method, Request, RequestBuilder, RequestContent}, + types::{AmountConvertor, StringMinorUnit, StringMinorUnitForConnector}, +}; +use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data::PaymentMethodData, + router_data::{AccessToken, ConnectorAuthType, 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, SyncRequestType, + }, + router_response_types::{PaymentsResponseData, RefundsResponseData}, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsCompleteAuthorizeRouterData, PaymentsSyncRouterData, RefundSyncRouterData, + RefundsRouterData, }, }; -use super::utils::{PaymentMethodDataType, RefundsRequestData}; -use crate::{ - configs::settings, - core::{ - errors::{self, CustomResult}, - payments, +use hyperswitch_interfaces::{ + api::{ + self, CaptureSyncMethod, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, + ConnectorRedirectResponse, ConnectorSpecifications, ConnectorValidation, + PaymentsCompleteAuthorize, }, + configs::Connectors, + errors, events::connector_api_logs::ConnectorEvent, - headers, - services::{ - self, - request::{self, Mask}, - ConnectorIntegration, ConnectorSpecifications, ConnectorValidation, - }, types::{ - self, - api::{self, ConnectorCommon, ConnectorCommonExt, PaymentsCompleteAuthorize}, - transformers::ForeignTryFrom, - ErrorResponse, + PaymentsAuthorizeType, PaymentsCaptureType, PaymentsCompleteAuthorizeType, + PaymentsSyncType, PaymentsVoidType, RefreshTokenType, RefundExecuteType, RefundSyncType, + Response, + }, + webhooks::{IncomingWebhook, IncomingWebhookRequestDetails}, +}; +use masking::{Mask, PeekInterface}; +use requests::{GlobalpayPaymentsRequest, GlobalpayRefreshTokenRequest}; +use response::{ + GlobalpayPaymentsResponse, GlobalpayRefreshTokenErrorResponse, GlobalpayRefreshTokenResponse, +}; +use serde_json::Value; + +use crate::{ + constants::headers, + types::{RefreshTokenRouterData, ResponseRouterData}, + utils::{ + construct_not_supported_error_report, convert_amount, get_header_key_value, + is_mandate_supported, ForeignTryFrom, PaymentMethodDataType, RefundsRequestData, }, - utils::{crypto, BytesExt}, }; #[derive(Clone)] @@ -58,9 +84,9 @@ where { fn build_headers( &self, - req: &types::RouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + req: &RouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { let access_token = req .access_token .clone() @@ -69,7 +95,7 @@ where Ok(vec![ ( headers::CONTENT_TYPE.to_string(), - types::PaymentsAuthorizeType::get_content_type(self) + PaymentsAuthorizeType::get_content_type(self) .to_string() .into(), ), @@ -91,20 +117,20 @@ impl ConnectorCommon for Globalpay { "application/json" } - fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str { + fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str { connectors.globalpay.base_url.as_ref() } fn get_auth_header( &self, - _auth_type: &types::ConnectorAuthType, - ) -> CustomResult)>, errors::ConnectorError> { + _auth_type: &ConnectorAuthType, + ) -> CustomResult)>, errors::ConnectorError> { Ok(vec![]) } fn build_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, ) -> CustomResult { let response: transformers::GlobalpayErrorResponse = res @@ -137,17 +163,16 @@ impl ConnectorValidation for Globalpay { match capture_method { enums::CaptureMethod::Automatic | enums::CaptureMethod::Manual - | enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::SequentialAutomatic => Ok(()), - enums::CaptureMethod::Scheduled => Err( - connector_utils::construct_not_implemented_error_report(capture_method, self.id()), + enums::CaptureMethod::ManualMultiple | enums::CaptureMethod::Scheduled => Err( + construct_not_supported_error_report(capture_method, self.id()), ), } } 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, @@ -158,24 +183,20 @@ impl ConnectorValidation for Globalpay { PaymentMethodDataType::Eps, PaymentMethodDataType::Giropay, ]); - connector_utils::is_mandate_supported(pm_data, pm_type, mandate_supported_pmd, self.id()) + is_mandate_supported(pm_data, pm_type, mandate_supported_pmd, self.id()) } } impl PaymentsCompleteAuthorize for Globalpay {} -impl - ConnectorIntegration< - api::CompleteAuthorize, - types::CompleteAuthorizeData, - types::PaymentsResponseData, - > for Globalpay +impl ConnectorIntegration + for Globalpay { 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) } @@ -185,8 +206,8 @@ impl fn get_url( &self, - req: &types::PaymentsCompleteAuthorizeRouterData, - connectors: &settings::Connectors, + req: &PaymentsCompleteAuthorizeRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}transactions/{}/confirmation", @@ -200,28 +221,28 @@ impl fn get_request_body( &self, - _req: &types::PaymentsCompleteAuthorizeRouterData, - _connectors: &settings::Connectors, + _req: &PaymentsCompleteAuthorizeRouterData, + _connectors: &Connectors, ) -> CustomResult { Ok(RequestContent::Json(Box::new(serde_json::json!({})))) } 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(), @@ -230,10 +251,10 @@ impl fn handle_response( &self, - data: &types::PaymentsCompleteAuthorizeRouterData, + data: &PaymentsCompleteAuthorizeRouterData, event_builder: Option<&mut ConnectorEvent>, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("Globalpay PaymentsResponse") @@ -242,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, @@ -252,7 +273,7 @@ impl fn get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -261,20 +282,16 @@ impl impl api::ConnectorAccessToken for Globalpay {} -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { fn get_headers( &self, - _req: &types::RefreshTokenRouterData, - _connectors: &settings::Connectors, - ) -> CustomResult)>, errors::ConnectorError> { + _req: &RefreshTokenRouterData, + _connectors: &Connectors, + ) -> CustomResult)>, errors::ConnectorError> { Ok(vec![ ( headers::CONTENT_TYPE.to_string(), - types::RefreshTokenType::get_content_type(self) - .to_string() - .into(), + RefreshTokenType::get_content_type(self).to_string().into(), ), ("X-GP-Version".to_string(), "2021-03-22".to_string().into()), ]) @@ -286,34 +303,32 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}{}", self.base_url(connectors), "accesstoken")) } fn build_request( &self, - req: &types::RefreshTokenRouterData, - connectors: &settings::Connectors, - ) -> CustomResult, errors::ConnectorError> { + req: &RefreshTokenRouterData, + connectors: &Connectors, + ) -> CustomResult, errors::ConnectorError> { Ok(Some( - services::RequestBuilder::new() - .method(services::Method::Post) - .url(&types::RefreshTokenType::get_url(self, req, connectors)?) + RequestBuilder::new() + .method(Method::Post) + .url(&RefreshTokenType::get_url(self, req, connectors)?) .attach_default_headers() - .headers(types::RefreshTokenType::get_headers(self, req, connectors)?) - .set_body(types::RefreshTokenType::get_request_body( - self, req, connectors, - )?) + .headers(RefreshTokenType::get_headers(self, req, connectors)?) + .set_body(RefreshTokenType::get_request_body(self, req, connectors)?) .build(), )) } fn get_request_body( &self, - req: &types::RefreshTokenRouterData, - _connectors: &settings::Connectors, + req: &RefreshTokenRouterData, + _connectors: &Connectors, ) -> CustomResult { let connector_req = GlobalpayRefreshTokenRequest::try_from(req)?; Ok(RequestContent::Json(Box::new(connector_req))) @@ -321,10 +336,10 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayRefreshTokenResponse = res .response .parse_struct("Globalpay PaymentsResponse") @@ -333,7 +348,7 @@ impl ConnectorIntegration, ) -> CustomResult { let response: GlobalpayRefreshTokenErrorResponse = res @@ -369,33 +384,21 @@ impl api::Payment for Globalpay {} impl api::PaymentToken for Globalpay {} -impl - ConnectorIntegration< - api::PaymentMethodToken, - types::PaymentMethodTokenizationData, - types::PaymentsResponseData, - > for Globalpay +impl ConnectorIntegration + for Globalpay { // Not Implemented (R) } impl api::MandateSetup for Globalpay {} -impl - ConnectorIntegration< - api::SetupMandate, - types::SetupMandateRequestData, - types::PaymentsResponseData, - > for Globalpay +impl ConnectorIntegration + for Globalpay { 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 Globalpay".to_string()) .into(), @@ -405,14 +408,12 @@ impl impl api::PaymentVoid for Globalpay {} -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -422,8 +423,8 @@ impl ConnectorIntegration CustomResult { Ok(format!( "{}/transactions/{}/reversal", @@ -434,34 +435,32 @@ 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 get_request_body( &self, - req: &types::PaymentsCancelRouterData, - _connectors: &settings::Connectors, + req: &PaymentsCancelRouterData, + _connectors: &Connectors, ) -> CustomResult { let amount = req .request .minor_amount .and_then(|amount| { - req.request.currency.map(|currency| { - connector_utils::convert_amount(self.amount_converter, amount, currency) - }) + req.request + .currency + .map(|currency| convert_amount(self.amount_converter, amount, currency)) }) .transpose()?; let connector_router_data = requests::GlobalpayCancelRouterData::from((amount, req)); @@ -471,17 +470,17 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("Globalpay 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, @@ -491,7 +490,7 @@ impl ConnectorIntegration, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -499,14 +498,12 @@ impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -516,8 +513,8 @@ impl ConnectorIntegration CustomResult { Ok(format!( "{}transactions/{}", @@ -531,22 +528,22 @@ 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 get_error_response( &self, - res: types::Response, + res: Response, event_builder: Option<&mut ConnectorEvent>, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -554,10 +551,10 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("globalpay PaymentsResponse") @@ -567,11 +564,11 @@ impl ConnectorIntegration true, - types::SyncRequestType::SinglePaymentSync => false, + SyncRequestType::MultipleCaptureSync(_) => true, + SyncRequestType::SinglePaymentSync => false, }; - types::RouterData::foreign_try_from(( - types::ResponseRouterData { + RouterData::foreign_try_from(( + ResponseRouterData { response, data: data.clone(), http_code: res.status_code, @@ -582,20 +579,18 @@ impl ConnectorIntegration CustomResult { - Ok(services::CaptureSyncMethod::Individual) + ) -> CustomResult { + Ok(CaptureSyncMethod::Individual) } } impl api::PaymentCapture for Globalpay {} -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -605,8 +600,8 @@ impl ConnectorIntegration CustomResult { Ok(format!( "{}/transactions/{}/capture", @@ -617,10 +612,10 @@ impl ConnectorIntegration CustomResult { - let amount = connector_utils::convert_amount( + let amount = convert_amount( self.amount_converter, req.request.minor_amount_to_capture, req.request.currency, @@ -633,18 +628,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(), @@ -653,17 +646,17 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("Globalpay 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, @@ -673,7 +666,7 @@ impl ConnectorIntegration, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -682,21 +675,16 @@ impl ConnectorIntegration - for Globalpay -{ -} +impl ConnectorIntegration for Globalpay {} impl api::PaymentAuthorize for Globalpay {} -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -706,18 +694,18 @@ impl ConnectorIntegration CustomResult { Ok(format!("{}transactions", 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( + let amount = convert_amount( self.amount_converter, req.request.minor_amount, req.request.currency, @@ -730,20 +718,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(), @@ -752,17 +736,17 @@ impl ConnectorIntegration, - res: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("Globalpay 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, @@ -772,7 +756,7 @@ impl ConnectorIntegration, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -783,14 +767,12 @@ impl api::Refund for Globalpay {} impl api::RefundExecute for Globalpay {} impl api::RefundSync for Globalpay {} -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -800,8 +782,8 @@ impl ConnectorIntegration, - connectors: &settings::Connectors, + req: &RefundsRouterData, + connectors: &Connectors, ) -> CustomResult { Ok(format!( "{}transactions/{}/refund", @@ -812,10 +794,10 @@ impl ConnectorIntegration, - _connectors: &settings::Connectors, + req: &RefundsRouterData, + _connectors: &Connectors, ) -> CustomResult { - let amount = connector_utils::convert_amount( + let amount = convert_amount( self.amount_converter, req.request.minor_refund_amount, req.request.currency, @@ -828,29 +810,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: GlobalpayPaymentsResponse = res .response .parse_struct("globalpay RefundResponse") @@ -859,7 +837,7 @@ impl ConnectorIntegration, ) -> CustomResult { self.build_error_response(res, event_builder) } } -impl ConnectorIntegration - for Globalpay -{ +impl ConnectorIntegration for Globalpay { 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) } @@ -893,8 +869,8 @@ impl ConnectorIntegration CustomResult { let refund_id = req.request.get_connector_refund_id()?; Ok(format!( @@ -906,32 +882,32 @@ 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: types::Response, - ) -> CustomResult { + res: Response, + ) -> CustomResult { let response: GlobalpayPaymentsResponse = res .response .parse_struct("globalpay RefundResponse") .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, @@ -941,7 +917,7 @@ impl ConnectorIntegration, ) -> CustomResult { self.build_error_response(res, event_builder) @@ -949,26 +925,26 @@ impl ConnectorIntegration, + _request: &IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new(crypto::Sha512)) } fn get_webhook_source_verification_signature( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &IncomingWebhookRequestDetails<'_>, _connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { - let signature = connector_utils::get_header_key_value("x-gp-signature", request.headers)?; + let signature = get_header_key_value("x-gp-signature", request.headers)?; Ok(signature.as_bytes().to_vec()) } fn get_webhook_source_verification_message( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &IncomingWebhookRequestDetails<'_>, _merchant_id: &common_utils::id_type::MerchantId, connector_webhook_secrets: &api_models::webhooks::ConnectorWebhookSecrets, ) -> CustomResult, errors::ConnectorError> { @@ -983,7 +959,7 @@ impl api::IncomingWebhook for Globalpay { fn get_webhook_object_reference_id( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &IncomingWebhookRequestDetails<'_>, ) -> CustomResult { let details: response::GlobalpayWebhookObjectId = request .body @@ -996,28 +972,26 @@ impl api::IncomingWebhook for Globalpay { fn get_webhook_event_type( &self, - request: &api::IncomingWebhookRequestDetails<'_>, - ) -> CustomResult { + request: &IncomingWebhookRequestDetails<'_>, + ) -> CustomResult { let details: response::GlobalpayWebhookObjectEventType = request .body .parse_struct("GlobalpayWebhookObjectEventType") .switch()?; Ok(match details.status { response::GlobalpayWebhookStatus::Declined => { - api::IncomingWebhookEvent::PaymentIntentFailure + IncomingWebhookEvent::PaymentIntentFailure } response::GlobalpayWebhookStatus::Captured => { - api::IncomingWebhookEvent::PaymentIntentSuccess - } - response::GlobalpayWebhookStatus::Unknown => { - api::IncomingWebhookEvent::EventNotSupported + IncomingWebhookEvent::PaymentIntentSuccess } + response::GlobalpayWebhookStatus::Unknown => IncomingWebhookEvent::EventNotSupported, }) } fn get_webhook_resource_object( &self, - request: &api::IncomingWebhookRequestDetails<'_>, + request: &IncomingWebhookRequestDetails<'_>, ) -> CustomResult, errors::ConnectorError> { Ok(Box::new( request @@ -1028,18 +1002,18 @@ impl api::IncomingWebhook for Globalpay { } } -impl services::ConnectorRedirectResponse for Globalpay { +impl ConnectorRedirectResponse for Globalpay { 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) } } } diff --git a/crates/router/src/connector/globalpay/requests.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs similarity index 100% rename from crates/router/src/connector/globalpay/requests.rs rename to crates/hyperswitch_connectors/src/connectors/globalpay/requests.rs diff --git a/crates/router/src/connector/globalpay/response.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/response.rs similarity index 100% rename from crates/router/src/connector/globalpay/response.rs rename to crates/hyperswitch_connectors/src/connectors/globalpay/response.rs diff --git a/crates/router/src/connector/globalpay/transformers.rs b/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs similarity index 65% rename from crates/router/src/connector/globalpay/transformers.rs rename to crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs index 8008cc309c2..2b74b5f8cd4 100644 --- a/crates/router/src/connector/globalpay/transformers.rs +++ b/crates/hyperswitch_connectors/src/connectors/globalpay/transformers.rs @@ -1,8 +1,24 @@ use common_utils::{ crypto::{self, GenerateDigest}, + errors::ParsingError, + request::Method, types::{AmountConvertor, MinorUnit, StringMinorUnit, StringMinorUnitForConnector}, }; use error_stack::ResultExt; +use hyperswitch_domain_models::{ + payment_method_data, + router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData}, + router_flow_types::{Execute, RSync}, + router_request_types::ResponseId, + router_response_types::{ + MandateReference, PaymentsResponseData, RedirectForm, RefundsResponseData, + }, + types::{ + PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData, + PaymentsSyncRouterData, RefreshTokenRouterData, RefundExecuteRouterData, RefundsRouterData, + }, +}; +use hyperswitch_interfaces::{consts::NO_ERROR_MESSAGE, errors}; use masking::{ExposeInterface, PeekInterface, Secret}; use rand::distributions::DistString; use serde::{Deserialize, Serialize}; @@ -17,11 +33,12 @@ use super::{ response::{GlobalpayPaymentStatus, GlobalpayPaymentsResponse, GlobalpayRefreshTokenResponse}, }; use crate::{ - connector::utils::{self, CardData, PaymentsAuthorizeRequestData, RouterData, WalletData}, - consts, - core::errors, - services::{self, RedirectForm}, - types::{self, api, domain, storage::enums, transformers::ForeignTryFrom, ErrorResponse}, + types::{PaymentsSyncResponseRouterData, RefundsResponseRouterData, ResponseRouterData}, + utils::{ + construct_captures_response_hashmap, to_connector_meta_from_secret, CardData, + ForeignTryFrom, MultipleCaptureSyncResponse, PaymentsAuthorizeRequestData, RouterData as _, + WalletData, + }, }; impl From<(StringMinorUnit, T)> for GlobalPayRouterData { @@ -49,15 +66,13 @@ pub struct GlobalPayMeta { account_name: Secret, } -impl TryFrom<&GlobalPayRouterData<&types::PaymentsAuthorizeRouterData>> - for GlobalpayPaymentsRequest -{ +impl TryFrom<&GlobalPayRouterData<&PaymentsAuthorizeRouterData>> for GlobalpayPaymentsRequest { type Error = Error; fn try_from( - item: &GlobalPayRouterData<&types::PaymentsAuthorizeRouterData>, + item: &GlobalPayRouterData<&PaymentsAuthorizeRouterData>, ) -> Result { let metadata: GlobalPayMeta = - utils::to_connector_meta_from_secret(item.router_data.connector_meta_data.clone())?; + to_connector_meta_from_secret(item.router_data.connector_meta_data.clone())?; let account_name = metadata.account_name; let (initiator, stored_credential, brand_reference) = get_mandate_details(item.router_data)?; @@ -116,12 +131,12 @@ impl TryFrom<&GlobalPayRouterData<&types::PaymentsAuthorizeRouterData>> } } -impl TryFrom<&GlobalPayRouterData<&types::PaymentsCaptureRouterData>> +impl TryFrom<&GlobalPayRouterData<&PaymentsCaptureRouterData>> for requests::GlobalpayCaptureRequest { type Error = Error; fn try_from( - value: &GlobalPayRouterData<&types::PaymentsCaptureRouterData>, + value: &GlobalPayRouterData<&PaymentsCaptureRouterData>, ) -> Result { Ok(Self { amount: Some(value.amount.to_owned()), @@ -147,12 +162,12 @@ impl TryFrom<&GlobalPayRouterData<&types::PaymentsCaptureRouterData>> } } -impl TryFrom<&GlobalpayCancelRouterData<&types::PaymentsCancelRouterData>> +impl TryFrom<&GlobalpayCancelRouterData<&PaymentsCancelRouterData>> for requests::GlobalpayCancelRequest { type Error = Error; fn try_from( - value: &GlobalpayCancelRouterData<&types::PaymentsCancelRouterData>, + value: &GlobalpayCancelRouterData<&PaymentsCancelRouterData>, ) -> Result { Ok(Self { amount: value.amount.clone(), @@ -165,11 +180,11 @@ pub struct GlobalpayAuthType { pub key: Secret, } -impl TryFrom<&types::ConnectorAuthType> for GlobalpayAuthType { +impl TryFrom<&ConnectorAuthType> for GlobalpayAuthType { type Error = Error; - 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 { app_id: key1.to_owned(), key: api_key.to_owned(), }), @@ -178,8 +193,8 @@ impl TryFrom<&types::ConnectorAuthType> for GlobalpayAuthType { } } -impl TryFrom for types::AccessToken { - type Error = error_stack::Report; +impl TryFrom for AccessToken { + type Error = error_stack::Report; fn try_from(item: GlobalpayRefreshTokenResponse) -> Result { Ok(Self { @@ -189,10 +204,10 @@ impl TryFrom for types::AccessToken { } } -impl TryFrom<&types::RefreshTokenRouterData> for GlobalpayRefreshTokenRequest { +impl TryFrom<&RefreshTokenRouterData> for GlobalpayRefreshTokenRequest { type Error = Error; - fn try_from(item: &types::RefreshTokenRouterData) -> Result { + fn try_from(item: &RefreshTokenRouterData) -> Result { let globalpay_auth = GlobalpayAuthType::try_from(&item.connector_auth_type) .change_context(errors::ConnectorError::FailedToObtainAuthType) .attach_printable("Could not convert connector_auth to globalpay_auth")?; @@ -215,7 +230,7 @@ impl TryFrom<&types::RefreshTokenRouterData> for GlobalpayRefreshTokenRequest { } } -impl From for enums::AttemptStatus { +impl From for common_enums::AttemptStatus { fn from(item: GlobalpayPaymentStatus) -> Self { match item { GlobalpayPaymentStatus::Captured | GlobalpayPaymentStatus::Funded => Self::Charged, @@ -228,7 +243,7 @@ impl From for enums::AttemptStatus { } } -impl From for enums::RefundStatus { +impl From for common_enums::RefundStatus { fn from(item: GlobalpayPaymentStatus) -> Self { match item { GlobalpayPaymentStatus::Captured | GlobalpayPaymentStatus::Funded => Self::Success, @@ -239,26 +254,26 @@ impl From for enums::RefundStatus { } } -impl From> for requests::CaptureMode { - fn from(capture_method: Option) -> Self { +impl From> for requests::CaptureMode { + fn from(capture_method: Option) -> Self { match capture_method { - Some(enums::CaptureMethod::Manual) => Self::Later, - Some(enums::CaptureMethod::ManualMultiple) => Self::Multiple, + Some(common_enums::CaptureMethod::Manual) => Self::Later, + Some(common_enums::CaptureMethod::ManualMultiple) => Self::Multiple, _ => Self::Auto, } } } fn get_payment_response( - status: enums::AttemptStatus, + status: common_enums::AttemptStatus, response: GlobalpayPaymentsResponse, redirection_data: Option, -) -> Result { +) -> Result { let mandate_reference = response.payment_method.as_ref().and_then(|pm| { pm.card .as_ref() .and_then(|card| card.brand_reference.to_owned()) - .map(|id| types::MandateReference { + .map(|id| MandateReference { connector_mandate_id: Some(id.expose()), payment_method_id: None, mandate_metadata: None, @@ -266,15 +281,15 @@ fn get_payment_response( }) }); match status { - enums::AttemptStatus::Failure => Err(ErrorResponse { + common_enums::AttemptStatus::Failure => Err(ErrorResponse { message: response .payment_method .and_then(|pm| pm.message) - .unwrap_or_else(|| consts::NO_ERROR_MESSAGE.to_string()), + .unwrap_or_else(|| NO_ERROR_MESSAGE.to_string()), ..Default::default() }), - _ => Ok(types::PaymentsResponseData::TransactionResponse { - resource_id: types::ResponseId::ConnectorTransactionId(response.id), + _ => Ok(PaymentsResponseData::TransactionResponse { + resource_id: ResponseId::ConnectorTransactionId(response.id), redirection_data: Box::new(redirection_data), mandate_reference: Box::new(mandate_reference), connector_metadata: None, @@ -286,20 +301,14 @@ fn get_payment_response( } } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { type Error = Error; fn try_from( - item: types::ResponseRouterData< - F, - GlobalpayPaymentsResponse, - T, - types::PaymentsResponseData, - >, + item: ResponseRouterData, ) -> Result { - let status = enums::AttemptStatus::from(item.response.status); + let status = common_enums::AttemptStatus::from(item.response.status); let redirect_url = item .response .payment_method @@ -315,8 +324,7 @@ impl Url::parse(url).change_context(errors::ConnectorError::FailedToObtainIntegrationUrl) }) .transpose()?; - let redirection_data = - redirect_url.map(|url| RedirectForm::from((url, services::Method::Get))); + let redirection_data = redirect_url.map(|url| RedirectForm::from((url, Method::Get))); Ok(Self { status, response: get_payment_response(status, item.response, redirection_data), @@ -327,23 +335,23 @@ impl impl ForeignTryFrom<( - types::PaymentsSyncResponseRouterData, + PaymentsSyncResponseRouterData, bool, - )> for types::PaymentsSyncRouterData + )> for PaymentsSyncRouterData { type Error = Error; fn foreign_try_from( (value, is_multiple_capture_sync): ( - types::PaymentsSyncResponseRouterData, + PaymentsSyncResponseRouterData, bool, ), ) -> Result { if is_multiple_capture_sync { let capture_sync_response_list = - utils::construct_captures_response_hashmap(vec![value.response])?; + construct_captures_response_hashmap(vec![value.response])?; Ok(Self { - response: Ok(types::PaymentsResponseData::MultipleCaptureResponse { + response: Ok(PaymentsResponseData::MultipleCaptureResponse { capture_sync_response_list, }), ..value.data @@ -354,16 +362,15 @@ impl } } -impl - TryFrom> - for types::RouterData +impl TryFrom> + for RouterData { - type Error = error_stack::Report; + type Error = error_stack::Report; fn try_from( - item: types::ResponseRouterData, + item: ResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::AccessToken { + response: Ok(AccessToken { token: item.response.token, expires: item.response.seconds_to_expire, }), @@ -372,47 +379,43 @@ impl } } -impl TryFrom<&GlobalPayRouterData<&types::RefundsRouterData>> - for requests::GlobalpayRefundRequest -{ +impl TryFrom<&GlobalPayRouterData<&RefundsRouterData>> for requests::GlobalpayRefundRequest { type Error = Error; - fn try_from( - item: &GlobalPayRouterData<&types::RefundsRouterData>, - ) -> Result { + fn try_from(item: &GlobalPayRouterData<&RefundsRouterData>) -> Result { Ok(Self { amount: item.amount.to_owned(), }) } } -impl TryFrom> - for types::RefundExecuteRouterData +impl TryFrom> + for RefundExecuteRouterData { type Error = Error; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id, - refund_status: enums::RefundStatus::from(item.response.status), + refund_status: common_enums::RefundStatus::from(item.response.status), }), ..item.data }) } } -impl TryFrom> - for types::RefundsRouterData +impl TryFrom> + for RefundsRouterData { type Error = Error; fn try_from( - item: types::RefundsResponseRouterData, + item: RefundsResponseRouterData, ) -> Result { Ok(Self { - response: Ok(types::RefundsResponseData { + response: Ok(RefundsResponseData { connector_refund_id: item.response.id, - refund_status: enums::RefundStatus::from(item.response.status), + refund_status: common_enums::RefundStatus::from(item.response.status), }), ..item.data }) @@ -427,28 +430,30 @@ pub struct GlobalpayErrorResponse { } fn get_payment_method_data( - item: &types::PaymentsAuthorizeRouterData, + item: &PaymentsAuthorizeRouterData, brand_reference: Option, ) -> Result { match &item.request.payment_method_data { - domain::PaymentMethodData::Card(ccard) => Ok(PaymentMethodData::Card(requests::Card { - number: ccard.card_number.clone(), - expiry_month: ccard.card_exp_month.clone(), - expiry_year: ccard.get_card_expiry_year_2_digit()?, - cvv: ccard.card_cvc.clone(), - account_type: None, - authcode: None, - avs_address: None, - avs_postal_code: None, - brand_reference, - chip_condition: None, - funding: None, - pin_block: None, - tag: None, - track: None, - })), - domain::PaymentMethodData::Wallet(wallet_data) => get_wallet_data(wallet_data), - domain::PaymentMethodData::BankRedirect(bank_redirect) => { + payment_method_data::PaymentMethodData::Card(ccard) => { + Ok(PaymentMethodData::Card(requests::Card { + number: ccard.card_number.clone(), + expiry_month: ccard.card_exp_month.clone(), + expiry_year: ccard.get_card_expiry_year_2_digit()?, + cvv: ccard.card_cvc.clone(), + account_type: None, + authcode: None, + avs_address: None, + avs_postal_code: None, + brand_reference, + chip_condition: None, + funding: None, + pin_block: None, + tag: None, + track: None, + })) + } + payment_method_data::PaymentMethodData::Wallet(wallet_data) => get_wallet_data(wallet_data), + payment_method_data::PaymentMethodData::BankRedirect(bank_redirect) => { PaymentMethodData::try_from(bank_redirect) } _ => Err(errors::ConnectorError::NotImplemented( @@ -457,17 +462,17 @@ fn get_payment_method_data( } } -fn get_return_url(item: &types::PaymentsAuthorizeRouterData) -> Option { +fn get_return_url(item: &PaymentsAuthorizeRouterData) -> Option { match item.request.payment_method_data.clone() { - domain::PaymentMethodData::Wallet(domain::WalletData::PaypalRedirect(_)) => { - item.request.complete_authorize_url.clone() - } + payment_method_data::PaymentMethodData::Wallet( + payment_method_data::WalletData::PaypalRedirect(_), + ) => item.request.complete_authorize_url.clone(), _ => item.request.router_return_url.clone(), } } type MandateDetails = (Option, Option, Option); -fn get_mandate_details(item: &types::PaymentsAuthorizeRouterData) -> Result { +fn get_mandate_details(item: &PaymentsAuthorizeRouterData) -> Result { Ok(if item.request.is_mandate_payment() { let connector_mandate_id = item.request.mandate_id.as_ref().and_then(|mandate_ids| { match mandate_ids.mandate_reference_id.clone() { @@ -496,12 +501,16 @@ fn get_mandate_details(item: &types::PaymentsAuthorizeRouterData) -> Result Result { +fn get_wallet_data( + wallet_data: &payment_method_data::WalletData, +) -> Result { match wallet_data { - domain::WalletData::PaypalRedirect(_) => Ok(PaymentMethodData::Apm(requests::Apm { - provider: Some(ApmProvider::Paypal), - })), - domain::WalletData::GooglePay(_) => { + payment_method_data::WalletData::PaypalRedirect(_) => { + Ok(PaymentMethodData::Apm(requests::Apm { + provider: Some(ApmProvider::Paypal), + })) + } + payment_method_data::WalletData::GooglePay(_) => { Ok(PaymentMethodData::DigitalWallet(requests::DigitalWallet { provider: Some(requests::DigitalWalletProvider::PayByGoogle), payment_token: wallet_data.get_wallet_token_as_json("Google Pay".to_string())?, @@ -513,20 +522,20 @@ fn get_wallet_data(wallet_data: &domain::WalletData) -> Result for PaymentMethodData { +impl TryFrom<&payment_method_data::BankRedirectData> for PaymentMethodData { type Error = Error; - fn try_from(value: &domain::BankRedirectData) -> Result { + fn try_from(value: &payment_method_data::BankRedirectData) -> Result { match value { - domain::BankRedirectData::Eps { .. } => Ok(Self::Apm(requests::Apm { + payment_method_data::BankRedirectData::Eps { .. } => Ok(Self::Apm(requests::Apm { provider: Some(ApmProvider::Eps), })), - domain::BankRedirectData::Giropay { .. } => Ok(Self::Apm(requests::Apm { + payment_method_data::BankRedirectData::Giropay { .. } => Ok(Self::Apm(requests::Apm { provider: Some(ApmProvider::Giropay), })), - domain::BankRedirectData::Ideal { .. } => Ok(Self::Apm(requests::Apm { + payment_method_data::BankRedirectData::Ideal { .. } => Ok(Self::Apm(requests::Apm { provider: Some(ApmProvider::Ideal), })), - domain::BankRedirectData::Sofort { .. } => Ok(Self::Apm(requests::Apm { + payment_method_data::BankRedirectData::Sofort { .. } => Ok(Self::Apm(requests::Apm { provider: Some(ApmProvider::Sofort), })), _ => Err(errors::ConnectorError::NotImplemented("Payment method".to_string()).into()), @@ -534,22 +543,20 @@ impl TryFrom<&domain::BankRedirectData> for PaymentMethodData { } } -impl utils::MultipleCaptureSyncResponse for GlobalpayPaymentsResponse { +impl MultipleCaptureSyncResponse for GlobalpayPaymentsResponse { fn get_connector_capture_id(&self) -> String { self.id.clone() } - fn get_capture_attempt_status(&self) -> diesel_models::enums::AttemptStatus { - enums::AttemptStatus::from(self.status) + fn get_capture_attempt_status(&self) -> common_enums::AttemptStatus { + common_enums::AttemptStatus::from(self.status) } fn is_capture_response(&self) -> bool { true } - fn get_amount_captured( - &self, - ) -> Result, error_stack::Report> { + fn get_amount_captured(&self) -> Result, error_stack::Report> { match self.amount.clone() { Some(amount) => { let minor_amount = StringMinorUnitForConnector::convert_back( diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs index f4d6de343c2..e319718da7c 100644 --- a/crates/hyperswitch_connectors/src/default_implementations.rs +++ b/crates/hyperswitch_connectors/src/default_implementations.rs @@ -120,6 +120,7 @@ default_imp_for_authorize_session_token!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -200,6 +201,7 @@ default_imp_for_calculate_tax!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -306,6 +308,7 @@ default_imp_for_session_update!( connectors::Placetopay, connectors::UnifiedAuthenticationService, connectors::Fiuu, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Worldline, @@ -387,6 +390,7 @@ default_imp_for_post_session_tokens!( connectors::Payu, connectors::Placetopay, connectors::Fiuu, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Worldline, @@ -514,6 +518,7 @@ default_imp_for_incremental_authorization!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -596,6 +601,7 @@ default_imp_for_create_customer!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Helcim, connectors::Iatapay, @@ -748,6 +754,7 @@ default_imp_for_pre_processing_steps!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Helcim, connectors::Iatapay, @@ -827,6 +834,7 @@ default_imp_for_post_processing_steps!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -910,6 +918,7 @@ default_imp_for_approve!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -993,6 +1002,7 @@ default_imp_for_reject!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1076,6 +1086,7 @@ default_imp_for_webhook_source_verification!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1160,6 +1171,7 @@ default_imp_for_accept_dispute!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1243,6 +1255,7 @@ default_imp_for_submit_evidence!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1326,6 +1339,7 @@ default_imp_for_defend_dispute!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Iatapay, @@ -1418,6 +1432,7 @@ default_imp_for_file_upload!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1493,6 +1508,7 @@ default_imp_for_payouts!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1577,6 +1593,7 @@ default_imp_for_payouts_create!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1662,6 +1679,7 @@ default_imp_for_payouts_retrieve!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1747,6 +1765,7 @@ default_imp_for_payouts_eligibility!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1831,6 +1850,7 @@ default_imp_for_payouts_fulfill!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1916,6 +1936,7 @@ default_imp_for_payouts_cancel!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2001,6 +2022,7 @@ default_imp_for_payouts_quote!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2086,6 +2108,7 @@ default_imp_for_payouts_recipient!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2171,6 +2194,7 @@ default_imp_for_payouts_recipient_account!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2256,6 +2280,7 @@ default_imp_for_frm_sale!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2341,6 +2366,7 @@ default_imp_for_frm_checkout!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2426,6 +2452,7 @@ default_imp_for_frm_transaction!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2511,6 +2538,7 @@ default_imp_for_frm_fulfillment!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2596,6 +2624,7 @@ default_imp_for_frm_record_return!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2677,6 +2706,7 @@ default_imp_for_revoking_mandates!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2760,6 +2790,7 @@ default_imp_for_uas_pre_authentication!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2841,6 +2872,7 @@ default_imp_for_uas_post_authentication!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs index 17aa7cef824..c5517522ef6 100644 --- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs +++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs @@ -230,6 +230,7 @@ default_imp_for_new_connector_integration_payment!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -314,6 +315,7 @@ default_imp_for_new_connector_integration_refund!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -393,6 +395,7 @@ default_imp_for_new_connector_integration_connector_access_token!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -477,6 +480,7 @@ default_imp_for_new_connector_integration_accept_dispute!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -560,6 +564,7 @@ default_imp_for_new_connector_integration_submit_evidence!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -644,6 +649,7 @@ default_imp_for_new_connector_integration_defend_dispute!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -738,6 +744,7 @@ default_imp_for_new_connector_integration_file_upload!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -824,6 +831,7 @@ default_imp_for_new_connector_integration_payouts_create!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -910,6 +918,7 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -996,6 +1005,7 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1082,6 +1092,7 @@ default_imp_for_new_connector_integration_payouts_cancel!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1168,6 +1179,7 @@ default_imp_for_new_connector_integration_payouts_quote!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1254,6 +1266,7 @@ default_imp_for_new_connector_integration_payouts_recipient!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1340,6 +1353,7 @@ default_imp_for_new_connector_integration_payouts_sync!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1426,6 +1440,7 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1510,6 +1525,7 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1596,6 +1612,7 @@ default_imp_for_new_connector_integration_frm_sale!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1682,6 +1699,7 @@ default_imp_for_new_connector_integration_frm_checkout!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1768,6 +1786,7 @@ default_imp_for_new_connector_integration_frm_transaction!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1854,6 +1873,7 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -1940,6 +1960,7 @@ default_imp_for_new_connector_integration_frm_record_return!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, @@ -2023,6 +2044,7 @@ default_imp_for_new_connector_integration_revoking_mandates!( connectors::Fiservemea, connectors::Fiuu, connectors::Forte, + connectors::Globalpay, connectors::Globepay, connectors::Gocardless, connectors::Helcim, diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs index 6b5204a0c86..09dc17f347b 100644 --- a/crates/hyperswitch_connectors/src/utils.rs +++ b/crates/hyperswitch_connectors/src/utils.rs @@ -10,7 +10,7 @@ use common_enums::{ }; use common_utils::{ consts::BASE64_ENGINE, - errors::{CustomResult, ReportSwitchExt}, + errors::{CustomResult, ParsingError, ReportSwitchExt}, ext_traits::{OptionExt, StringExt, ValueExt}, id_type, pii::{self, Email, IpAddress}, @@ -29,6 +29,7 @@ use hyperswitch_domain_models::{ PaymentsCancelData, PaymentsCaptureData, PaymentsPreProcessingData, PaymentsSyncData, RefundsData, ResponseId, SetupMandateRequestData, }, + router_response_types::CaptureSyncResponse, types::OrderDetailsWithAmount, }; use hyperswitch_interfaces::{api, consts, errors, types::Response}; @@ -153,6 +154,47 @@ pub(crate) fn get_error_code_error_message_based_on_priority( .cloned() } +pub trait MultipleCaptureSyncResponse { + fn get_connector_capture_id(&self) -> String; + fn get_capture_attempt_status(&self) -> AttemptStatus; + fn is_capture_response(&self) -> bool; + fn get_connector_reference_id(&self) -> Option { + None + } + fn get_amount_captured(&self) -> Result, error_stack::Report>; +} + +pub(crate) fn construct_captures_response_hashmap( + capture_sync_response_list: Vec, +) -> CustomResult, errors::ConnectorError> +where + T: MultipleCaptureSyncResponse, +{ + let mut hashmap = HashMap::new(); + for capture_sync_response in capture_sync_response_list { + let connector_capture_id = capture_sync_response.get_connector_capture_id(); + if capture_sync_response.is_capture_response() { + hashmap.insert( + connector_capture_id.clone(), + CaptureSyncResponse::Success { + resource_id: ResponseId::ConnectorTransactionId(connector_capture_id), + status: capture_sync_response.get_capture_attempt_status(), + connector_response_reference_id: capture_sync_response + .get_connector_reference_id(), + amount: capture_sync_response + .get_amount_captured() + .change_context(errors::ConnectorError::AmountConversionFailed) + .attach_printable( + "failed to convert back captured response amount to minor unit", + )?, + }, + ); + } + } + + Ok(hashmap) +} + #[derive(Clone, Debug, serde::Serialize)] #[serde(rename_all = "camelCase")] pub struct GooglePayWalletData { diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs index 325d31e7c7c..a630ef5ff3b 100644 --- a/crates/router/src/connector.rs +++ b/crates/router/src/connector.rs @@ -5,7 +5,6 @@ pub mod checkout; #[cfg(feature = "dummy_connector")] pub mod dummyconnector; pub mod ebanx; -pub mod globalpay; pub mod gpayments; pub mod netcetera; pub mod nmi; @@ -35,8 +34,8 @@ pub use hyperswitch_connectors::connectors::{ 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, globepay, globepay::Globepay, gocardless, - gocardless::Gocardless, helcim, helcim::Helcim, iatapay, iatapay::Iatapay, inespay, + fiuu::Fiuu, forte, forte::Forte, 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, @@ -55,9 +54,9 @@ pub use hyperswitch_connectors::connectors::{ pub use self::dummyconnector::DummyConnector; pub use self::{ adyen::Adyen, adyenplatform::Adyenplatform, authorizedotnet::Authorizedotnet, - checkout::Checkout, ebanx::Ebanx, globalpay::Globalpay, 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, + 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, }; 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 447d581e47c..818f4976780 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 @@ default_imp_for_new_connector_integration_payment!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -742,7 +741,6 @@ default_imp_for_new_connector_integration_refund!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -778,7 +776,6 @@ default_imp_for_new_connector_integration_connector_access_token!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -836,7 +833,6 @@ default_imp_for_new_connector_integration_accept_dispute!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -876,7 +872,6 @@ default_imp_for_new_connector_integration_defend_dispute!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -900,7 +895,6 @@ default_imp_for_new_connector_integration_submit_evidence!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -951,7 +945,6 @@ default_imp_for_new_connector_integration_file_upload!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1082,7 +1075,6 @@ default_imp_for_new_connector_integration_payouts_create!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1125,7 +1117,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1168,7 +1159,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1211,7 +1201,6 @@ default_imp_for_new_connector_integration_payouts_cancel!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1254,7 +1243,6 @@ default_imp_for_new_connector_integration_payouts_quote!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1297,7 +1285,6 @@ default_imp_for_new_connector_integration_payouts_recipient!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1340,7 +1327,6 @@ default_imp_for_new_connector_integration_payouts_sync!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1383,7 +1369,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1424,7 +1409,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1555,7 +1539,6 @@ default_imp_for_new_connector_integration_frm_sale!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1598,7 +1581,6 @@ default_imp_for_new_connector_integration_frm_checkout!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1641,7 +1623,6 @@ default_imp_for_new_connector_integration_frm_transaction!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1684,7 +1665,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1727,7 +1707,6 @@ default_imp_for_new_connector_integration_frm_record_return!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1767,7 +1746,6 @@ default_imp_for_new_connector_integration_revoking_mandates!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1946,7 +1924,6 @@ default_imp_for_new_connector_integration_uas!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs index df427b474c3..3beccdc4be0 100644 --- a/crates/router/src/core/payments/flows.rs +++ b/crates/router/src/core/payments/flows.rs @@ -263,7 +263,6 @@ default_imp_for_webhook_source_verification!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -315,7 +314,6 @@ default_imp_for_create_customer!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -513,7 +511,6 @@ default_imp_for_accept_dispute!( connector::Adyenplatform, connector::Authorizedotnet, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -586,7 +583,6 @@ default_imp_for_file_upload!( connector::Adyenplatform, connector::Authorizedotnet, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -636,7 +632,6 @@ default_imp_for_submit_evidence!( connector::Adyenplatform, connector::Authorizedotnet, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -686,7 +681,6 @@ default_imp_for_defend_dispute!( connector::Adyenplatform, connector::Authorizedotnet, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -753,7 +747,6 @@ default_imp_for_pre_processing_steps!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Noon, @@ -791,7 +784,6 @@ default_imp_for_post_processing_steps!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Noon, @@ -819,7 +811,6 @@ impl Payouts for connector::DummyConnector {} default_imp_for_payouts!( connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -867,7 +858,6 @@ default_imp_for_payouts_create!( connector::Adyenplatform, connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -918,7 +908,6 @@ default_imp_for_payouts_retrieve!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -972,7 +961,6 @@ default_imp_for_payouts_eligibility!( connector::Adyenplatform, connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1022,7 +1010,6 @@ impl default_imp_for_payouts_fulfill!( connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1070,7 +1057,6 @@ default_imp_for_payouts_cancel!( connector::Adyenplatform, connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1121,7 +1107,6 @@ default_imp_for_payouts_quote!( connector::Adyen, connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1173,7 +1158,6 @@ default_imp_for_payouts_recipient!( connector::Adyen, connector::Authorizedotnet, connector::Checkout, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1228,7 +1212,6 @@ default_imp_for_payouts_recipient_account!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1280,7 +1263,6 @@ default_imp_for_approve!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1333,7 +1315,6 @@ default_imp_for_reject!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1487,7 +1468,6 @@ default_imp_for_frm_sale!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1540,7 +1520,6 @@ default_imp_for_frm_checkout!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1593,7 +1572,6 @@ default_imp_for_frm_transaction!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1646,7 +1624,6 @@ default_imp_for_frm_fulfillment!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1699,7 +1676,6 @@ default_imp_for_frm_record_return!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1750,7 +1726,6 @@ default_imp_for_incremental_authorization!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -1801,7 +1776,6 @@ default_imp_for_revoking_mandates!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2022,7 +1996,6 @@ default_imp_for_authorize_session_token!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2073,7 +2046,6 @@ default_imp_for_calculate_tax!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2124,7 +2096,6 @@ default_imp_for_session_update!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2174,7 +2145,6 @@ default_imp_for_post_session_tokens!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2227,7 +2197,6 @@ default_imp_for_uas_pre_authentication!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi, @@ -2278,7 +2247,6 @@ default_imp_for_uas_post_authentication!( connector::Authorizedotnet, connector::Checkout, connector::Ebanx, - connector::Globalpay, connector::Gpayments, connector::Netcetera, connector::Nmi,