Versions in this module Expand all Collapse all v1 v1.1.0 Dec 2, 2025 Changes in this version + var ErrCallbackDisabled = errors.New("callbacks: disabled") + func PreparePaymentEvent(event *PaymentEvent) + func PrepareRefundEvent(event *RefundEvent) + func SendOnce(ctx context.Context, cfg config.CallbacksConfig, event PaymentEvent) error + type DLQStore interface + DeleteFailedWebhook func(ctx context.Context, id string) error + ListFailedWebhooks func(ctx context.Context, limit int) ([]FailedWebhook, error) + SaveFailedWebhook func(ctx context.Context, webhook FailedWebhook) error + type FailedWebhook struct + Attempts int + CreatedAt time.Time + EventType string + Headers map[string]string + ID string + LastAttempt time.Time + LastError string + Payload json.RawMessage + URL string + type FileDLQStore struct + func NewFileDLQStore(filePath string) (*FileDLQStore, error) + func (f *FileDLQStore) Close() error + func (f *FileDLQStore) DeleteFailedWebhook(ctx context.Context, id string) error + func (f *FileDLQStore) ListFailedWebhooks(ctx context.Context, limit int) ([]FailedWebhook, error) + func (f *FileDLQStore) SaveFailedWebhook(ctx context.Context, webhook FailedWebhook) error + type MemoryDLQStore struct + func NewMemoryDLQStore() *MemoryDLQStore + func (m *MemoryDLQStore) DeleteFailedWebhook(ctx context.Context, id string) error + func (m *MemoryDLQStore) ListFailedWebhooks(ctx context.Context, limit int) ([]FailedWebhook, error) + func (m *MemoryDLQStore) SaveFailedWebhook(ctx context.Context, webhook FailedWebhook) error + type NoopDLQStore struct + func (NoopDLQStore) DeleteFailedWebhook(context.Context, string) error + func (NoopDLQStore) ListFailedWebhooks(context.Context, int) ([]FailedWebhook, error) + func (NoopDLQStore) SaveFailedWebhook(context.Context, FailedWebhook) error + type NoopNotifier struct + func (NoopNotifier) PaymentSucceeded(context.Context, PaymentEvent) + func (NoopNotifier) RefundSucceeded(context.Context, RefundEvent) + type Notifier interface + PaymentSucceeded func(ctx context.Context, event PaymentEvent) + RefundSucceeded func(ctx context.Context, event RefundEvent) + func NewRetryableClient(cfg config.CallbacksConfig, opts ...RetryOption) Notifier + type PaymentEvent struct + CryptoAtomicAmount int64 + CryptoToken string + EventID string + EventTimestamp time.Time + EventType string + FiatAmountCents int64 + FiatCurrency string + Metadata map[string]string + Method string + PaidAt time.Time + ProofSignature string + ResourceID string + StripeCustomer string + StripeSessionID string + Wallet string + type PersistentCallbackClient struct + func NewPersistentCallbackClient(opts PersistentCallbackOptions) *PersistentCallbackClient + func (c *PersistentCallbackClient) Close() error + func (c *PersistentCallbackClient) PaymentSucceeded(ctx context.Context, event PaymentEvent) + func (c *PersistentCallbackClient) RefundSucceeded(ctx context.Context, event RefundEvent) + type PersistentCallbackOptions struct + Config config.CallbacksConfig + Logger zerolog.Logger + Metrics *metrics.Metrics + RetryConfig RetryConfig + Store storage.Store + type RefundEvent struct + AtomicAmount int64 + EventID string + EventTimestamp time.Time + EventType string + Metadata map[string]string + OriginalPurchaseID string + ProcessedBy string + Reason string + RecipientWallet string + RefundID string + RefundedAt time.Time + Signature string + Token string + type RetryConfig struct + InitialInterval time.Duration + MaxAttempts int + MaxInterval time.Duration + Multiplier float64 + Timeout time.Duration + func DefaultRetryConfig() RetryConfig + type RetryOption func(*RetryableClient) + func WithDLQStore(store DLQStore) RetryOption + func WithMetrics(metrics *metrics.Metrics) RetryOption + func WithRetryConfig(cfg RetryConfig) RetryOption + func WithRetryLogger(logger zerolog.Logger) RetryOption + type RetryableClient struct + func (c *RetryableClient) PaymentSucceeded(ctx context.Context, event PaymentEvent) + func (c *RetryableClient) RefundSucceeded(ctx context.Context, event RefundEvent) + type WebhookQueueWorker struct + func NewWebhookQueueWorker(opts WebhookQueueWorkerOptions) *WebhookQueueWorker + func (w *WebhookQueueWorker) EnqueuePaymentWebhook(ctx context.Context, event PaymentEvent) error + func (w *WebhookQueueWorker) EnqueueRefundWebhook(ctx context.Context, event RefundEvent) error + func (w *WebhookQueueWorker) Start(ctx context.Context) + func (w *WebhookQueueWorker) Stop() + type WebhookQueueWorkerOptions struct + Config config.CallbacksConfig + Logger zerolog.Logger + Metrics *metrics.Metrics + PollInterval time.Duration + RetryConfig RetryConfig + Store storage.Store