Skip to main content
El componente @dodopayments/convex añade Dodo Payments a tu backend de Convex. Proporciona una función checkout que crea sesiones de checkout, una función customerPortal que abre el Customer Portal para el usuario que ha iniciado sesión y createDodoWebhookHandler, que verifica los webhooks en una acción HTTP de Convex. Requiere Convex 1.26 o posterior.

Checkout Function

Crea sesiones de checkout desde las acciones de Convex.

Customer Portal

Permite que los clientes gestionen sus suscripciones y datos.

Webhooks

Recibe y procesa eventos de webhook de Dodo Payments.

Instalación

1

Install the Package

Ejecuta este comando en la raíz de tu proyecto:
2

Add Component to Convex Config

Añade el componente de Dodo Payments a tu configuración de Convex:
Después de editar convex.config.ts, ejecuta npx convex dev una vez para generar los tipos.
3

Set Up Environment Variables

Configura las variables de entorno en tu panel de Convex, en Settings → Environment Variables. Para abrir el panel, ejecuta:
Añade estas variables de entorno:
  • DODO_PAYMENTS_API_KEY: tu clave de API de Dodo Payments, disponible en Developer → API Keys en el panel de Dodo Payments.
  • DODO_PAYMENTS_ENVIRONMENT: test_mode o live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET: tu secreto de webhook, disponible en Developer → Webhooks. Es obligatorio para gestionar webhooks. El controlador de webhooks lee exactamente este nombre de variable.
Almacena los secretos como variables de entorno de Convex. Las funciones del backend de Convex no leen archivos .env. Nunca incluyas secretos en el control de versiones.

Ejemplos de configuración del componente

1

Create Internal Query

Crea una consulta interna que busque un cliente en tu base de datos mediante su ID de autenticación. La función identify del siguiente paso la utiliza para obtener el ID de cliente de Dodo Payments del usuario que ha iniciado sesión para el portal de clientes.
El componente no define un esquema. Antes de utilizar esta consulta, define una tabla customers con un índice by_auth_id en convex/schema.ts, o cambia la consulta para que coincida con tu esquema existente.
2

Configure DodoPayments Component

Crea el cliente. identify asigna el usuario de Convex que ha iniciado sesión a un ID de cliente de Dodo Payments. Devuelve null si ningún usuario ha iniciado sesión o no hay ningún cliente coincidente.
A continuación, añade las funciones que necesites:
Utiliza esta función para añadir el checkout de Dodo Payments a tu aplicación de Convex. Crea una sesión de checkout a partir de los campos aceptados por el validador de payload de checkout del componente.

Función de checkout

El componente de Convex crea sesiones de checkout, el flujo de checkout recomendado para todos los pagos. Una sesión contiene el carrito de productos, los datos del cliente y las opciones de checkout.

Uso

Llama a checkout desde una acción de Convex, con los campos de la sesión de checkout en payload:
checkout no llama a identify. Para asociar un cliente existente, pasa customer: { customer_id } en el payload. Para obtener más información y la lista completa de campos compatibles, consulta Checkout Sessions. Una sesión creada con payment_method_id no devuelve ninguna URL de checkout, por lo que checkout genera un error en ese caso.

Formato de respuesta

La función de checkout devuelve un objeto con la URL de checkout:

Función de Customer Portal

La función del portal de clientes devuelve una URL de Customer Portal para el usuario que ha iniciado sesión.

Uso

Devuelve un objeto con un campo portal_url.

Parámetros

boolean
predeterminado:"false"
Si se establece en true, Dodo Payments también envía por correo electrónico el enlace al portal al cliente.
customerPortal obtiene el cliente de la función identify en tu configuración de DodoPayments, que debe devolver el dodoCustomerId del cliente. Si identify devuelve null, customerPortal genera un error User is not authenticated..

Controlador de webhook

createDodoWebhookHandler verifica cada solicitud antes de ejecutar tu código:
  • Method: Registra la ruta con method: "POST". Las solicitudes con otros métodos no llegan al controlador.
  • Signature Verification: Verifica la firma de Standard Webhooks con la variable de entorno DODO_PAYMENTS_WEBHOOK_SECRET. Devuelve 400 si la verificación falla.
  • Payload Validation: Se valida con Zod. Devuelve 400 para payloads no válidos.
  • Error Handling:
    • 400: Firma no válida, payload no válido o un error generado por uno de tus controladores
    • 200: Todos los controladores han finalizado
    • Si DODO_PAYMENTS_WEBHOOK_SECRET no está configurada, el controlador genera un error y la solicitud falla.
  • Event Routing: Llama a onPayload para cada evento y, después, al controlador correspondiente al tipo de evento.

Controladores de eventos de webhook compatibles

Cada controlador recibe el ActionCtx de Convex y el payload verificado correspondiente a su tipo de evento:

Uso en el frontend

Llama a las acciones de checkout y del portal desde tus componentes de React con el hook useAction de convex/react.

Prompt para LLM

Copia este prompt en tu asistente de programación con IA para que añada el componente a tu proyecto. Para proporcionar también a tu agente la documentación y las skills de Dodo Payments, instala el Agent Plugin.
Última modificación el 26 de septiembre de 2026