Descripción General
La plantilla base minimalista de Next.js es una aplicación inicial con Dodo Payments ya conectado. Añade tus claves de API y los ID de tus productos para obtener una página de precios que abre el checkout, un endpoint de webhook para los eventos de pago y un enlace al Customer Portal.Esta plantilla base utiliza el App Router de Next.js 16 con TypeScript, Tailwind CSS 4 y el adaptador
@dodopayments/nextjs. Para añadir los mismos route handlers a una aplicación existente, consulta Next.js Adaptor.Características
La plantilla base incluye:- Configuración rápida: pasa de clonar el repositorio a tener una página de precios en funcionamiento en unos cinco minutos.
- Checkout: un flujo de checkout preconfigurado basado en
@dodopayments/nextjs. - Página de precios: una página de precios con tema oscuro y estilos de Tailwind CSS.
- Webhook Handler: un endpoint que verifica la firma de cada webhook y ejecuta tu código para el evento.
- Customer Portal: un enlace en el encabezado que abre el Customer Portal, donde los clientes gestionan sus suscripciones.
- TypeScript: definiciones y handlers de productos tipados.
- Checkout precompletado: envía el nombre y el correo electrónico del cliente al checkout para que no tenga que volver a escribirlos.
Requisitos previos
Antes de comenzar, necesitas:- Node.js 20.9 o posterior, que es obligatorio para Next.js 16.
- Una cuenta de Dodo Payments, para crear una clave de API y un secreto de firma de webhook en el dashboard.
Inicio rápido
1
Clone the Repository
2
Install Dependencies
3
Get API Credentials
Regístrate en Dodo Payments y obtén tus credenciales en el dashboard:
- API Key: crea una clave en Dashboard → Developer → API Keys.
- Webhook Key: añade un endpoint en Dashboard → Developer → Webhooks y copia su secreto de firma. La URL del endpoint debe ser pública y utilizar HTTPS. Para recibir eventos en tu equipo, consulta Webhook Events.
4
Configure Environment Variables
Copia el archivo de ejemplo para crear un archivo Configura los valores con tus credenciales de Dodo Payments:Los route handlers leen estas variables:
.env en el directorio raíz:DODO_PAYMENTS_API_KEYautentica los handlers de checkout y Customer Portal.DODO_PAYMENTS_WEBHOOK_KEYverifica las firmas de los webhooks.DODO_PAYMENTS_RETURN_URLindica dónde envía checkout al cliente después del pago.DODO_PAYMENTS_ENVIRONMENTestest_modeolive_mode.
5
Add Your Products
Sustituye los productos de ejemplo en La página de precios muestra
src/lib/products.ts por los tuyos. Configura cada product_id con el ID de un producto incluido en Products en tu dashboard:name, description, price y features de este archivo. Checkout cobra el precio configurado en el producto de Dodo Payments, así que mantén price sincronizado con él.6
Run the Development Server
Estructura del proyecto
Los route handlers de checkout, Customer Portal y webhook se encuentran ensrc/app/api/:
Personalización
Actualizar la información del producto
Editasrc/lib/products.ts para cambiar:
- Los ID de los productos, desde Products en tu dashboard de Dodo Payments
- Los precios
- Las funciones
- Las descripciones
Precompletar los datos del cliente
src/app/components/ProductCard.tsx envía un nombre y un correo electrónico codificados directamente en cada solicitud de checkout. Sustitúyelos por los datos del usuario que ha iniciado sesión:
Actualizar Customer Portal
El enlace de Customer Portal ensrc/app/components/Header.tsx abre /api/customer-portal con un ID de cliente codificado directamente. Sustitúyelo por el ID de cliente de Dodo Payments del usuario que ha iniciado sesión:
Eventos de webhook
El handler ensrc/app/api/webhook/route.ts verifica cada solicitud con DODO_PAYMENTS_WEBHOOK_KEY y, después, gestiona dos eventos:
onSubscriptionActivese ejecuta cuando una suscripción pasa a estar activa (subscription.active).onPaymentSucceededse ejecuta cuando un pago se realiza correctamente (payment.succeeded).
onSubscriptionCancelled. Next.js Adaptor contiene la lista de todos los handlers compatibles.
Dodo Payments no puede acceder a localhost. Para el desarrollo local, utiliza un túnel como ngrok para exponer tu servidor local y usa la URL del túnel como endpoint de webhook.
Implementación
Compilar para producción
Implementar en Vercel
[DODO_PAYMENTS_RETURN_URL con tu URL de producción.
Actualizar la URL del webhook
Después de la implementación, añade la URL de tu webhook de producción en Dodo Payments Dashboard, sustituyendoexample.com por tu dominio:
DODO_PAYMENTS_WEBHOOK_KEY en tu entorno de producción.
Solución de problemas
Module not found or build errors
Module not found or build errors
Elimina
node_modules y package-lock.json y, después, reinstala las dependencias:Checkout redirect fails
Checkout redirect fails
Comprueba estas causas habituales:
- El ID del producto no existe en tu dashboard de Dodo Payments.
- La API key o
DODO_PAYMENTS_ENVIRONMENTen.enves incorrecta. Una clave del modo de prueba solo funciona contest_mode.
npm run dev.Webhooks not receiving events
Webhooks not receiving events
Para realizar pruebas locales, utiliza ngrok para exponer tu servidor:En tu Dodo dashboard, añade un endpoint con la URL HTTPS de ngrok seguida de
/api/webhook. Copia el secreto de firma de ese endpoint en DODO_PAYMENTS_WEBHOOK_KEY dentro de tu archivo .env.Customer portal link doesn't work
Customer portal link doesn't work
Sustituye el
CUSTOMER_ID codificado directamente en src/app/components/Header.tsx por el ID de un cliente de tu dashboard de Dodo Payments.En producción, obtén el ID del cliente desde tu sistema de autenticación y tu base de datos.Más información
- Documentación de Dodo Payments
- Documentación de Checkout Sessions
- Documentación de Webhooks
- Next.js Adaptor: opciones para los handlers
Checkout,CustomerPortalyWebhooks
Soporte
Para obtener ayuda con la plantilla base:- Haz preguntas en la comunidad de Discord.
- Informa de problemas y sigue las novedades en el repositorio de GitHub.
- Envía un correo electrónico al equipo de soporte.