Passer au contenu principal

GitHub Repository

Code source complet et guide d’installation

Configuration rapide

1. Prérequis

2. Installer les dépendances

3. Configuration de la base de données

  1. Inscrivez-vous sur Neon
  2. Créez un nouveau projet
  3. Ouvrez l’éditeur SQL
  4. Copiez et collez le contenu de schema.sql
  5. Exécutez la requête
  6. 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

  1. Accédez au DodoPayments Dashboard → Developer → Webhooks
  2. Créez un nouvel endpoint de webhook
  3. Configurez votre URL de webhook comme endpoint
  4. Activez ces événements d’abonnement :
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. 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

Tables créé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 :
  1. Désactive l’analyse du corps - Pour accéder au corps brut pour la vérification de la signature
  2. Vérifie la signature - S’assure que la requête provient de DodoPayments en utilisant HMAC-SHA256
  3. Vérifie les doublons - Utilise l’ID du webhook pour empêcher le traitement du même événement deux fois
  4. Consigne l’événement - Stocke le webhook brut dans la table webhook_events pour la piste d’audit
  5. Traite l’événement - Crée ou met à jour les clients et abonnements dans Neon
  6. Gère les erreurs - Enregistre les échecs et marque l’événement comme non traité pour réessayer

Tests

Développement local :
Voir les journaux dans le tableau de bord Vercel :
  1. Sélectionnez votre projet
  2. Allez dans Déploiements → dernier déploiement
  3. Cliquez sur FonctionsJournaux
Configurer dans le tableau de bord DodoPayments :
  1. Allez dans Développeurs → Webhooks
  2. Ajoutez un point de terminaison avec votre URL de Fonctions Vercel
  3. Activez : subscription.active, subscription.cancelled, subscription.renewed

Problèmes courants

Ressources

Dernière modification le 22 mai 2026