PhoenixKit.Modules.Billing.WebhookProcessor (phoenix_kit v1.7.38)

Copy Markdown View Source

Processes normalized webhook events from payment providers.

This module handles the business logic for webhook events after they've been verified and normalized by the provider modules. It ensures:

  • Idempotency: Events are tracked by event_id to prevent double-processing
  • Error handling: Failed events are logged with retry counts
  • Business logic: Invoices are marked paid, receipts generated, etc.

Event Types

  • checkout.completed - Checkout session completed (payment succeeded)
  • checkout.expired - Checkout session expired
  • payment.succeeded - Direct payment succeeded (for saved cards)
  • payment.failed - Payment failed
  • refund.created - Refund was processed
  • setup.completed - Setup session completed (card saved)

Usage

# Called by BillingWebhookController
WebhookProcessor.process(normalized_event)

Summary

Functions

Processes a normalized webhook event.

Functions

process(event)

@spec process(map()) :: {:ok, any()} | {:error, atom()}

Processes a normalized webhook event.

Checks for idempotency, processes the event, and logs the result.

Returns

  • {:ok, result} - Event processed successfully
  • {:error, :duplicate_event} - Event already processed
  • {:error, reason} - Processing failed