diff --git a/api-reference/openapi_spec.json b/api-reference/openapi_spec.json index 8ff0f3eb1c..c99f618784 100644 --- a/api-reference/openapi_spec.json +++ b/api-reference/openapi_spec.json @@ -11802,13 +11802,9 @@ "MifinityData": { "type": "object", "required": [ - "destination_account_number", "date_of_birth" ], "properties": { - "destination_account_number": { - "type": "string" - }, "date_of_birth": { "type": "string", "format": "date" diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs index 6519068d3d..dbb1751a52 100644 --- a/crates/api_models/src/payments.rs +++ b/crates/api_models/src/payments.rs @@ -2580,8 +2580,6 @@ pub struct SwishQrData {} #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize, ToSchema)] pub struct MifinityData { - #[schema(value_type = String)] - pub destination_account_number: Secret, #[schema(value_type = Date)] pub date_of_birth: Secret, } diff --git a/crates/connector_configs/src/common_config.rs b/crates/connector_configs/src/common_config.rs index 6129ab0005..837f0985b8 100644 --- a/crates/connector_configs/src/common_config.rs +++ b/crates/connector_configs/src/common_config.rs @@ -101,6 +101,7 @@ pub struct ApiModelMetaData { pub klarna_region: Option, pub source_balance_account: Option, pub brand_id: Option, + pub destination_account_number: Option, } #[serde_with::skip_serializing_none] @@ -217,4 +218,5 @@ pub struct DashboardMetaData { pub klarna_region: Option, pub source_balance_account: Option, pub brand_id: Option, + pub destination_account_number: Option, } diff --git a/crates/connector_configs/src/connector.rs b/crates/connector_configs/src/connector.rs index c2d4df1507..4f6238c77d 100644 --- a/crates/connector_configs/src/connector.rs +++ b/crates/connector_configs/src/connector.rs @@ -104,6 +104,7 @@ pub struct ConfigMetadata { pub klarna_region: Option>, pub source_balance_account: Option, pub brand_id: Option, + pub destination_account_number: Option, } #[serde_with::skip_serializing_none] diff --git a/crates/connector_configs/src/response_modifier.rs b/crates/connector_configs/src/response_modifier.rs index 4dc97b7a70..6a1b433069 100644 --- a/crates/connector_configs/src/response_modifier.rs +++ b/crates/connector_configs/src/response_modifier.rs @@ -337,6 +337,7 @@ impl From for DashboardMetaData { klarna_region: api_model.klarna_region, source_balance_account: api_model.source_balance_account, brand_id: api_model.brand_id, + destination_account_number: api_model.destination_account_number, } } } diff --git a/crates/connector_configs/src/transformer.rs b/crates/connector_configs/src/transformer.rs index 064da683ca..e958fc5de0 100644 --- a/crates/connector_configs/src/transformer.rs +++ b/crates/connector_configs/src/transformer.rs @@ -203,6 +203,7 @@ impl DashboardRequestPayload { klarna_region: None, source_balance_account: None, brand_id: None, + destination_account_number: None, }; let meta_data = match request.metadata { Some(data) => data, @@ -231,6 +232,7 @@ impl DashboardRequestPayload { let klarna_region = meta_data.klarna_region; let source_balance_account = meta_data.source_balance_account; let brand_id = meta_data.brand_id; + let destination_account_number = meta_data.destination_account_number; Some(ApiModelMetaData { google_pay, @@ -255,6 +257,7 @@ impl DashboardRequestPayload { klarna_region, source_balance_account, brand_id, + destination_account_number, }) } diff --git a/crates/connector_configs/toml/development.toml b/crates/connector_configs/toml/development.toml index 5d4aea5d5d..a2d43c6937 100644 --- a/crates/connector_configs/toml/development.toml +++ b/crates/connector_configs/toml/development.toml @@ -1168,6 +1168,7 @@ klarna_region=["Europe","NorthAmerica","Oceania"] api_key="key" [mifinity.metadata] brand_id="Brand ID" +destination_account_number="Destination Account Number" [mollie] [[mollie.credit]] diff --git a/crates/connector_configs/toml/production.toml b/crates/connector_configs/toml/production.toml index eb35dbf3df..28181d9e58 100644 --- a/crates/connector_configs/toml/production.toml +++ b/crates/connector_configs/toml/production.toml @@ -973,6 +973,7 @@ klarna_region=["Europe","NorthAmerica","Oceania"] api_key="key" [mifinity.metadata] brand_id="Brand ID" +destination_account_number="Destination Account Number" [mollie] diff --git a/crates/connector_configs/toml/sandbox.toml b/crates/connector_configs/toml/sandbox.toml index acc422f3bd..97d8011233 100644 --- a/crates/connector_configs/toml/sandbox.toml +++ b/crates/connector_configs/toml/sandbox.toml @@ -1168,6 +1168,7 @@ klarna_region=["Europe","NorthAmerica","Oceania"] api_key="key" [mifinity.metadata] brand_id="Brand ID" +destination_account_number="Destination Account Number" [mollie] [[mollie.credit]] diff --git a/crates/hyperswitch_domain_models/src/payment_method_data.rs b/crates/hyperswitch_domain_models/src/payment_method_data.rs index 8d698181d8..89af698b8d 100644 --- a/crates/hyperswitch_domain_models/src/payment_method_data.rs +++ b/crates/hyperswitch_domain_models/src/payment_method_data.rs @@ -117,7 +117,6 @@ pub enum WalletData { #[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)] pub struct MifinityData { - pub destination_account_number: Secret, pub date_of_birth: Secret, } @@ -594,7 +593,6 @@ impl From for WalletData { api_models::payments::WalletData::SwishQr(_) => Self::SwishQr(SwishQrData {}), api_models::payments::WalletData::Mifinity(mifinity_data) => { Self::Mifinity(MifinityData { - destination_account_number: mifinity_data.destination_account_number, date_of_birth: mifinity_data.date_of_birth, }) } diff --git a/crates/router/src/connector/mifinity/transformers.rs b/crates/router/src/connector/mifinity/transformers.rs index 01ae8106e1..ec68c399ad 100644 --- a/crates/router/src/connector/mifinity/transformers.rs +++ b/crates/router/src/connector/mifinity/transformers.rs @@ -1,12 +1,12 @@ use common_utils::pii::{self, Email}; use error_stack::ResultExt; -use masking::{ExposeInterface, Secret}; +use masking::Secret; use serde::{Deserialize, Serialize}; use time::Date; use crate::{ connector::utils::{self, PaymentsAuthorizeRequestData, PhoneDetailsData, RouterData}, - core::errors::{self, CustomResult}, + core::errors, services, types::{self, api, domain, storage::enums}, }; @@ -36,6 +36,7 @@ pub mod auth_headers { #[derive(Debug, Default, Serialize, Deserialize)] pub struct MifinityConnectorMetadataObject { pub brand_id: Secret, + pub destination_account_number: Secret, } impl TryFrom<&Option> for MifinityConnectorMetadataObject { @@ -49,14 +50,6 @@ impl TryFrom<&Option> for MifinityConnectorMetadataObject } } -fn get_brand_id( - connector_metadata: &Option, -) -> CustomResult { - let mifinity_metadata = MifinityConnectorMetadataObject::try_from(connector_metadata)?; - let brand_id = mifinity_metadata.brand_id.clone().expose(); - Ok(brand_id) -} - #[derive(Debug, Serialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct MifinityPaymentsRequest { @@ -103,6 +96,11 @@ impl TryFrom<&MifinityRouterData<&types::PaymentsAuthorizeRouterData>> for Mifin fn try_from( item: &MifinityRouterData<&types::PaymentsAuthorizeRouterData>, ) -> Result { + let metadata: MifinityConnectorMetadataObject = + utils::to_connector_meta_from_secret(item.router_data.connector_meta_data.clone()) + .change_context(errors::ConnectorError::InvalidConnectorConfig { + config: "merchant_connector_account.metadata", + })?; match item.router_data.request.payment_method_data.clone() { domain::PaymentMethodData::Wallet(wallet_data) => match wallet_data { domain::WalletData::Mifinity(data) => { @@ -135,10 +133,9 @@ impl TryFrom<&MifinityRouterData<&types::PaymentsAuthorizeRouterData>> for Mifin field_name: "client_reference", }, )?; - let destination_account_number = data.destination_account_number; + let destination_account_number = metadata.destination_account_number; let trace_id = item.router_data.connector_request_reference_id.clone(); - let brand_id = - Secret::new(get_brand_id(&item.router_data.connector_meta_data)?); + let brand_id = metadata.brand_id; Ok(Self { money, client,