GitHub Repository
Vollständiger Quellcode und Einrichtungshandbuch
Schnelle Einrichtung
1. Voraussetzungen
- Cloudflare-Konto
- Neon-Datenbank Konto
- DodoPayments API-Schlüssel aus dem Dashboard
2. Abhängigkeiten installieren
3. Datenbankeinrichtung
- Melde dich bei Neon an
- Erstelle ein neues Projekt
- Öffne den SQL-Editor
- Kopiere und füge den Inhalt von
schema.sqlein - Führe die Abfrage aus
- Hole deine Verbindungszeichenfolge von Neon → Connection Details
4. Anfangsgeheimnisse konfigurieren
Hinweis: Wir setzen DODO_PAYMENTS_WEBHOOK_KEY nach der Bereitstellung, sobald du deine Webhook-URL hast.
5. wrangler.toml aktualisieren
Bearbeitewrangler.toml und setze deinen Worker-Namen:
6. Bereitstellen
7. Holen Sie sich Ihre Webhook-URL
Ihre Webhook-URL ist:8. Webhook im DodoPayments-Dashboard registrieren
- Gehe zu DodoPayments Dashboard → Developer → Webhooks
- Erstelle einen neuen Webhook-Endpunkt
- Konfiguriere deine Webhook-URL als Endpunkt
- Aktiviere diese Abonnement-Ereignisse:
subscription.activesubscription.cancelledsubscription.renewed
- Kopiere das Signing Secret
9. Webhook-Schlüssel festlegen & erneut bereitstellen
Was es tut
Verarbeitet Abonnementereignisse und speichert sie in PostgreSQL:- subscription.active - Erstellt/aktualisiert Kunden- und Abonnementdatensätze
- subscription.cancelled - Markiert das Abonnement als storniert
- subscription.renewed - Aktualisiert das nächste Abrechnungsdatum
Hauptmerkmale
✅ Signaturprüfung - Verwendung der dodopayments-Bibliothek✅ Idempotenz - Verhindert doppelte Verarbeitung mit Webhook-IDs
✅ Ereignisprotokollierung - Vollständige Prüfnachweis in
webhook_events Tabelle✅ Fehlerbehandlung - Protokolliert und erneut versuchbar
Hinweis: Diese Implementierung zeigt die Verarbeitung von drei Kern-Abonnement-Ereignissen (subscription.active,subscription.cancelled,subscription.renewed) mit minimalen Feldern. Du kannst sie einfach erweitern, um weitere Ereignistypen und Felder gemäß deinen Anforderungen zu unterstützen.
Konfigurationsdateien
Datenbankschema
- customers - E-Mail, Name, dodo_customer_id
- subscriptions - Status, Betrag, next_billing_date, verknüpft mit Kunden
- webhook_events - Ereignisprotokoll mit webhook_id für Idempotenz
Implementierungscode
So funktioniert es
Der Webhook-Handler:- Prüft die Signatur - Stellt sicher, dass die Anfrage von DodoPayments stammt, mithilfe von HMAC-SHA256
- Überprüft auf Duplikate - Verwendet die Webhook-ID, um die Verarbeitung desselben Ereignisses zweimal zu verhindern
- Protokolliert das Ereignis - Speichert den rohen Webhook in der
webhook_eventsTabelle für den Prüfnachweis - Verarbeitet das Ereignis - Erstellt oder aktualisiert Kunden und Abonnements
- Behandelt Fehler - Protokolliert Ausfälle und markiert das Ereignis als nicht verarbeitet für einen erneuten Versuch
Testen
Lokale Entwicklung:- Gehen Sie zu Entwicklern → Webhooks
- Fügen Sie einen Endpunkt mit Ihrer Worker-URL hinzu
- Aktivieren Sie: subscription.active, subscription.cancelled, subscription.renewed