mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
fix(core): Update Webhooks Event Mapping and Forced Psync preconditions (#1970)
Co-authored-by: swangi-kumari <swangi.12015941@lpu.in>
This commit is contained in:
@ -101,24 +101,22 @@ pub async fn payments_incoming_webhook_flow<W: types::OutgoingWebhookType>(
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("payment id not received from payments core")?;
|
||||
|
||||
let event_type: enums::EventType = payments_response
|
||||
.status
|
||||
.foreign_try_into()
|
||||
.into_report()
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("payment event type mapping failed")?;
|
||||
let event_type: Option<enums::EventType> = payments_response.status.foreign_into();
|
||||
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
event_type,
|
||||
enums::EventClass::Payments,
|
||||
None,
|
||||
payment_id,
|
||||
enums::EventObjectType::PaymentDetails,
|
||||
api::OutgoingWebhookContent::PaymentDetails(payments_response),
|
||||
)
|
||||
.await?;
|
||||
// If event is NOT an UnsupportedEvent, trigger Outgoing Webhook
|
||||
if let Some(outgoing_event_type) = event_type {
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
outgoing_event_type,
|
||||
enums::EventClass::Payments,
|
||||
None,
|
||||
payment_id,
|
||||
enums::EventObjectType::PaymentDetails,
|
||||
api::OutgoingWebhookContent::PaymentDetails(payments_response),
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
|
||||
_ => Err(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
@ -213,24 +211,24 @@ pub async fn refunds_incoming_webhook_flow<W: types::OutgoingWebhookType>(
|
||||
)
|
||||
})?
|
||||
};
|
||||
let event_type: enums::EventType = updated_refund
|
||||
.refund_status
|
||||
.foreign_try_into()
|
||||
.into_report()
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("refund status to event type mapping failed")?;
|
||||
let refund_response: api_models::refunds::RefundResponse = updated_refund.foreign_into();
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
event_type,
|
||||
enums::EventClass::Refunds,
|
||||
None,
|
||||
refund_id,
|
||||
enums::EventObjectType::RefundDetails,
|
||||
api::OutgoingWebhookContent::RefundDetails(refund_response),
|
||||
)
|
||||
.await?;
|
||||
let event_type: Option<enums::EventType> = updated_refund.refund_status.foreign_into();
|
||||
|
||||
// If event is NOT an UnsupportedEvent, trigger Outgoing Webhook
|
||||
if let Some(outgoing_event_type) = event_type {
|
||||
let refund_response: api_models::refunds::RefundResponse = updated_refund.foreign_into();
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
outgoing_event_type,
|
||||
enums::EventClass::Refunds,
|
||||
None,
|
||||
refund_id,
|
||||
enums::EventObjectType::RefundDetails,
|
||||
api::OutgoingWebhookContent::RefundDetails(refund_response),
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -385,12 +383,8 @@ pub async fn disputes_incoming_webhook_flow<W: types::OutgoingWebhookType>(
|
||||
)
|
||||
.await?;
|
||||
let disputes_response = Box::new(dispute_object.clone().foreign_into());
|
||||
let event_type: enums::EventType = dispute_object
|
||||
.dispute_status
|
||||
.foreign_try_into()
|
||||
.into_report()
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("failed to map dispute status to event type")?;
|
||||
let event_type: enums::EventType = dispute_object.dispute_status.foreign_into();
|
||||
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
@ -457,24 +451,22 @@ async fn bank_transfer_webhook_flow<W: types::OutgoingWebhookType>(
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("did not receive payment id from payments core response")?;
|
||||
|
||||
let event_type: enums::EventType = payments_response
|
||||
.status
|
||||
.foreign_try_into()
|
||||
.into_report()
|
||||
.change_context(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
.attach_printable("error mapping payments response status to event type")?;
|
||||
let event_type: Option<enums::EventType> = payments_response.status.foreign_into();
|
||||
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
event_type,
|
||||
enums::EventClass::Payments,
|
||||
None,
|
||||
payment_id,
|
||||
enums::EventObjectType::PaymentDetails,
|
||||
api::OutgoingWebhookContent::PaymentDetails(payments_response),
|
||||
)
|
||||
.await?;
|
||||
// If event is NOT an UnsupportedEvent, trigger Outgoing Webhook
|
||||
if let Some(outgoing_event_type) = event_type {
|
||||
create_event_and_trigger_outgoing_webhook::<W>(
|
||||
state,
|
||||
merchant_account,
|
||||
outgoing_event_type,
|
||||
enums::EventClass::Payments,
|
||||
None,
|
||||
payment_id,
|
||||
enums::EventObjectType::PaymentDetails,
|
||||
api::OutgoingWebhookContent::PaymentDetails(payments_response),
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
|
||||
_ => Err(errors::ApiErrorResponse::WebhookProcessingFailure)
|
||||
|
||||
Reference in New Issue
Block a user