summaryrefslogtreecommitdiff
path: root/Biz
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2025-11-12 19:01:35 -0500
committerBen Sima <ben@bsima.me>2025-11-12 19:01:35 -0500
commit59cb3c00fb74dd9c6d7155f0e00045bf033eaa79 (patch)
treef507aa3957ee940b870eaa3c32dc209d132ea102 /Biz
parent906a90276d2adfe039f9e56908b86ce59cd6b307 (diff)
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
Diffstat (limited to 'Biz')
-rw-r--r--Biz/PodcastItLater/Billing.py18
1 files changed, 15 insertions, 3 deletions
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