towerops/lib/towerops/workers/stripe_webhook_worker.ex

24 lines
597 B
Elixir

defmodule Towerops.Workers.StripeWebhookWorker do
@moduledoc """
Processes a Stripe webhook event asynchronously so the controller can ACK
the webhook sender immediately.
"""
use Oban.Pro.Worker, queue: :default, max_attempts: 3
alias Towerops.Billing.WebhookProcessor
require Logger
@impl Oban.Pro.Worker
def process(%Oban.Job{args: %{"event" => event}}) do
case WebhookProcessor.process(event) do
:ok ->
:ok
{:error, reason} ->
Logger.error("Stripe webhook processing failed: #{inspect(reason)}")
{:error, reason}
end
end
end