@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_modeolive_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.
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.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.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
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 acheckout 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
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_SECRETno está configurada, el controlador genera un error y la solicitud falla.
- Event Routing: Llama a
onPayloadpara cada evento y, después, al controlador correspondiente al tipo de evento.
Controladores de eventos de webhook compatibles
Cada controlador recibe elActionCtx 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 hookuseAction de convex/react.