mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 04:04:43 +08:00
fix(connector): [braintree] add 3ds redirection error mapping and metadata validation (#2552)
This commit is contained in:
@ -3,6 +3,7 @@ use common_utils::{
|
||||
crypto::{generate_cryptographically_secure_random_string, OptionalSecretValue},
|
||||
date_time,
|
||||
ext_traits::{AsyncExt, ConfigExt, Encode, ValueExt},
|
||||
pii,
|
||||
};
|
||||
use data_models::MerchantStorageScheme;
|
||||
use error_stack::{report, FutureExt, ResultExt};
|
||||
@ -656,15 +657,26 @@ pub async fn create_payment_connector(
|
||||
expected_format: "auth_type and api_key".to_string(),
|
||||
})?;
|
||||
|
||||
validate_auth_type(req.connector_name, &auth).map_err(|err| {
|
||||
if err.current_context() == &errors::ConnectorError::InvalidConnectorName {
|
||||
err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: "The connector name is invalid".to_string(),
|
||||
})
|
||||
} else {
|
||||
err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: "The auth type is invalid for the connector".to_string(),
|
||||
})
|
||||
validate_auth_and_metadata_type(req.connector_name, &auth, &req.metadata).map_err(|err| {
|
||||
match *err.current_context() {
|
||||
errors::ConnectorError::InvalidConnectorName => {
|
||||
err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: "The connector name is invalid".to_string(),
|
||||
})
|
||||
}
|
||||
errors::ConnectorError::InvalidConfig { field_name } => {
|
||||
err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: format!("The {} is invalid", field_name),
|
||||
})
|
||||
}
|
||||
errors::ConnectorError::FailedToObtainAuthType => {
|
||||
err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: "The auth type is invalid for the connector".to_string(),
|
||||
})
|
||||
}
|
||||
_ => err.change_context(errors::ApiErrorResponse::InvalidRequestData {
|
||||
message: "The request body is invalid".to_string(),
|
||||
}),
|
||||
}
|
||||
})?;
|
||||
|
||||
@ -1250,9 +1262,10 @@ pub async fn update_business_profile(
|
||||
))
|
||||
}
|
||||
|
||||
pub(crate) fn validate_auth_type(
|
||||
pub(crate) fn validate_auth_and_metadata_type(
|
||||
connector_name: api_models::enums::Connector,
|
||||
val: &types::ConnectorAuthType,
|
||||
connector_meta_data: &Option<pii::SecretSerdeValue>,
|
||||
) -> Result<(), error_stack::Report<errors::ConnectorError>> {
|
||||
use crate::connector::*;
|
||||
|
||||
@ -1302,6 +1315,9 @@ pub(crate) fn validate_auth_type(
|
||||
}
|
||||
api_enums::Connector::Braintree => {
|
||||
braintree::transformers::BraintreeAuthType::try_from(val)?;
|
||||
braintree::braintree_graphql_transformers::BraintreeMeta::try_from(
|
||||
connector_meta_data,
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
api_enums::Connector::Cashtocode => {
|
||||
|
||||
Reference in New Issue
Block a user