@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_modeoulive_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.
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.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.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
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
Appelezcheckout 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
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_SECRETn’est pas défini, le gestionnaire génère une erreur et la requête échoue.
- Event Routing: Appelle
onPayloadpour 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 leActionCtx 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 hookuseAction de convex/react.