GitHub Repository
Vollständiger Quellcode und Einrichtungsanleitung
Schnelle Einrichtung
1. Voraussetzungen
Sie benötigen:- Ein Vercel-Konto
- Ein Neon-Datenbankkonto
- Einen Dodo Payments API-Schlüssel unter Developer → API Keys im Dashboard
2. Abhängigkeiten installieren
3. Datenbank einrichten
- Registrieren Sie sich bei Neon und erstellen Sie ein Projekt.
- Öffnen Sie den SQL Editor.
- Kopieren Sie den gesamten Inhalt von
schema.sqlund führen Sie ihn aus. - Kopieren Sie Ihre Connection String aus Connection Details.
4. Initiale Umgebungsvariablen festlegen
Sie legen
DODO_PAYMENTS_WEBHOOK_KEY nach dem Deployment fest, 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 im Dodo Payments Dashboard zu Developer → Webhooks.
- Klicken Sie auf Add endpoint.
- Geben Sie Ihre webhook URL ein.
- Wählen Sie diese Events aus:
subscription.active,subscription.cancelled,subscription.renewed. - Klicken Sie auf Create endpoint und kopieren Sie das Signing Secret.
8. Webhook-Schlüssel setzen & erneut bereitstellen
Was es tut
Der webhook Handler verarbeitet Subscription-Events und speichert sie in PostgreSQL:subscription.active— Erstellt Kunden- oder Subscription-Datensätze bzw. aktualisiert diesesubscription.cancelled— Markiert die Subscription als gekündigtsubscription.renewed— Aktualisiert das nächste Abrechnungsdatum
Hauptmerkmale
- Signaturprüfung — Verwendet das Dodo Payments SDK, um die Authentizität des Webhooks zu überprüfen
- Idempotenz — Verwendet den
webhook-id-Header, um eine doppelte Verarbeitung zu verhindern - Event-Protokollierung — Speichert alle Events in der Tabelle
webhook_eventszur Nachverfolgung - Fehlerbehandlung — Protokolliert Fehler und markiert Events für einen erneuten Versuch
Dieses Beispiel verarbeitet drei zentrale Subscription-Events mit minimalen Feldern. Sie können es entsprechend Ihren Anforderungen erweitern, um zusätzliche Event-Typen und Felder zu unterstützen.
Konfigurationsdateien
Datenbankschema
customers— E-Mail-Adresse, Name und Dodo Payments Customer IDsubscriptions— Status, Betrag, nächstes Abrechnungsdatum, mit Kunden verknüpftwebhook_events— Event-Protokoll mit webhook ID für Idempotenz
Implementierungscode
So funktioniert es
Der webhook Handler:- Deaktiviert das Body-Parsing — Um auf den Raw Body für die Signaturprüfung zuzugreifen
- Überprüft die Signatur — Verwendet das Dodo Payments SDK, um die Anfrage mit HMAC-SHA256 zu überprüfen
- Prüft auf Duplikate — Verwendet den
webhook-id-Header, um die Verarbeitung desselben Events zweimal zu verhindern - Protokolliert das Event — Speichert den Raw Webhook in der Tabelle
webhook_eventszur Nachverfolgung - Verarbeitet das Event — Erstellt Kunden und Subscriptions in Neon oder aktualisiert diese
- Behandelt Fehler — Protokolliert Fehler und markiert Events als unverarbeitet, damit sie erneut versucht werden können
Testen
Lokale Entwicklung:- Wählen Sie Ihr Projekt aus.
- Gehen Sie zu Deployments → neuestes Deployment.
- Klicken Sie auf Functions → Logs.
- Gehen Sie zu Developer → Webhooks.
- Fügen Sie einen Endpoint mit Ihrer Vercel Functions URL hinzu.
- Wählen Sie
subscription.active,subscription.cancelledundsubscription.renewedaus.