mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +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,25 +80,33 @@ 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 { | ||||||
|             ErrorResponse { |             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, |                 status_code: res.status_code, | ||||||
|                 code: consts::NO_ERROR_CODE.to_string(), |                 code: error_res.error_code.clone(), | ||||||
|                 message: consts::NO_ERROR_MESSAGE.to_string(), |                 message: error_res.error_description, | ||||||
|                 reason: None, |                 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) |         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
	 SamraatBansal
					SamraatBansal