From f960438963ef4df812d9c89eb46e1b638905cb5e Mon Sep 17 00:00:00 2001 From: sai-harsha-vardhan <harsha111hero@gmail.com> Date: Fri, 31 Jan 2025 16:04:17 +0530 Subject: [PATCH 1/4] add sdk-type and default-sdk-type in netcetera authentication request --- crates/api_models/src/payments.rs | 17 ++++++++++++++ .../connector/netcetera/netcetera_types.rs | 23 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index b6152cc9787..d3e407f9470 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -6548,6 +6548,23 @@ pub struct SdkInformation { pub sdk_reference_number: String, /// Indicates maximum amount of time in minutes pub sdk_max_timeout: u8, + /// Indicates the type of 3DS SDK + pub sdk_type: Option<SdkTypeEnum>, +} + +/// Enum representing the type of 3DS SDK. +#[derive(Serialize, Deserialize, Debug, Clone)] +pub enum SdkTypeEnum { + #[serde(rename = "01")] + DefaultSdk, + #[serde(rename = "02")] + SplitSdk, + #[serde(rename = "03")] + LimitedSdk, + #[serde(rename = "04")] + BrowserSdk, + #[serde(rename = "05")] + ShellSdk, } #[cfg(feature = "v2")] diff --git a/crates/router/src/connector/netcetera/netcetera_types.rs b/crates/router/src/connector/netcetera/netcetera_types.rs index 0ecbbf63e3e..074552c7917 100644 --- a/crates/router/src/connector/netcetera/netcetera_types.rs +++ b/crates/router/src/connector/netcetera/netcetera_types.rs @@ -1563,13 +1563,32 @@ impl From<api_models::payments::SdkInformation> for Sdk { sdk_reference_number: Some(sdk_info.sdk_reference_number), sdk_trans_id: Some(sdk_info.sdk_trans_id), sdk_server_signed_content: None, - sdk_type: None, - default_sdk_type: None, + sdk_type: sdk_info + .sdk_type + .map(SdkTypeEnum::from) + .or(Some(SdkTypeEnum::DefaultSdk)), + default_sdk_type: Some(DefaultSdkType { + // hardcoding this value because, it's the only value that is accepted + sdk_variant: "01".to_string(), + wrapped_ind: None, + }), split_sdk_type: None, } } } +impl From<api_models::payments::SdkTypeEnum> for SdkTypeEnum { + fn from(sdk_type: api_models::payments::SdkTypeEnum) -> Self { + match sdk_type { + api_models::payments::SdkTypeEnum::DefaultSdk => Self::DefaultSdk, + api_models::payments::SdkTypeEnum::SplitSdk => Self::SplitSdk, + api_models::payments::SdkTypeEnum::LimitedSdk => Self::LimitedSdk, + api_models::payments::SdkTypeEnum::BrowserSdk => Self::BrowserSdk, + api_models::payments::SdkTypeEnum::ShellSdk => Self::ShellSdk, + } + } +} + /// Enum representing the type of 3DS SDK. #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SdkTypeEnum { From 1dde10a0cbe2811c534202919fb01c97338730d0 Mon Sep 17 00:00:00 2001 From: sai-harsha-vardhan <harsha111hero@gmail.com> Date: Fri, 31 Jan 2025 19:52:50 +0530 Subject: [PATCH 2/4] fix openapi --- api-reference/openapi_spec.json | 19 +++++++++++++++++++ crates/api_models/src/payments.rs | 6 +++--- crates/openapi/src/openapi.rs | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/api-reference/openapi_spec.json b/api-reference/openapi_spec.json index d218e4d2074..9b840f53138 100644 --- a/api-reference/openapi_spec.json +++ b/api-reference/openapi_spec.json @@ -24523,6 +24523,14 @@ "format": "int32", "description": "Indicates maximum amount of time in minutes", "minimum": 0 + }, + "sdk_type": { + "allOf": [ + { + "$ref": "#/components/schemas/SdkType" + } + ], + "nullable": true } } }, @@ -24552,6 +24560,17 @@ } } }, + "SdkType": { + "type": "string", + "description": "Enum representing the type of 3DS SDK.", + "enum": [ + "01", + "02", + "03", + "04", + "05" + ] + }, "SecretInfoToInitiateSdk": { "type": "object", "required": [ diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index d3e407f9470..2c0a09bf8f0 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -6549,12 +6549,12 @@ pub struct SdkInformation { /// Indicates maximum amount of time in minutes pub sdk_max_timeout: u8, /// Indicates the type of 3DS SDK - pub sdk_type: Option<SdkTypeEnum>, + pub sdk_type: Option<SdkType>, } /// Enum representing the type of 3DS SDK. -#[derive(Serialize, Deserialize, Debug, Clone)] -pub enum SdkTypeEnum { +#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)] +pub enum SdkType { #[serde(rename = "01")] DefaultSdk, #[serde(rename = "02")] diff --git a/crates/openapi/src/openapi.rs b/crates/openapi/src/openapi.rs index 3a634ae2a54..de358f79332 100644 --- a/crates/openapi/src/openapi.rs +++ b/crates/openapi/src/openapi.rs @@ -653,6 +653,7 @@ Never share your secret api keys. Keep them guarded and secure. api_models::enums::PaymentChargeType, api_models::enums::StripeChargeType, api_models::payments::CustomerDetailsResponse, + api_models::payments::SdkType, api_models::payments::OpenBankingData, api_models::payments::OpenBankingSessionToken, api_models::payments::BankDebitResponse, From f51fe7524493cfb4feb01618a2c6287acfd1b229 Mon Sep 17 00:00:00 2001 From: sai-harsha-vardhan <harsha111hero@gmail.com> Date: Sat, 1 Feb 2025 12:37:59 +0530 Subject: [PATCH 3/4] fix ci checks --- .../connector/netcetera/netcetera_types.rs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/crates/router/src/connector/netcetera/netcetera_types.rs b/crates/router/src/connector/netcetera/netcetera_types.rs index 074552c7917..36daa62e558 100644 --- a/crates/router/src/connector/netcetera/netcetera_types.rs +++ b/crates/router/src/connector/netcetera/netcetera_types.rs @@ -1538,7 +1538,7 @@ pub struct Sdk { /// /// This field is required for requests where deviceChannel = 01 (APP). /// Available for supporting EMV 3DS 2.3.1 and later versions. - sdk_type: Option<SdkTypeEnum>, + sdk_type: Option<SdkType>, /// Indicates the characteristics of a Default-SDK. /// @@ -1565,8 +1565,8 @@ impl From<api_models::payments::SdkInformation> for Sdk { sdk_server_signed_content: None, sdk_type: sdk_info .sdk_type - .map(SdkTypeEnum::from) - .or(Some(SdkTypeEnum::DefaultSdk)), + .map(SdkType::from) + .or(Some(SdkType::DefaultSdk)), default_sdk_type: Some(DefaultSdkType { // hardcoding this value because, it's the only value that is accepted sdk_variant: "01".to_string(), @@ -1577,21 +1577,21 @@ impl From<api_models::payments::SdkInformation> for Sdk { } } -impl From<api_models::payments::SdkTypeEnum> for SdkTypeEnum { - fn from(sdk_type: api_models::payments::SdkTypeEnum) -> Self { +impl From<api_models::payments::SdkType> for SdkType { + fn from(sdk_type: api_models::payments::SdkType) -> Self { match sdk_type { - api_models::payments::SdkTypeEnum::DefaultSdk => Self::DefaultSdk, - api_models::payments::SdkTypeEnum::SplitSdk => Self::SplitSdk, - api_models::payments::SdkTypeEnum::LimitedSdk => Self::LimitedSdk, - api_models::payments::SdkTypeEnum::BrowserSdk => Self::BrowserSdk, - api_models::payments::SdkTypeEnum::ShellSdk => Self::ShellSdk, + api_models::payments::SdkType::DefaultSdk => Self::DefaultSdk, + api_models::payments::SdkType::SplitSdk => Self::SplitSdk, + api_models::payments::SdkType::LimitedSdk => Self::LimitedSdk, + api_models::payments::SdkType::BrowserSdk => Self::BrowserSdk, + api_models::payments::SdkType::ShellSdk => Self::ShellSdk, } } } /// Enum representing the type of 3DS SDK. #[derive(Serialize, Deserialize, Debug, Clone)] -pub enum SdkTypeEnum { +pub enum SdkType { #[serde(rename = "01")] DefaultSdk, #[serde(rename = "02")] From 1e594c2fff9bb1c55c5f84f9935c3b517c3a19fb Mon Sep 17 00:00:00 2001 From: sai-harsha-vardhan <harsha111hero@gmail.com> Date: Sat, 1 Feb 2025 14:46:56 +0530 Subject: [PATCH 4/4] fix openapi --- api-reference-v2/openapi_spec.json | 19 +++++++++++++++++++ crates/openapi/src/openapi_v2.rs | 1 + 2 files changed, 20 insertions(+) diff --git a/api-reference-v2/openapi_spec.json b/api-reference-v2/openapi_spec.json index 13014a44e0e..236c0af3a38 100644 --- a/api-reference-v2/openapi_spec.json +++ b/api-reference-v2/openapi_spec.json @@ -19982,6 +19982,14 @@ "format": "int32", "description": "Indicates maximum amount of time in minutes", "minimum": 0 + }, + "sdk_type": { + "allOf": [ + { + "$ref": "#/components/schemas/SdkType" + } + ], + "nullable": true } } }, @@ -20011,6 +20019,17 @@ } } }, + "SdkType": { + "type": "string", + "description": "Enum representing the type of 3DS SDK.", + "enum": [ + "01", + "02", + "03", + "04", + "05" + ] + }, "SecretInfoToInitiateSdk": { "type": "object", "required": [ diff --git a/crates/openapi/src/openapi_v2.rs b/crates/openapi/src/openapi_v2.rs index 3b1fefefa15..701fb22d1ad 100644 --- a/crates/openapi/src/openapi_v2.rs +++ b/crates/openapi/src/openapi_v2.rs @@ -328,6 +328,7 @@ Never share your secret api keys. Keep them guarded and secure. api_models::payments::BankRedirectBilling, api_models::payments::ConnectorMetadata, api_models::payments::FeatureMetadata, + api_models::payments::SdkType, api_models::payments::ApplepayConnectorMetadataRequest, api_models::payments::SessionTokenInfo, api_models::payments::PaymentProcessingDetailsAt,