feat(connector): [Noon] add error response handling in payments response (#1494)

This commit is contained in:
SamraatBansal
2023-06-28 14:34:54 +05:30
committed by GitHub
parent 33309daf5c
commit 82545555d7

View File

@ -7,7 +7,7 @@ use crate::{
},
core::errors,
services,
types::{self, api, storage::enums},
types::{self, api, storage::enums, ErrorResponse},
};
// These needs to be accepted from SDK, need to be done after 1.0.0 stability as API contract will change
@ -280,6 +280,8 @@ pub struct NoonSubscriptionResponse {
pub struct NoonPaymentsOrderResponse {
status: NoonPaymentStatus,
id: u64,
error_code: u64,
error_message: Option<String>,
}
#[derive(Debug, Deserialize)]
@ -324,17 +326,24 @@ impl<F, T>
connector_mandate_id: Some(subscription_data.identifier),
payment_method_id: None,
});
let order = item.response.result.order;
Ok(Self {
status: enums::AttemptStatus::from(item.response.result.order.status),
response: Ok(types::PaymentsResponseData::TransactionResponse {
resource_id: types::ResponseId::ConnectorTransactionId(
item.response.result.order.id.to_string(),
),
redirection_data,
mandate_reference,
connector_metadata: None,
network_txn_id: None,
}),
status: enums::AttemptStatus::from(order.status),
response: match order.error_message {
Some(error_message) => Err(ErrorResponse {
code: order.error_code.to_string(),
message: error_message.clone(),
reason: Some(error_message),
status_code: item.http_code,
}),
_ => Ok(types::PaymentsResponseData::TransactionResponse {
resource_id: types::ResponseId::ConnectorTransactionId(order.id.to_string()),
redirection_data,
mandate_reference,
connector_metadata: None,
network_txn_id: None,
}),
},
..item.data
})
}