fix Stripe webhook crash on struct access
All checks were successful
deploy / deploy (push) Successful in 1m0s
All checks were successful
deploy / deploy (push) Successful in 1m0s
Stripe.Checkout.Session is a struct that doesn't implement Access, so get_in with atom keys fails. Use direct struct field access instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
762a2ee100
commit
a0985bd07e
@ -26,7 +26,7 @@ defmodule BerrypodWeb.StripeWebhookController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp handle_event(%Stripe.Event{type: "checkout.session.completed", data: %{object: session}}) do
|
defp handle_event(%Stripe.Event{type: "checkout.session.completed", data: %{object: session}}) do
|
||||||
order_id = get_in(session, [:metadata, "order_id"]) || session.metadata["order_id"]
|
order_id = session.metadata["order_id"]
|
||||||
|
|
||||||
case Orders.get_order(order_id) do
|
case Orders.get_order(order_id) do
|
||||||
nil ->
|
nil ->
|
||||||
@ -85,7 +85,7 @@ defmodule BerrypodWeb.StripeWebhookController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp handle_event(%Stripe.Event{type: "checkout.session.expired", data: %{object: session}}) do
|
defp handle_event(%Stripe.Event{type: "checkout.session.expired", data: %{object: session}}) do
|
||||||
order_id = get_in(session, [:metadata, "order_id"]) || session.metadata["order_id"]
|
order_id = session.metadata["order_id"]
|
||||||
|
|
||||||
case Orders.get_order(order_id) do
|
case Orders.get_order(order_id) do
|
||||||
nil -> :ok
|
nil -> :ok
|
||||||
@ -116,7 +116,7 @@ defmodule BerrypodWeb.StripeWebhookController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp update_shipping_cost(order, session) do
|
defp update_shipping_cost(order, session) do
|
||||||
shipping_amount = get_in(session, [Access.key(:shipping_cost), Access.key(:amount_total)])
|
shipping_amount = session.shipping_cost && session.shipping_cost.amount_total
|
||||||
|
|
||||||
if is_integer(shipping_amount) and shipping_amount > 0 do
|
if is_integer(shipping_amount) and shipping_amount > 0 do
|
||||||
new_total = order.subtotal + shipping_amount
|
new_total = order.subtotal + shipping_amount
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user