mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 01:27:31 +08:00
fix(checkout): status mapping for payment (#442)
This commit is contained in:
@ -279,6 +279,7 @@ impl
|
|||||||
&self,
|
&self,
|
||||||
res: types::Response,
|
res: types::Response,
|
||||||
) -> CustomResult<types::ErrorResponse, errors::ConnectorError> {
|
) -> CustomResult<types::ErrorResponse, errors::ConnectorError> {
|
||||||
|
logger::debug!(raw_response=?res);
|
||||||
let response: checkout::ErrorResponse = res
|
let response: checkout::ErrorResponse = res
|
||||||
.response
|
.response
|
||||||
.parse_struct("ErrorResponse")
|
.parse_struct("ErrorResponse")
|
||||||
@ -368,11 +369,11 @@ impl
|
|||||||
data: &types::PaymentsAuthorizeRouterData,
|
data: &types::PaymentsAuthorizeRouterData,
|
||||||
res: types::Response,
|
res: types::Response,
|
||||||
) -> CustomResult<types::PaymentsAuthorizeRouterData, errors::ConnectorError> {
|
) -> CustomResult<types::PaymentsAuthorizeRouterData, errors::ConnectorError> {
|
||||||
|
logger::debug!(payments_create_response=?res);
|
||||||
let response: checkout::PaymentsResponse = res
|
let response: checkout::PaymentsResponse = res
|
||||||
.response
|
.response
|
||||||
.parse_struct("PaymentIntentResponse")
|
.parse_struct("PaymentIntentResponse")
|
||||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
||||||
logger::debug!(payments_create_response=?response);
|
|
||||||
types::RouterData::try_from(types::ResponseRouterData {
|
types::RouterData::try_from(types::ResponseRouterData {
|
||||||
response,
|
response,
|
||||||
data: data.clone(),
|
data: data.clone(),
|
||||||
@ -470,12 +471,13 @@ impl
|
|||||||
data: &types::PaymentsCancelRouterData,
|
data: &types::PaymentsCancelRouterData,
|
||||||
res: types::Response,
|
res: types::Response,
|
||||||
) -> CustomResult<types::PaymentsCancelRouterData, errors::ConnectorError> {
|
) -> CustomResult<types::PaymentsCancelRouterData, errors::ConnectorError> {
|
||||||
|
logger::debug!(payments_cancel_response=?res);
|
||||||
|
|
||||||
let mut response: checkout::PaymentVoidResponse = res
|
let mut response: checkout::PaymentVoidResponse = res
|
||||||
.response
|
.response
|
||||||
.parse_struct("PaymentVoidResponse")
|
.parse_struct("PaymentVoidResponse")
|
||||||
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
|
||||||
response.status = res.status_code;
|
response.status = res.status_code;
|
||||||
logger::debug!(payments_create_response=?response);
|
|
||||||
types::RouterData::try_from(types::ResponseRouterData {
|
types::RouterData::try_from(types::ResponseRouterData {
|
||||||
response,
|
response,
|
||||||
data: data.clone(),
|
data: data.clone(),
|
||||||
|
|||||||
@ -140,6 +140,33 @@ pub enum CheckoutPaymentStatus {
|
|||||||
Captured,
|
Captured,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<transformers::Foreign<(CheckoutPaymentStatus, Option<enums::CaptureMethod>)>>
|
||||||
|
for transformers::Foreign<enums::AttemptStatus>
|
||||||
|
{
|
||||||
|
fn from(
|
||||||
|
item: transformers::Foreign<(CheckoutPaymentStatus, Option<enums::CaptureMethod>)>,
|
||||||
|
) -> Self {
|
||||||
|
let item = item.0;
|
||||||
|
let (status, capture_method) = item;
|
||||||
|
match status {
|
||||||
|
CheckoutPaymentStatus::Authorized => {
|
||||||
|
if capture_method == Some(enums::CaptureMethod::Automatic)
|
||||||
|
|| capture_method.is_none()
|
||||||
|
{
|
||||||
|
enums::AttemptStatus::Charged
|
||||||
|
} else {
|
||||||
|
enums::AttemptStatus::Authorized
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CheckoutPaymentStatus::Captured => enums::AttemptStatus::Charged,
|
||||||
|
CheckoutPaymentStatus::Declined => enums::AttemptStatus::Failure,
|
||||||
|
CheckoutPaymentStatus::Pending => enums::AttemptStatus::AuthenticationPending,
|
||||||
|
CheckoutPaymentStatus::CardVerified => enums::AttemptStatus::Pending,
|
||||||
|
}
|
||||||
|
.into()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<transformers::Foreign<(CheckoutPaymentStatus, Balances)>>
|
impl From<transformers::Foreign<(CheckoutPaymentStatus, Balances)>>
|
||||||
for transformers::Foreign<enums::AttemptStatus>
|
for transformers::Foreign<enums::AttemptStatus>
|
||||||
{
|
{
|
||||||
@ -215,7 +242,7 @@ impl TryFrom<types::PaymentsResponseRouterData<PaymentsResponse>>
|
|||||||
Ok(Self {
|
Ok(Self {
|
||||||
status: enums::AttemptStatus::foreign_from((
|
status: enums::AttemptStatus::foreign_from((
|
||||||
item.response.status,
|
item.response.status,
|
||||||
item.response.balances,
|
item.data.request.capture_method,
|
||||||
)),
|
)),
|
||||||
response: Ok(types::PaymentsResponseData::TransactionResponse {
|
response: Ok(types::PaymentsResponseData::TransactionResponse {
|
||||||
resource_id: types::ResponseId::ConnectorTransactionId(item.response.id),
|
resource_id: types::ResponseId::ConnectorTransactionId(item.response.id),
|
||||||
|
|||||||
Reference in New Issue
Block a user