Passer au contenu principal

GitHub Repository

Guide complet du code source et de configuration
Découvrez le kit de démarrage complet pour Supabase
Un kit de démarrage minimal pour les abonnements construit avec Next.js, Supabase et Dodo Payments. Ce modèle d’application vous aide à configurer rapidement un SaaS basé sur les abonnements avec authentification, paiements et webhooks.
Dodo Payments Supabase Subscription Starter

Configuration rapide

1. Prérequis

2. Authentifier et lier

Obtenez votre référence de projet depuis le tableau de bord Supabase → Paramètres du projet

3. Configuration de la base de données

  1. Accédez à votre tableau de bord Supabase
  2. Ouvrez l’éditeur SQL
  3. Créez une nouvelle requête
  4. Copiez et collez l’intégralité du contenu de schema.sql
  5. Exécutez la requête

4. Définir les secrets initiaux

Supabase fournit automatiquement SUPABASE_URL et SUPABASE_SERVICE_ROLE_KEY à l’exécution.
Remarque : Nous configurerons DODO_PAYMENTS_WEBHOOK_KEY après le déploiement, une fois que vous aurez votre URL de webhook.

5. Déployer

La fonction est déjà configurée dans functions/webhook/index.ts - il vous suffit de la 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 à DodoPayments Dashboard → Developer → Webhooks
  2. Créez un nouvel endpoint de webhook
  3. Configurez votre URL de webhook en tant qu’endpoint
  4. Activez ces événements d’abonnement :
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copiez le Secret de signature

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

Ce que cela fait

Traite les événements d’abonnement et les stocke dans Supabase 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 le traitement en double avec les IDs 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 démontre la gestion de trois événements d’abonnement principaux (subscription.active, subscription.cancelled, subscription.renewed) avec un nombre minimal de champs. Vous pouvez facilement l’étendre pour prendre en charge d’autres types d’événements et champs en fonction de 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

La fonction Edge basée sur Deno :
  1. Vérifie la signature - Utilise la bibliothèque dodopayments pour la vérification HMAC-SHA256
  2. Vérifie l’idempotence - Recherche l’ID du webhook pour éviter les traitements en double
  3. Journalise 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 l’événement pour un nouvel essai

Test

Développement local :
Le drapeau --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.
Voir les journaux :
Ou dans le tableau de bord Supabase → Fonctions Edge → webhook → onglet Journaux Configurer dans le tableau de bord DodoPayments :
  1. Allez sur Développeurs → Webhooks
  2. Ajoutez un point de terminaison avec votre URL Supabase
  3. Activez : subscription.active, subscription.cancelled, subscription.renewed

Problèmes courants

Ressources

Dernière modification le 22 mai 2026