From 59cb3c00fb74dd9c6d7155f0e00045bf033eaa79 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 12 Nov 2025 19:01:35 -0500 Subject: Fix TypeError in checkout webhook when client_reference_id is None - Handle case where client_reference_id is None or missing - Fall back to checking metadata.user_id if client_reference_id not available - Add try/except for int() conversion with proper error logging - Use safe .get() for session ID in error messages - Prevents TypeError: int() argument must be a string when webhook has None value --- Biz/PodcastItLater/Billing.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'Biz/PodcastItLater') diff --git a/Biz/PodcastItLater/Billing.py b/Biz/PodcastItLater/Billing.py index a58c1fa..46e67ff 100644 --- a/Biz/PodcastItLater/Billing.py +++ b/Biz/PodcastItLater/Billing.py @@ -284,13 +284,25 @@ def handle_webhook_event(payload: bytes, sig_header: str) -> dict[str, str]: def _handle_checkout_completed(session: dict[str, typing.Any]) -> None: """Handle checkout.session.completed event.""" - user_id = int(session.get("client_reference_id", 0)) + client_ref = session.get("client_reference_id") or session.get( + "metadata", + {}, + ).get("user_id") customer_id = session.get("customer") - if not user_id or not customer_id: + if not client_ref or not customer_id: logger.warning( "Missing user_id or customer_id in checkout session: %s", - session["id"], + session.get("id", "unknown"), + ) + return + + try: + user_id = int(client_ref) + except (ValueError, TypeError): + logger.warning( + "Invalid user_id in checkout session: %s", + client_ref, ) return -- cgit v1.2.3