mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 05:17:02 +08:00
feat(connector): accept connector_transaction_id in error_response of connector flows for Trustpay (#3060)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -137,9 +137,11 @@ impl ConnectorCommon for Trustpay {
|
|||||||
message: option_error_code_message
|
message: option_error_code_message
|
||||||
.map(|error_code_message| error_code_message.error_code)
|
.map(|error_code_message| error_code_message.error_code)
|
||||||
.unwrap_or(consts::NO_ERROR_MESSAGE.to_string()),
|
.unwrap_or(consts::NO_ERROR_MESSAGE.to_string()),
|
||||||
reason: reason.or(response_data.description),
|
reason: reason
|
||||||
|
.or(response_data.description)
|
||||||
|
.or(response_data.payment_description),
|
||||||
attempt_status: None,
|
attempt_status: None,
|
||||||
connector_transaction_id: None,
|
connector_transaction_id: response_data.instance_id,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Err(error_msg) => {
|
Err(error_msg) => {
|
||||||
@ -363,19 +365,7 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
|
|||||||
&self,
|
&self,
|
||||||
res: Response,
|
res: Response,
|
||||||
) -> CustomResult<ErrorResponse, errors::ConnectorError> {
|
) -> CustomResult<ErrorResponse, errors::ConnectorError> {
|
||||||
let response: trustpay::TrustPayTransactionStatusErrorResponse = res
|
self.build_error_response(res)
|
||||||
.response
|
|
||||||
.parse_struct("trustpay transaction status ErrorResponse")
|
|
||||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
|
||||||
Ok(ErrorResponse {
|
|
||||||
status_code: res.status_code,
|
|
||||||
code: response.status.to_string(),
|
|
||||||
// message vary for the same code, so relying on code alone as it is unique
|
|
||||||
message: response.status.to_string(),
|
|
||||||
reason: Some(response.payment_description),
|
|
||||||
attempt_status: None,
|
|
||||||
connector_transaction_id: None,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_response(
|
fn handle_response(
|
||||||
|
|||||||
@ -722,13 +722,13 @@ fn handle_cards_response(
|
|||||||
reason: msg,
|
reason: msg,
|
||||||
status_code,
|
status_code,
|
||||||
attempt_status: None,
|
attempt_status: None,
|
||||||
connector_transaction_id: None,
|
connector_transaction_id: Some(response.instance_id.clone()),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let payment_response_data = types::PaymentsResponseData::TransactionResponse {
|
let payment_response_data = types::PaymentsResponseData::TransactionResponse {
|
||||||
resource_id: types::ResponseId::ConnectorTransactionId(response.instance_id),
|
resource_id: types::ResponseId::ConnectorTransactionId(response.instance_id.clone()),
|
||||||
redirection_data,
|
redirection_data,
|
||||||
mandate_reference: None,
|
mandate_reference: None,
|
||||||
connector_metadata: None,
|
connector_metadata: None,
|
||||||
@ -825,14 +825,24 @@ fn handle_bank_redirects_sync_response(
|
|||||||
reason: reason_info.reason.reject_reason,
|
reason: reason_info.reason.reject_reason,
|
||||||
status_code,
|
status_code,
|
||||||
attempt_status: None,
|
attempt_status: None,
|
||||||
connector_transaction_id: None,
|
connector_transaction_id: Some(
|
||||||
|
response
|
||||||
|
.payment_information
|
||||||
|
.references
|
||||||
|
.payment_request_id
|
||||||
|
.clone(),
|
||||||
|
),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let payment_response_data = types::PaymentsResponseData::TransactionResponse {
|
let payment_response_data = types::PaymentsResponseData::TransactionResponse {
|
||||||
resource_id: types::ResponseId::ConnectorTransactionId(
|
resource_id: types::ResponseId::ConnectorTransactionId(
|
||||||
response.payment_information.references.payment_request_id,
|
response
|
||||||
|
.payment_information
|
||||||
|
.references
|
||||||
|
.payment_request_id
|
||||||
|
.clone(),
|
||||||
),
|
),
|
||||||
redirection_data: None,
|
redirection_data: None,
|
||||||
mandate_reference: None,
|
mandate_reference: None,
|
||||||
@ -1637,16 +1647,13 @@ pub struct Errors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct TrustpayErrorResponse {
|
pub struct TrustpayErrorResponse {
|
||||||
pub status: i64,
|
pub status: i64,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
pub errors: Option<Vec<Errors>>,
|
pub errors: Option<Vec<Errors>>,
|
||||||
}
|
pub instance_id: Option<String>,
|
||||||
|
pub payment_description: Option<String>,
|
||||||
#[derive(Deserialize)]
|
|
||||||
pub struct TrustPayTransactionStatusErrorResponse {
|
|
||||||
pub status: i64,
|
|
||||||
pub payment_description: String,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||||
|
|||||||
Reference in New Issue
Block a user