Phase 3: Payments + Fulfillment

Total size:
L + L + M
Prerequisites:
Phase 2 complete (auth working, `users` + `purchases` tables exist, middleware gates `/products/account` + `/api/products/downloads`). Stripe account with at least one `Product` + `Price` created in the dashboard and the `price_xxx` ID pasted into `src/content/products/{slug}.mdx` frontmatter. `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` in `.env.local`. Stripe CLI installed locally for webhook forwarding during development.