UPDATE:
The answer is that the data are sent back to the application.
Alternatively, ngrok can also be used.
Fot test you will need 3 terminals open:
- In the first terminal, ensure the Stripe CLI listener is running (
stripe listen --forward-to localhost:4000/webhook/stripe
) - In the second terminal, ensure your app is running (
mix phx.server
). Remember you may need to runsource .env
in the terminal first - In the third terminal, execute
stripe trigger checkout.session.completed
.
I am replacing step three by going through and filling in the data directly in the application.
My handle event for saving to the database now looks like this:
@impl true
def handle_event(%Stripe.Event{type: "invoice.paid"} = event) do
IO.inspect(gettext("Payment Success"))
IO.inspect(event)
%{customer: customer_id, customer_email: email, amount_paid: amount} = event.data.object
Purchases.create_customer(%{
email: email,
stripe_customer_id: customer_id,
amount: amount
})
{:ok, "success"}
end
Practically the whole issue with a link to a sample application is available in the tutorial at this link.