defmodule AppWeb.StripeController do use AppWeb, :controller @hook_secret System.get_env("STRIPE_WEBHOOK_SECRET") def hook(%{params: %{raw: raw}} = conn, params) do signature = conn |> Plug.Conn.get_req_header("stripe-signature") |> List.first secret = @hook_secret case Stripe.Webhook.construct_event(raw, signature, secret) do {:ok, %Stripe.Event{} = event} -> conn |> put_status(200) {:error, reason} -> conn |> put_status(400) end end end