Buscar

Buscar en Kavel...

Menú de documentación

Pagos

Suscripciones de Stripe en el edge, checkout, un portal de facturación y webhooks con firma verificada.

Nota

Pagos requiere el módulo auth, las suscripciones están ligadas a un usuario. La CLI lo selecciona automáticamente por ti.

Qué obtienes

  • Procedimientos oRPC tipados (createCheckoutSession, createPortalSession y getSubscription) todos tras requireAuth
  • Un webhook en /api/stripe/webhook que verifica firmas y hace upsert de la fila de suscripción de cada usuario
  • Una página /billing que inicia el checkout y enlaza al portal de clientes de Stripe

Stripe nativo del edge

No hay runtime de Node en Workers, así que el módulo usa el cliente HTTP basado en fetch de Stripe y el proveedor Web Crypto SubtleCrypto para verificar las firmas de webhook de forma asíncrona, sin node_compat.

ts
const event = await stripe.webhooks.constructEventAsync(
  payload,
  signature,
  env.STRIPE_WEBHOOK_SECRET,
  undefined,
  Stripe.createSubtleCryptoProvider(),
);

Configuración

  1. Crea un precio recurrente en Stripe y copia su id en STRIPE_PRICE_ID.
  2. Añade STRIPE_SECRET_KEY (usa una clave sk_test_… durante el desarrollo).
  3. Reenvía los webhooks en local y copia el secreto de firma en STRIPE_WEBHOOK_SECRET.
bash
stripe listen --forward-to localhost:8787/api/stripe/webhook

Consejo

Sin clave de Stripe, los endpoints de checkout quedan inactivos, así que el resto de la app se construye y funciona igual. Consulta Despliegue para la configuración del webhook en producción.