Skip to main content

payrail_core/
events.rs

1use crate::{
2    MerchantReference, Money, PaymentProvider, PaymentStatus, ProviderReference, WebhookEventId,
3};
4
5/// Normalized payment event.
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct PaymentEvent {
8    /// Provider event ID.
9    pub id: Option<WebhookEventId>,
10    /// Provider that emitted the event.
11    pub provider: PaymentProvider,
12    /// Provider payment reference.
13    pub provider_reference: ProviderReference,
14    /// Optional merchant reference.
15    pub merchant_reference: Option<MerchantReference>,
16    /// Normalized status.
17    pub status: PaymentStatus,
18    /// Optional amount.
19    pub amount: Option<Money>,
20    /// Normalized event type.
21    pub event_type: PaymentEventType,
22    /// Safe provider message.
23    pub message: Option<String>,
24}
25
26/// Normalized payment event type.
27#[derive(Debug, Clone, Copy, PartialEq, Eq)]
28#[non_exhaustive]
29pub enum PaymentEventType {
30    /// Payment was created.
31    PaymentCreated,
32    /// Payment requires action.
33    PaymentRequiresAction,
34    /// Payment is pending.
35    PaymentPending,
36    /// Payment succeeded.
37    PaymentSucceeded,
38    /// Payment failed.
39    PaymentFailed,
40    /// Payment was cancelled.
41    PaymentCancelled,
42    /// Payment was refunded.
43    PaymentRefunded,
44    /// Refund was created.
45    RefundCreated,
46    /// Refund failed.
47    RefundFailed,
48}