fix: Error Mapping for Bluensap & Card Number for Airwallex (#686)

This commit is contained in:
SamraatBansal
2023-02-28 18:31:54 +05:30
committed by GitHub
parent bfca26d9fd
commit 35a74baf55
3 changed files with 38 additions and 14 deletions

View File

@ -93,7 +93,9 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for AirwallexPaymentsRequest {
}));
Ok(AirwallexPaymentMethod::Card(AirwallexCard {
card: AirwallexCardDetails {
number: ccard.card_number,
number: ccard
.card_number
.map(|card| card.split_whitespace().collect()),
expiry_month: ccard.card_exp_month.clone(),
expiry_year: ccard.card_exp_year.clone(),
cvc: ccard.card_cvc,

View File

@ -80,25 +80,33 @@ impl ConnectorCommon for Bluesnap {
res: Response,
) -> CustomResult<ErrorResponse, errors::ConnectorError> {
logger::debug!(bluesnap_error_response=?res);
let response: bluesnap::BluesnapErrorResponse = res
let response: bluesnap::BluesnapErrors = res
.response
.parse_struct("BluesnapErrorResponse")
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
let response_error_message = response.message.first().map_or(
ErrorResponse {
let response_error_message = match response {
bluesnap::BluesnapErrors::PaymentError(error_res) => error_res.message.first().map_or(
ErrorResponse {
status_code: res.status_code,
code: consts::NO_ERROR_CODE.to_string(),
message: consts::NO_ERROR_MESSAGE.to_string(),
reason: None,
},
|error_response| ErrorResponse {
status_code: res.status_code,
code: error_response.code.clone(),
message: error_response.description.clone(),
reason: None,
},
),
bluesnap::BluesnapErrors::AuthError(error_res) => ErrorResponse {
status_code: res.status_code,
code: consts::NO_ERROR_CODE.to_string(),
message: consts::NO_ERROR_MESSAGE.to_string(),
code: error_res.error_code.clone(),
message: error_res.error_description,
reason: None,
},
|error_response| ErrorResponse {
status_code: res.status_code,
code: error_response.code.clone(),
message: error_response.description.clone(),
reason: None,
},
);
};
Ok(response_error_message)
}
}

View File

@ -325,8 +325,22 @@ pub struct ErrorDetails {
pub description: String,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
#[derive(Default, Debug, Clone, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct BluesnapErrorResponse {
pub message: Vec<ErrorDetails>,
}
#[derive(Default, Debug, Clone, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct BluesnapAuthErrorResponse {
pub error_code: String,
pub error_description: String,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum BluesnapErrors {
PaymentError(BluesnapErrorResponse),
AuthError(BluesnapAuthErrorResponse),
}