Skip to main content

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:
Crea ambos mientras el interruptor de Live Mode de la barra lateral esté desactivado. Una clave del modo de prueba solo funciona con DODO_PAYMENTS_ENVIRONMENT=test_mode, y los pagos del modo de prueba no mueven dinero real.
4

Configure Environment Variables

Copia el archivo de ejemplo para crear un archivo .env en el directorio raíz:
Configura los valores con tus credenciales de Dodo Payments:
Los route handlers leen estas variables:
  • DODO_PAYMENTS_API_KEY autentica los handlers de checkout y Customer Portal.
  • DODO_PAYMENTS_WEBHOOK_KEY verifica las firmas de los webhooks.
  • DODO_PAYMENTS_RETURN_URL indica dónde envía checkout al cliente después del pago.
  • DODO_PAYMENTS_ENVIRONMENT es test_mode o live_mode.
No confirmes tu archivo .env en el control de versiones. El archivo .gitignore del repositorio ya lo excluye.
5

Add Your Products

Sustituye los productos de ejemplo en src/lib/products.ts por los tuyos. Configura cada product_id con el ID de un producto incluido en Products en tu dashboard:
La página de precios muestra 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

Abre http://localhost:3000 para ver tu página de precios.

Estructura del proyecto

Los route handlers de checkout, Customer Portal y webhook se encuentran en src/app/api/:

Personalización

Actualizar la información del producto

Edita src/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 en src/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:
Para obtener un ID de cliente para realizar pruebas, completa una compra de prueba y copia el ID del cliente desde Customers en el dashboard. En producción, obtén el ID desde tu backend.

Eventos de webhook

El handler en src/app/api/webhook/route.ts verifica cada solicitud con DODO_PAYMENTS_WEBHOOK_KEY y, después, gestiona dos eventos:
  • onSubscriptionActive se ejecuta cuando una suscripción pasa a estar activa (subscription.active).
  • onPaymentSucceeded se ejecuta cuando un pago se realiza correctamente (payment.succeeded).
Añade tu lógica de negocio dentro de estos handlers:
Para gestionar más eventos, añade sus handlers, como 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

[ Implementar con Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate) Añade las cuatro variables de entorno en el dashboard de Vercel y configura 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, sustituyendo example.com por tu dominio:
Cada endpoint tiene su propio secreto de firma. Copia el secreto del nuevo endpoint en DODO_PAYMENTS_WEBHOOK_KEY en tu entorno de producción.

Solución de problemas

Elimina node_modules y package-lock.json y, después, reinstala las dependencias:
Comprueba estas causas habituales:
  • El ID del producto no existe en tu dashboard de Dodo Payments.
  • La API key o DODO_PAYMENTS_ENVIRONMENT en .env es incorrecta. Una clave del modo de prueba solo funciona con test_mode.
Busca el error en la consola del navegador y en el terminal que ejecuta npm run dev.
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.

Más información

Soporte

Para obtener ayuda con la plantilla base:
Última modificación el 26 de septiembre de 2026