mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-01 02:57:02 +08:00 
			
		
		
		
	feat(nuvei): Googlepay , applepay and partial authorization integration for nuvei (#8985)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
		| @ -1,5 +1,5 @@ | |||||||
| pub mod transformers; | pub mod transformers; | ||||||
| use std::{fmt::Debug, sync::LazyLock}; | use std::sync::LazyLock; | ||||||
|  |  | ||||||
| use api_models::{payments::PaymentIdType, webhooks::IncomingWebhookEvent}; | use api_models::{payments::PaymentIdType, webhooks::IncomingWebhookEvent}; | ||||||
| use common_enums::{enums, CallConnectorAction, PaymentAction}; | use common_enums::{enums, CallConnectorAction, PaymentAction}; | ||||||
| @ -9,6 +9,7 @@ use common_utils::{ | |||||||
|     ext_traits::{ByteSliceExt, BytesExt, ValueExt}, |     ext_traits::{ByteSliceExt, BytesExt, ValueExt}, | ||||||
|     id_type, |     id_type, | ||||||
|     request::{Method, Request, RequestBuilder, RequestContent}, |     request::{Method, Request, RequestBuilder, RequestContent}, | ||||||
|  |     types::{AmountConvertor, StringMajorUnit, StringMajorUnitForConnector}, | ||||||
| }; | }; | ||||||
| use error_stack::ResultExt; | use error_stack::ResultExt; | ||||||
| use hyperswitch_domain_models::{ | use hyperswitch_domain_models::{ | ||||||
| @ -57,8 +58,17 @@ use crate::{ | |||||||
|     utils::{self, is_mandate_supported, PaymentMethodDataType, RouterData as _}, |     utils::{self, is_mandate_supported, PaymentMethodDataType, RouterData as _}, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #[derive(Debug, Clone)] | #[derive(Clone)] | ||||||
| pub struct Nuvei; | pub struct Nuvei { | ||||||
|  |     pub amount_convertor: &'static (dyn AmountConvertor<Output = StringMajorUnit> + Sync), | ||||||
|  | } | ||||||
|  | impl Nuvei { | ||||||
|  |     pub fn new() -> &'static Self { | ||||||
|  |         &Self { | ||||||
|  |             amount_convertor: &StringMajorUnitForConnector, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| impl<Flow, Request, Response> ConnectorCommonExt<Flow, Request, Response> for Nuvei | impl<Flow, Request, Response> ConnectorCommonExt<Flow, Request, Response> for Nuvei | ||||||
| where | where | ||||||
| @ -592,6 +602,7 @@ impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData | |||||||
|         _connectors: &Connectors, |         _connectors: &Connectors, | ||||||
|     ) -> CustomResult<RequestContent, errors::ConnectorError> { |     ) -> CustomResult<RequestContent, errors::ConnectorError> { | ||||||
|         let connector_req = nuvei::NuveiPaymentsRequest::try_from((req, req.get_session_token()?))?; |         let connector_req = nuvei::NuveiPaymentsRequest::try_from((req, req.get_session_token()?))?; | ||||||
|  |  | ||||||
|         Ok(RequestContent::Json(Box::new(connector_req))) |         Ok(RequestContent::Json(Box::new(connector_req))) | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -629,7 +640,6 @@ impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData | |||||||
|             .switch()?; |             .switch()?; | ||||||
|         event_builder.map(|i| i.set_response_body(&response)); |         event_builder.map(|i| i.set_response_body(&response)); | ||||||
|         router_env::logger::info!(connector_response=?response); |         router_env::logger::info!(connector_response=?response); | ||||||
|  |  | ||||||
|         RouterData::try_from(ResponseRouterData { |         RouterData::try_from(ResponseRouterData { | ||||||
|             response, |             response, | ||||||
|             data: data.clone(), |             data: data.clone(), | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -322,7 +322,9 @@ impl ConnectorData { | |||||||
|                 enums::Connector::Novalnet => { |                 enums::Connector::Novalnet => { | ||||||
|                     Ok(ConnectorEnum::Old(Box::new(connector::Novalnet::new()))) |                     Ok(ConnectorEnum::Old(Box::new(connector::Novalnet::new()))) | ||||||
|                 } |                 } | ||||||
|                 enums::Connector::Nuvei => Ok(ConnectorEnum::Old(Box::new(&connector::Nuvei))), |                 enums::Connector::Nuvei => { | ||||||
|  |                     Ok(ConnectorEnum::Old(Box::new(connector::Nuvei::new()))) | ||||||
|  |                 } | ||||||
|                 enums::Connector::Opennode => { |                 enums::Connector::Opennode => { | ||||||
|                     Ok(ConnectorEnum::Old(Box::new(connector::Opennode::new()))) |                     Ok(ConnectorEnum::Old(Box::new(connector::Opennode::new()))) | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -239,7 +239,9 @@ impl FeatureMatrixConnectorData { | |||||||
|                 enums::Connector::Novalnet => { |                 enums::Connector::Novalnet => { | ||||||
|                     Ok(ConnectorEnum::Old(Box::new(connector::Novalnet::new()))) |                     Ok(ConnectorEnum::Old(Box::new(connector::Novalnet::new()))) | ||||||
|                 } |                 } | ||||||
|                 enums::Connector::Nuvei => Ok(ConnectorEnum::Old(Box::new(&connector::Nuvei))), |                 enums::Connector::Nuvei => { | ||||||
|  |                     Ok(ConnectorEnum::Old(Box::new(connector::Nuvei::new()))) | ||||||
|  |                 } | ||||||
|                 enums::Connector::Opennode => { |                 enums::Connector::Opennode => { | ||||||
|                     Ok(ConnectorEnum::Old(Box::new(connector::Opennode::new()))) |                     Ok(ConnectorEnum::Old(Box::new(connector::Opennode::new()))) | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ impl utils::Connector for NuveiTest { | |||||||
|     fn get_data(&self) -> types::api::ConnectorData { |     fn get_data(&self) -> types::api::ConnectorData { | ||||||
|         use router::connector::Nuvei; |         use router::connector::Nuvei; | ||||||
|         utils::construct_connector_data_old( |         utils::construct_connector_data_old( | ||||||
|             Box::new(&Nuvei), |             Box::new(Nuvei::new()), | ||||||
|             types::Connector::Nuvei, |             types::Connector::Nuvei, | ||||||
|             types::api::GetToken::Connector, |             types::api::GetToken::Connector, | ||||||
|             None, |             None, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Nithin N
					Nithin N