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
- Melden Sie sich bei Neon an
- Erstellen Sie ein neues Projekt
- Öffnen Sie den SQL-Editor
- Kopieren Sie den Inhalt von
schema.sql - Führen Sie die Abfrage aus
- Holen Sie sich Ihre Verbindungszeichenfolge von Neon → Verbindungsdetails
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 zu DodoPayments Dashboard → Entwickler → 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
✅ Signaturverifizierung - Mit der dodopayments-Bibliothek✅ Idempotenz - Verhindert doppelte Verarbeitung mit Webhook-IDs
✅ Ereignisprotokollierung - Vollständige Prüfspur in
webhook_events Tabelle✅ Fehlerbehandlung - Protokolliert und wiederholbar
Hinweis: Diese Implementierung demonstriert die Verarbeitung von drei Kern-Abonnementereignissen (subscription.active,subscription.cancelled,subscription.renewed) mit minimalen Feldern. Sie können sie leicht erweitern, um zusätzliche Ereignistypen und Felder basierend auf 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-Analyse - Um auf den Rohkörper für die Signaturverifizierung zuzugreifen
- Verifiziert die Signatur - Stellt sicher, dass die Anfrage von DodoPayments stammt, unter Verwendung von HMAC-SHA256
- Überprüft auf Duplikate - Verwendet die Webhook-ID, um die Verarbeitung desselben Ereignisses zweimal zu verhindern
- Protokolliert das Ereignis - Speichert den Roh-Webhook in
webhook_eventsTabelle für die Prüfspur - Verarbeitet das Ereignis - Erstellt oder aktualisiert Kunden und Abonnements in Neon
- Behandelt Fehler - Protokolliert Fehler und markiert das Ereignis als nicht verarbeitet für einen erneuten Versuch
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 |