Skip to main content

GitHub Repository

Vollständiger Quellcode und Installationsanleitung
Sehen Sie sich den Dodo Payments Supabase Subscription Starter an – ein vollständiges Next.js-, Supabase- und Dodo Payments-Boilerplate mit Authentifizierung, Zahlungen und Webhooks.

Schnelle Einrichtung

1. Voraussetzungen

Sie benötigen:
  • Ein Supabase-Konto mit einem erstellten Projekt
  • Einen Dodo Payments API-Schlüssel aus Developer → API Keys im Dashboard

2. Authentifizieren und verknüpfen

Ihre Projekt-Referenz finden Sie unter Project Settings im Supabase-Dashboard.

3. Datenbank einrichten

  1. Öffnen Sie das Supabase-Dashboard.
  2. Öffnen Sie den SQL Editor.
  3. Kopieren Sie den gesamten Inhalt von schema.sql und führen Sie ihn aus.

4. Anfängliche Secrets festlegen

Supabase stellt SUPABASE_URL und SUPABASE_SERVICE_ROLE_KEY automatisch zur Laufzeit bereit.
Sie legen DODO_PAYMENTS_WEBHOOK_KEY nach der Bereitstellung fest, sobald Sie Ihre Webhook-URL haben.

5. Bereitstellen

Die Funktion ist bereits in functions/webhook/index.ts eingerichtet.

6. Ihre Webhook-URL abrufen

Ihre Webhook-URL lautet:

7. Webhook im DodoPayments-Dashboard registrieren

  1. Öffnen Sie Developer → Webhooks im Dodo Payments-Dashboard.
  2. Klicken Sie auf Add endpoint.
  3. Geben Sie Ihre Webhook-URL ein.
  4. Wählen Sie diese Ereignisse aus: subscription.active, subscription.cancelled, subscription.renewed.
  5. Klicken Sie auf Create endpoint und kopieren Sie das Signaturgeheimnis.

8. Webhook-Schlüssel festlegen und erneut bereitstellen

Funktionsweise

Der Webhook-Handler verarbeitet Subscription-Ereignisse und speichert sie in Supabase PostgreSQL:
  • subscription.active – Erstellt Kunden- und Subscription-Datensätze oder aktualisiert sie
  • subscription.cancelled – Markiert die Subscription als gekündigt
  • subscription.renewed – Aktualisiert das nächste Abrechnungsdatum

Hauptfunktionen

  • Signaturüberprüfung – Verwendet das Dodo Payments SDK, um die Authentizität von Webhooks zu überprüfen
  • Idempotenz – Verwendet den webhook-id-Header, um doppelte Verarbeitung zu verhindern
  • Ereignisprotokollierung – Speichert alle Ereignisse in der Tabelle webhook_events für Prüfpfade
  • Fehlerbehandlung – Protokolliert Fehler und markiert Ereignisse für einen erneuten Versuch
Dieses Beispiel verarbeitet drei zentrale Subscription-Ereignisse mit minimalen Feldern. Sie können es entsprechend Ihren Anforderungen erweitern, um zusätzliche Ereignistypen und Felder zu unterstützen.

Konfigurationsdateien

Datenbankschema

Erstellte Tabellen:
  • customers – E-Mail-Adresse, Name und Dodo Payments-Kunden-ID
  • subscriptions – Status, Betrag, nächstes Abrechnungsdatum, mit Kunden verknüpft
  • webhook_events – Ereignisprotokoll mit Webhook-ID für Idempotenz

Implementierungscode

Funktionsweise

Die auf Deno basierende Edge Function:
  1. Überprüft die Signatur – Verwendet das Dodo Payments SDK für die HMAC-SHA256-Überprüfung
  2. Prüft auf Duplikate – Verwendet den webhook-id-Header, um doppelte Verarbeitung zu verhindern
  3. Protokolliert das Ereignis – Speichert die unverarbeiteten Webhook-Daten in der Tabelle webhook_events
  4. Verarbeitet Aktualisierungen – Erstellt Kunden und Subscriptions oder aktualisiert sie über den Supabase-Client
  5. Behandelt Fehler – Protokolliert Fehler und markiert Ereignisse für einen erneuten Versuch

Testen

Lokale Entwicklung:
Das --no-verify-jwt-Flag ist erforderlich, da Webhooks keine JWT-Tokens enthalten. Die Sicherheit wird durch die Webhook-Signaturüberprüfung gewährleistet.
Logs anzeigen:
Oder im Supabase-Dashboard unter Edge Functions → webhook → Logs. Im Dodo Payments-Dashboard konfigurieren:
  1. Öffnen Sie Developer → Webhooks.
  2. Fügen Sie einen Endpunkt mit Ihrer Supabase-URL hinzu.
  3. Wählen Sie subscription.active, subscription.cancelled und subscription.renewed aus.

Häufige Probleme

Ressourcen

Zuletzt geändert am 26. September 2026