Topic 37 / 40
Stripe API Integration: Webhooks & Subscriptions
1. Deep Architecture
Stripe sends webhook events to notify the system of subscription changes. We verify signatures using HMAC-SHA256 headers. To prevent duplicate billing from duplicate webhook retries, we use transaction locks and track processed message IDs.
2. The Feynman Gatekeeper
[KNOWLEDGE CHECK] Explain how webhook signature checks work, and how to prevent double-processing duplicate webhook events.
3. The Code
import stripe
from django.http import HttpResponse
def handle_stripe_webhook(request):
payload = request.body
sig_header = request.META.get('HTTP_STRIPE_SIGNATURE')
try:
# Cryptographically verify the webhook payload source signature
event = stripe.Webhook.construct_event(payload, sig_header, "whsec_secret")
return HttpResponse(status=200)
except Exception:
return HttpResponse(status=400)
4. The Funnel
Stat Level-Up: Billing Engineer (Lvl 1).
Sanjaya Integration: Update team subscription tiers when payments complete.