Skip to main content
Le composant @dodopayments/convex ajoute Dodo Payments à votre backend Convex. Il fournit une fonction checkout qui crée des sessions de checkout, une fonction customerPortal qui ouvre le Customer Portal pour l’utilisateur connecté, ainsi que createDodoWebhookHandler, qui vérifie les webhooks dans une action HTTP Convex. Il nécessite Convex 1.26 ou une version ultérieure.

Checkout Function

Créez des sessions de checkout depuis les actions Convex.

Customer Portal

Permettez aux clients de gérer leurs abonnements et leurs informations.

Webhooks

Recevez et traitez les événements webhook de Dodo Payments.

Installation

1

Install the Package

Exécutez cette commande à la racine de votre projet :
2

Add Component to Convex Config

Ajoutez le composant Dodo Payments à votre configuration Convex :
Après avoir modifié convex.config.ts, exécutez npx convex dev une fois pour générer les types.
3

Set Up Environment Variables

Définissez les variables d’environnement dans votre tableau de bord Convex, sous Settings → Environment Variables. Pour ouvrir le tableau de bord, exécutez :
Ajoutez ces variables d’environnement :
  • DODO_PAYMENTS_API_KEY : votre clé API Dodo Payments, disponible sous Developer → API Keys dans le tableau de bord Dodo Payments.
  • DODO_PAYMENTS_ENVIRONMENT : test_mode ou live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET : votre secret webhook, disponible sous Developer → Webhooks. Requis pour la gestion des webhooks. Le gestionnaire de webhooks lit exactement ce nom de variable.
Stockez les secrets en tant que variables d’environnement Convex. Les fonctions du backend Convex ne lisent pas les fichiers .env. Ne commitez jamais de secrets dans le contrôle de version.

Exemples de configuration du composant

1

Create Internal Query

Créez une requête interne qui recherche un client dans votre base de données à partir de son ID d’authentification. La fonction identify de l’étape suivante l’utilise pour obtenir l’ID client Dodo Payments de l’utilisateur connecté pour le Customer Portal.
Le composant ne définit pas de schéma. Avant d’utiliser cette requête, définissez une table customers avec un index by_auth_id dans convex/schema.ts, ou modifiez la requête pour l’adapter à votre schéma existant.
2

Configure DodoPayments Component

Créez le client. identify associe l’utilisateur Convex connecté à un ID client Dodo Payments. Elle renvoie null si aucun utilisateur n’est connecté ou si aucun client ne correspond.
Ajoutez ensuite les fonctions dont vous avez besoin :
Utilisez cette fonction pour ajouter le checkout Dodo Payments à votre application Convex. Elle crée une session de checkout à partir des champs acceptés par le validateur de payload de checkout du composant.

Fonction de checkout

Le composant Convex crée des sessions de checkout, le flux de checkout recommandé pour tous les paiements. Une session contient le panier de produits, les informations du client et les options de checkout.

Utilisation

Appelez checkout depuis une action Convex, avec les champs de la session de checkout dans payload :
checkout n’appelle pas identify. Pour associer un client existant, transmettez customer: { customer_id } dans le payload. Pour plus de détails et la liste complète des champs pris en charge, consultez Checkout Sessions. Une session créée avec payment_method_id ne renvoie aucune URL de checkout ; checkout génère donc une erreur dans ce cas.

Format de réponse

La fonction de checkout renvoie un objet contenant l’URL de checkout :

Fonction Customer Portal

La fonction Customer Portal renvoie une URL du Customer Portal pour l’utilisateur connecté.

Utilisation

Elle renvoie un objet contenant un champ portal_url.

Paramètres

boolean
défaut:"false"
Si cette valeur est définie sur true, Dodo Payments envoie également le lien du portail par e-mail au client.
customerPortal obtient le client depuis la fonction identify de votre configuration DodoPayments, qui doit renvoyer l’dodoCustomerId du client. Si identify renvoie null, customerPortal génère une erreur User is not authenticated..

Gestionnaire de webhook

createDodoWebhookHandler vérifie chaque requête avant d’exécuter votre code :
  • Method: Enregistrez la route avec method: "POST". Les requêtes utilisant d’autres méthodes n’atteignent pas le gestionnaire.
  • Signature Verification: Vérifie la signature Standard Webhooks avec la variable d’environnement DODO_PAYMENTS_WEBHOOK_SECRET. Renvoie 400 si la vérification échoue.
  • Payload Validation: Validé avec Zod. Renvoie 400 pour les payloads non valides.
  • Error Handling:
    • 400 : signature non valide, payload non valide ou erreur générée par l’un de vos gestionnaires
    • 200 : tous les gestionnaires ont terminé
    • Si DODO_PAYMENTS_WEBHOOK_SECRET n’est pas défini, le gestionnaire génère une erreur et la requête échoue.
  • Event Routing: Appelle onPayload pour chaque événement, puis le gestionnaire correspondant au type de l’événement.

Gestionnaires d’événements webhook pris en charge

Chaque gestionnaire reçoit le ActionCtx Convex et le payload vérifié correspondant à son type d’événement :

Utilisation frontend

Appelez les actions de checkout et du portail depuis vos composants React avec le hook useAction de convex/react.

Prompt pour LLM

Copiez ce prompt dans votre assistant de programmation IA pour lui demander d’ajouter le composant à votre projet. Pour fournir également à votre agent la documentation et les compétences Dodo Payments, installez le Agent Plugin.
Dernière modification le 26 septembre 2026