GitHub Repository
Vollständiger Quellcode und Einrichtungsanleitung
Schnelle Einrichtung
1. Voraussetzungen
- Vercel-Konto
- Neon-Datenbank Konto
- DodoPayments API-Schlüssel aus dem Dashboard
2. Abhängigkeiten installieren
3. Datenbankeinrichtung
- Registrieren Sie sich bei Neon
- Erstellen Sie ein neues Projekt
- Öffnen Sie den SQL-Editor
- Kopieren und fügen Sie den Inhalt von
schema.sqlein - Führen Sie die Abfrage aus
- Rufen Sie Ihre Verbindungszeichenfolge bei Neon → Connection Details ab
4. Setzen Sie die anfänglichen Umgebungsvariablen
Über Vercel CLI:
Hinweis: Wir setzen DODO_PAYMENTS_WEBHOOK_KEY nach der Bereitstellung, sobald Sie Ihre Webhook-URL haben.
5. Bereitstellen
6. Holen Sie sich Ihre Webhook-URL
Ihre Webhook-URL ist:7. Webhook im DodoPayments-Dashboard registrieren
- Gehen Sie zum DodoPayments Dashboard → Developer → Webhooks
- Erstellen Sie einen neuen Webhook-Endpunkt
- Konfigurieren Sie Ihre Webhook-URL als Endpunkt
- Aktivieren Sie diese Abonnementereignisse:
subscription.activesubscription.cancelledsubscription.renewed
- Kopieren Sie das Signing Secret
8. Webhook-Schlüssel setzen & 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
✅ Signaturüberprüfung - Verwendung der dodopayments-Bibliothek✅ Idempotenz - Verhindert doppelte Verarbeitung mit Webhook-IDs
✅ Ereignisprotokollierung - Vollständiger Audit-Trail in der Tabelle
webhook_events✅ Fehlerbehandlung - Protokolliert und erneut ausführbar
Hinweis: Diese Implementierung zeigt die Verarbeitung von drei zentralen Abonnementereignissen (subscription.active,subscription.cancelled,subscription.renewed) mit minimalen Feldern. Sie können sie problemlos erweitern, um weitere Ereignistypen und Felder je nach Ihren 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:- Deaktiviert die Body-Verarbeitung - Damit auf den Roh-Body zur Signaturprüfung zugegriffen werden kann
- Überprüft die Signatur - Stellt sicher, dass die Anfrage von DodoPayments stammt, indem HMAC-SHA256 verwendet wird
- Prüft auf Duplikate - Nutzt die Webhook-ID, um die doppelte Verarbeitung desselben Ereignisses zu verhindern
- Protokolliert das Ereignis - Speichert den Roh-Webhook in der Tabelle
webhook_eventsfür den Audit-Trail - Verarbeitet das Ereignis - Erstellt oder aktualisiert Kunden und Abonnements in Neon
- Behandelt Fehler - Protokolliert Fehler und markiert das Ereignis als nicht verarbeitet zur Wiederholung
Testen
Lokale Entwicklung:- Wählen Sie Ihr Projekt aus
- Gehen Sie zu Bereitstellungen → letzte Bereitstellung
- Klicken Sie auf Funktionen → Protokolle
- Gehen Sie zu Entwicklern → Webhooks
- Fügen Sie den Endpunkt mit Ihrer Vercel Functions-URL hinzu
- Aktivieren: subscription.active, subscription.cancelled, subscription.renewed
Häufige Probleme
| Problem | Lösung |
|---|---|
| Verifizierung fehlgeschlagen | Überprüfen Sie, ob der Webhook-Schlüssel im DodoPayments-Dashboard korrekt ist |
| Datenbankverbindungsfehler | Überprüfen Sie die Neon-Verbindungszeichenfolge und verwenden Sie eine gepoolte Verbindung |
| Funktionszeitüberschreitung | Optimieren Sie Abfragen; Pro-Plan hat längere Zeitüberschreitung (60s) |
| Umgebungsvariablen nicht verfügbar | Im Dashboard oder CLI setzen, sicherstellen, dass alle Umgebungen ausgewählt sind, erneut bereitstellen |