24 lines
597 B
Elixir
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
|