Stripe webhook → Supabase fulfillment (pattern)
The reliable way to fulfill orders: verify the signature, use the service role to write, and stay idempotent against retries.
ของ lazyyy เอง · อัปเดต 9 ส.ค. 2569
Stripe webhook → Supabase fulfillment
The exact pattern this very site uses. Verify → write with service role → be idempotent (Stripe retries).
// preview
const event = stripe.webhooks.constructEvent(body, sig, secret);
if (event.type === "checkout.session.completed") {
await admin.from("purchases").upsert(
{ user_id, item_id, stripe_payment_id },
{ onConflict: "user_id,item_id" }, // idempotent
);
}
Full route (subscription events + refunds + a replay-safety note) for members.