mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-31 01:57:45 +08:00
fix: Error Mapping for Bluensap & Card Number for Airwallex (#686)
This commit is contained in:
@ -93,7 +93,9 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for AirwallexPaymentsRequest {
|
|||||||
}));
|
}));
|
||||||
Ok(AirwallexPaymentMethod::Card(AirwallexCard {
|
Ok(AirwallexPaymentMethod::Card(AirwallexCard {
|
||||||
card: AirwallexCardDetails {
|
card: AirwallexCardDetails {
|
||||||
number: ccard.card_number,
|
number: ccard
|
||||||
|
.card_number
|
||||||
|
.map(|card| card.split_whitespace().collect()),
|
||||||
expiry_month: ccard.card_exp_month.clone(),
|
expiry_month: ccard.card_exp_month.clone(),
|
||||||
expiry_year: ccard.card_exp_year.clone(),
|
expiry_year: ccard.card_exp_year.clone(),
|
||||||
cvc: ccard.card_cvc,
|
cvc: ccard.card_cvc,
|
||||||
|
|||||||
@ -80,12 +80,13 @@ impl ConnectorCommon for Bluesnap {
|
|||||||
res: Response,
|
res: Response,
|
||||||
) -> CustomResult<ErrorResponse, errors::ConnectorError> {
|
) -> CustomResult<ErrorResponse, errors::ConnectorError> {
|
||||||
logger::debug!(bluesnap_error_response=?res);
|
logger::debug!(bluesnap_error_response=?res);
|
||||||
let response: bluesnap::BluesnapErrorResponse = res
|
let response: bluesnap::BluesnapErrors = res
|
||||||
.response
|
.response
|
||||||
.parse_struct("BluesnapErrorResponse")
|
.parse_struct("BluesnapErrorResponse")
|
||||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
||||||
|
|
||||||
let response_error_message = response.message.first().map_or(
|
let response_error_message = match response {
|
||||||
|
bluesnap::BluesnapErrors::PaymentError(error_res) => error_res.message.first().map_or(
|
||||||
ErrorResponse {
|
ErrorResponse {
|
||||||
status_code: res.status_code,
|
status_code: res.status_code,
|
||||||
code: consts::NO_ERROR_CODE.to_string(),
|
code: consts::NO_ERROR_CODE.to_string(),
|
||||||
@ -98,7 +99,14 @@ impl ConnectorCommon for Bluesnap {
|
|||||||
message: error_response.description.clone(),
|
message: error_response.description.clone(),
|
||||||
reason: None,
|
reason: None,
|
||||||
},
|
},
|
||||||
);
|
),
|
||||||
|
bluesnap::BluesnapErrors::AuthError(error_res) => ErrorResponse {
|
||||||
|
status_code: res.status_code,
|
||||||
|
code: error_res.error_code.clone(),
|
||||||
|
message: error_res.error_description,
|
||||||
|
reason: None,
|
||||||
|
},
|
||||||
|
};
|
||||||
Ok(response_error_message)
|
Ok(response_error_message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -325,8 +325,22 @@ pub struct ErrorDetails {
|
|||||||
pub description: String,
|
pub description: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
|
#[derive(Default, Debug, Clone, Deserialize, PartialEq)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct BluesnapErrorResponse {
|
pub struct BluesnapErrorResponse {
|
||||||
pub message: Vec<ErrorDetails>,
|
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),
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user