mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
feat(connector): Add support for passive churn recovery webhooks (#7109)
Co-authored-by: Chikke Srujan <chikke.srujan@Chikke-Srujan-N7WRTY72X7.local> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -57,6 +57,14 @@ pub enum IncomingWebhookEvent {
|
||||
PayoutExpired,
|
||||
#[cfg(feature = "payouts")]
|
||||
PayoutReversed,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
RecoveryPaymentFailure,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
RecoveryPaymentSuccess,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
RecoveryPaymentPending,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
RecoveryInvoiceCancel,
|
||||
}
|
||||
|
||||
pub enum WebhookFlow {
|
||||
@ -71,6 +79,8 @@ pub enum WebhookFlow {
|
||||
Mandate,
|
||||
ExternalAuthentication,
|
||||
FraudCheck,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
Recovery,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
@ -197,6 +207,11 @@ impl From<IncomingWebhookEvent> for WebhookFlow {
|
||||
| IncomingWebhookEvent::PayoutCreated
|
||||
| IncomingWebhookEvent::PayoutExpired
|
||||
| IncomingWebhookEvent::PayoutReversed => Self::Payout,
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
IncomingWebhookEvent::RecoveryInvoiceCancel
|
||||
| IncomingWebhookEvent::RecoveryPaymentFailure
|
||||
| IncomingWebhookEvent::RecoveryPaymentPending
|
||||
| IncomingWebhookEvent::RecoveryPaymentSuccess => Self::Recovery,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -236,6 +251,14 @@ pub enum ObjectReferenceId {
|
||||
ExternalAuthenticationID(AuthenticationIdType),
|
||||
#[cfg(feature = "payouts")]
|
||||
PayoutId(PayoutIdType),
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
InvoiceId(InvoiceIdType),
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "revenue_recovery", feature = "v2"))]
|
||||
#[derive(Clone)]
|
||||
pub enum InvoiceIdType {
|
||||
ConnectorInvoiceId(String),
|
||||
}
|
||||
|
||||
pub struct IncomingWebhookDetails {
|
||||
@ -303,3 +326,15 @@ pub struct ConnectorWebhookSecrets {
|
||||
pub secret: Vec<u8>,
|
||||
pub additional_secret: Option<masking::Secret<String>>,
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "v2", feature = "revenue_recovery"))]
|
||||
impl IncomingWebhookEvent {
|
||||
pub fn is_recovery_transaction_event(&self) -> bool {
|
||||
matches!(
|
||||
self,
|
||||
Self::RecoveryPaymentFailure
|
||||
| Self::RecoveryPaymentSuccess
|
||||
| Self::RecoveryPaymentPending
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user