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