GitHub Repository
Code source complet et guide d’installation
Configuration rapide
1. Prérequis
- Compte Vercel
- Compte Neon database
- Clé API DodoPayments depuis le tableau de bord
2. Installer les dépendances
3. Configuration de la base de données
- Inscrivez-vous sur Neon
- Créez un nouveau projet
- Ouvrez l’éditeur SQL
- Copiez et collez le contenu de
schema.sql - Exécutez la requête
- Récupérez votre chaîne de connexion depuis Neon → Connection Details
4. Définir les variables d’environnement initiales
Via Vercel CLI :
Remarque : Nous définirons DODO_PAYMENTS_WEBHOOK_KEY après le déploiement une fois que vous aurez votre URL de webhook.
5. Déployer
6. Obtenez votre URL de webhook
Votre URL de webhook est :7. Enregistrer le webhook dans le tableau de bord DodoPayments
- Accédez au DodoPayments Dashboard → Developer → Webhooks
- Créez un nouvel endpoint de webhook
- Configurez votre URL de webhook comme endpoint
- Activez ces événements d’abonnement :
subscription.activesubscription.cancelledsubscription.renewed
- Copiez le Signing Secret
8. Définir la clé du webhook et redéployer
Ce que cela fait
Traite les événements d’abonnement et les stocke dans PostgreSQL :- subscription.active - Crée/met à jour les enregistrements de clients et d’abonnements
- subscription.cancelled - Marque l’abonnement comme annulé
- subscription.renewed - Met à jour la date de facturation suivante
Fonctionnalités clés
✅ Vérification de la signature - Utilisation de la bibliothèque dodopayments✅ Idempotence - Empêche les traitements en double grâce aux identifiants de webhook
✅ Journalisation des événements - Traçabilité complète dans la table
webhook_events✅ Gestion des erreurs - Consignées et réessayables
Remarque : Cette implémentation illustre la gestion de trois événements d’abonnement principaux (subscription.active,subscription.cancelled,subscription.renewed) avec un champ minimal. Vous pouvez facilement l’étendre pour prendre en charge d’autres types d’événements et champs selon vos besoins.
Fichiers de configuration
Schéma de base de données
- customers - Email, nom, dodo_customer_id
- subscriptions - Statut, montant, next_billing_date, lié aux clients
- webhook_events - Journal des événements avec webhook_id pour l’idempotence
Code d’implémentation
Comment ça fonctionne
Le gestionnaire de webhook :- Désactive l’analyse du corps - Pour accéder au corps brut pour la vérification de la signature
- Vérifie la signature - S’assure que la requête provient de DodoPayments en utilisant HMAC-SHA256
- Vérifie les doublons - Utilise l’ID du webhook pour empêcher le traitement du même événement deux fois
- Consigne l’événement - Stocke le webhook brut dans la table
webhook_eventspour la piste d’audit - Traite l’événement - Crée ou met à jour les clients et abonnements dans Neon
- Gère les erreurs - Enregistre les échecs et marque l’événement comme non traité pour réessayer
Tests
Développement local :- Sélectionnez votre projet
- Allez dans Déploiements → dernier déploiement
- Cliquez sur Fonctions → Journaux
- Allez dans Développeurs → Webhooks
- Ajoutez un point de terminaison avec votre URL de Fonctions Vercel
- Activez : subscription.active, subscription.cancelled, subscription.renewed
Problèmes courants
| Problème | Solution |
|---|---|
| Vérification échouée | Vérifiez que la clé du webhook est correcte depuis le tableau de bord DodoPayments |
| Erreur de connexion à la base de données | Vérifiez la chaîne de connexion Neon et utilisez une connexion poolée |
| Délai d’attente de la fonction | Optimisez les requêtes ; le plan Pro a un délai d’attente plus long (60s) |
| Variables d’environnement non disponibles | Définissez dans le tableau de bord ou CLI, assurez-vous que tous les environnements sont sélectionnés, redéployez |