From a0985bd07ecdc5928c0ae1ac5e3d17ab1b50b674 Mon Sep 17 00:00:00 2001 From: jamey Date: Sat, 21 Feb 2026 23:36:21 +0000 Subject: [PATCH] fix Stripe webhook crash on struct access 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 --- lib/berrypod_web/controllers/stripe_webhook_controller.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/berrypod_web/controllers/stripe_webhook_controller.ex b/lib/berrypod_web/controllers/stripe_webhook_controller.ex index 13418be..3891ab0 100644 --- a/lib/berrypod_web/controllers/stripe_webhook_controller.ex +++ b/lib/berrypod_web/controllers/stripe_webhook_controller.ex @@ -26,7 +26,7 @@ defmodule BerrypodWeb.StripeWebhookController do end 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 nil -> @@ -85,7 +85,7 @@ defmodule BerrypodWeb.StripeWebhookController do end 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 nil -> :ok @@ -116,7 +116,7 @@ defmodule BerrypodWeb.StripeWebhookController do end 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 new_total = order.subtotal + shipping_amount