Dépôt GitHub
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
- Obtenez votre chaîne de connexion depuis Neon → Détails de connexion
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
- Allez sur DodoPayments Dashboard → Développeur → Webhooks
- Créez un nouveau point de terminaison de webhook
- Configurez votre URL de webhook comme point de terminaison
- Activez ces événements d’abonnement :
subscription.activesubscription.cancelledsubscription.renewed
- Copiez le Secret de signature
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 signature - Utilisation de la bibliothèque dodopayments✅ Idempotence - Empêche le traitement en double avec les ID de webhook
✅ Journalisation des événements - Audit complet dans la table
webhook_events✅ Gestion des erreurs - Journalisé et réessayable
Remarque : Cette implémentation démontre la gestion de trois événements d’abonnement principaux (subscription.active,subscription.cancelled,subscription.renewed) avec des champs minimaux. Vous pouvez facilement l’étendre pour prendre en charge des types d’événements et des champs supplémentaires en fonction de 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 - Assure que la requête provient de DodoPayments en utilisant HMAC-SHA256
- Vérifie les doublons - Utilise l’ID de webhook pour éviter de traiter le même événement deux fois
- Journalise l’événement - Stocke le webhook brut dans la table
webhook_eventspour la traçabilité - Traite l’événement - Crée ou met à jour les clients et les abonnements dans Neon
- Gère les erreurs - Journalise les échecs et marque l’événement comme non traité pour réessai
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 |