GitHub Repository
Vollständiger Quellcode und Installationsanleitung
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
3. Datenbank einrichten
- Öffnen Sie das Supabase-Dashboard.
- Öffnen Sie den SQL Editor.
- Kopieren Sie den gesamten Inhalt von
schema.sqlund führen Sie ihn aus.
4. Anfängliche Secrets festlegen
Supabase stelltSUPABASE_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 infunctions/webhook/index.ts eingerichtet.
6. Ihre Webhook-URL abrufen
Ihre Webhook-URL lautet:7. Webhook im DodoPayments-Dashboard registrieren
- Öffnen Sie Developer → Webhooks im Dodo Payments-Dashboard.
- Klicken Sie auf Add endpoint.
- Geben Sie Ihre Webhook-URL ein.
- Wählen Sie diese Ereignisse aus:
subscription.active,subscription.cancelled,subscription.renewed. - 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 siesubscription.cancelled– Markiert die Subscription als gekündigtsubscription.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_eventsfü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
customers– E-Mail-Adresse, Name und Dodo Payments-Kunden-IDsubscriptions– Status, Betrag, nächstes Abrechnungsdatum, mit Kunden verknüpftwebhook_events– Ereignisprotokoll mit Webhook-ID für Idempotenz
Implementierungscode
Funktionsweise
Die auf Deno basierende Edge Function:- Überprüft die Signatur – Verwendet das Dodo Payments SDK für die HMAC-SHA256-Überprüfung
- Prüft auf Duplikate – Verwendet den
webhook-id-Header, um doppelte Verarbeitung zu verhindern - Protokolliert das Ereignis – Speichert die unverarbeiteten Webhook-Daten in der Tabelle
webhook_events - Verarbeitet Aktualisierungen – Erstellt Kunden und Subscriptions oder aktualisiert sie über den Supabase-Client
- 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.- Öffnen Sie Developer → Webhooks.
- Fügen Sie einen Endpunkt mit Ihrer Supabase-URL hinzu.
- Wählen Sie
subscription.active,subscription.cancelledundsubscription.renewedaus.