Saltar al contenido principal

GitHub Repository

Código fuente completo y guía de configuración
Consulta el kit inicial completo para Supabase
Un kit inicial mínimo de suscripción construido con Next.js, Supabase y Dodo Payments. Esta plantilla te ayuda a configurar rápidamente un SaaS de suscripción con autenticación, pagos y webhooks.
Kit inicial de suscripción Supabase de Dodo Payments

Configuración Rápida

1. Requisitos Previos

2. Autenticación y Enlace

Obtén tu referencia de proyecto desde el Tablero de Supabase → Configuración del Proyecto

3. Configuración de la Base de Datos

  1. Ve a tu Supabase Dashboard
  2. Abre el SQL Editor
  3. Crea una nueva consulta
  4. Copia y pega todo el contenido de schema.sql
  5. Ejecuta la consulta

4. Establecer Secretos Iniciales

Supabase proporciona automáticamente SUPABASE_URL e SUPABASE_SERVICE_ROLE_KEY en tiempo de ejecución.
Nota: Estableceremos DODO_PAYMENTS_WEBHOOK_KEY después del despliegue una vez que tengas tu URL de webhook.

5. Desplegar

La función ya está configurada en functions/webhook/index.ts: solo desplíegala:

6. Obtén Tu URL de Webhook

Tu URL de webhook es:

7. Registrar Webhook en el Tablero de DodoPayments

  1. Ve al Panel de DodoPayments → Developer → Webhooks
  2. Crea un nuevo endpoint de webhook
  3. Configura tu URL de webhook como el endpoint
  4. Activa estos eventos de suscripción:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copia el Signing Secret

8. Establecer Clave de Webhook y Redeploy

Qué Hace

Procesa eventos de suscripción y los almacena en Supabase PostgreSQL:
  • subscription.active - Crea/actualiza registros de clientes y suscripciones
  • subscription.cancelled - Marca la suscripción como cancelada
  • subscription.renewed - Actualiza la fecha de facturación siguiente

Características Clave

Verificación de firma - Usando la librería dodopayments
Idempotencia - Evita el procesamiento duplicado con IDs de webhook
Registro de eventos - Auditoría completa en la tabla webhook_events
Manejo de errores - Registrado y reintentable
Nota: Esta implementación demuestra cómo manejar tres eventos centrales de suscripción (subscription.active, subscription.cancelled, subscription.renewed) con campos mínimos. Puedes extenderla fácilmente para admitir tipos de eventos y campos adicionales según tus requisitos.

Archivos de Configuración

Esquema de Base de Datos

Tablas creadas:
  • customers - Email, nombre, dodo_customer_id
  • subscriptions - Estado, monto, next_billing_date, vinculado a clientes
  • webhook_events - Registro de eventos con webhook_id para idempotencia

Código de Implementación

Cómo Funciona

La función Edge basada en Deno:
  1. Verifica la firma - Usa la biblioteca dodopayments para la verificación HMAC-SHA256
  2. Comprueba la idempotencia - Consulta el ID del webhook para evitar el procesamiento duplicado
  3. Registra el evento - Almacena los datos crudos del webhook en la tabla webhook_events
  4. Procesa actualizaciones - Crea o actualiza clientes y suscripciones mediante el cliente de Supabase
  5. Gestiona errores - Registra fallos y marca el evento para reintentos

Pruebas

Desarrollo local:
El indicador --no-verify-jwt es obligatorio porque los webhooks no incluyen tokens JWT. La seguridad la proporciona la verificación de la firma del webhook.
Ver logs:
O en Tablero de Supabase → Funciones Edge → webhook → pestaña de Logs Configurar en el Tablero de DodoPayments:
  1. Ve a Desarrolladores → Webhooks
  2. Agrega un endpoint con tu URL de Supabase
  3. Habilita: subscription.active, subscription.cancelled, subscription.renewed

Problemas Comunes

Recursos

Última modificación el 22 de mayo de 2026