Skip to main content

GitHub Repository

Guide complet du code source et de configuration
Découvrez le Dodo Payments Supabase Subscription Starter — un boilerplate complet Next.js, Supabase et Dodo Payments avec authentification, paiements et webhooks.

Configuration rapide

1. Prérequis

Vous avez besoin des éléments suivants :
  • Un compte Supabase avec un projet créé
  • Une clé API Dodo Payments disponible dans Developer → API Keys du tableau de bord

2. Authentification et liaison

Trouvez la référence de votre projet dans Project Settings du tableau de bord Supabase.

3. Configuration de la base de données

  1. Accédez au tableau de bord Supabase.
  2. Ouvrez l’éditeur SQL.
  3. Copiez l’intégralité du contenu de schema.sql et exécutez-le.

4. Définir les secrets initiaux

Supabase fournit automatiquement SUPABASE_URL et SUPABASE_SERVICE_ROLE_KEY lors de l’exécution.
Vous définirez DODO_PAYMENTS_WEBHOOK_KEY après le déploiement, une fois que vous aurez l’URL de votre webhook.

5. Déployer

La fonction est déjà configurée dans functions/webhook/index.ts.

6. Obtenir l’URL de votre webhook

L’URL de votre webhook est la suivante :

7. Enregistrer le webhook dans le tableau de bord DodoPayments

  1. Accédez à Developer → Webhooks dans le tableau de bord Dodo Payments.
  2. Cliquez sur Add endpoint.
  3. Saisissez l’URL de votre webhook.
  4. Sélectionnez ces événements : subscription.active, subscription.cancelled, subscription.renewed.
  5. Cliquez sur Create endpoint et copiez le secret de signature.

8. Définir la clé du webhook et redéployer

Fonctionnement

Le gestionnaire de webhook traite les événements d’abonnement et les stocke dans PostgreSQL de Supabase :
  • subscription.active — Crée ou met à jour les enregistrements du client et de l’abonnement
  • subscription.cancelled — Marque l’abonnement comme annulé
  • subscription.renewed — Met à jour la prochaine date de facturation

Fonctionnalités clés

  • Vérification de signature — Utilise le SDK Dodo Payments pour vérifier l’authenticité du webhook
  • Idempotence — Utilise l’en-tête webhook-id pour empêcher le traitement en double
  • Journalisation des événements — Stocke tous les événements dans la table webhook_events à des fins d’audit
  • Gestion des erreurs — Consigne les échecs et marque les événements pour une nouvelle tentative
Cet exemple gère trois événements d’abonnement essentiels avec un nombre minimal de champs. Vous pouvez l’étendre pour prendre en charge d’autres types d’événements et champs selon vos besoins.

Fichiers de configuration

Schéma de la base de données

Tables créées :
  • customers — Adresse e-mail, nom et ID client Dodo Payments
  • subscriptions — Statut, montant, prochaine date de facturation, associé aux clients
  • webhook_events — Journal des événements avec l’ID du webhook pour l’idempotence

Code d’implémentation

Fonctionnement détaillé

La Edge Function basée sur Deno :
  1. Vérifie la signature — Utilise le SDK Dodo Payments pour la vérification HMAC-SHA256
  2. Vérifie les doublons — Utilise l’en-tête webhook-id pour empêcher le traitement en double
  3. Consigne l’événement — Stocke les données brutes du webhook dans la table webhook_events
  4. Traite les mises à jour — Crée ou met à jour les clients et les abonnements via le client Supabase
  5. Gère les erreurs — Consigne les échecs et marque les événements pour une nouvelle tentative

Tests

Développement local :
L’indicateur --no-verify-jwt est requis, car les webhooks n’incluent pas de jetons JWT. La sécurité est assurée par la vérification de la signature du webhook.
Afficher les journaux :
Ou dans le tableau de bord Supabase, sous Edge Functions → webhook → Logs. Configurer dans le tableau de bord Dodo Payments :
  1. Accédez à Developer → Webhooks.
  2. Ajoutez un endpoint avec votre URL Supabase.
  3. Sélectionnez subscription.active, subscription.cancelled et subscription.renewed.

Problèmes courants

Ressources

Dernière modification le 26 septembre 2026