Skip to main content

GitHub Repository

Vollständiger Quellcode und Einrichtungsanleitung

Schnelle Einrichtung

1. Voraussetzungen

Sie benötigen:

2. Abhängigkeiten installieren

3. Datenbank einrichten

  1. Registrieren Sie sich bei Neon und erstellen Sie ein Projekt.
  2. Öffnen Sie den SQL Editor.
  3. Kopieren Sie den gesamten Inhalt von schema.sql und führen Sie ihn aus.
  4. 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

  1. Gehen Sie im Dodo Payments Dashboard zu Developer → Webhooks.
  2. Klicken Sie auf Add endpoint.
  3. Geben Sie Ihre webhook URL ein.
  4. Wählen Sie diese Events aus: subscription.active, subscription.cancelled, subscription.renewed.
  5. 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 diese
  • subscription.cancelled — Markiert die Subscription als gekündigt
  • subscription.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_events zur 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

Erstellte Tabellen:
  • customers — E-Mail-Adresse, Name und Dodo Payments Customer ID
  • subscriptions — Status, Betrag, nächstes Abrechnungsdatum, mit Kunden verknüpft
  • webhook_events — Event-Protokoll mit webhook ID für Idempotenz

Implementierungscode

So funktioniert es

Der webhook Handler:
  1. Deaktiviert das Body-Parsing — Um auf den Raw Body für die Signaturprüfung zuzugreifen
  2. Überprüft die Signatur — Verwendet das Dodo Payments SDK, um die Anfrage mit HMAC-SHA256 zu überprüfen
  3. Prüft auf Duplikate — Verwendet den webhook-id-Header, um die Verarbeitung desselben Events zweimal zu verhindern
  4. Protokolliert das Event — Speichert den Raw Webhook in der Tabelle webhook_events zur Nachverfolgung
  5. Verarbeitet das Event — Erstellt Kunden und Subscriptions in Neon oder aktualisiert diese
  6. Behandelt Fehler — Protokolliert Fehler und markiert Events als unverarbeitet, damit sie erneut versucht werden können

Testen

Lokale Entwicklung:
Logs im Vercel Dashboard anzeigen:
  1. Wählen Sie Ihr Projekt aus.
  2. Gehen Sie zu Deployments → neuestes Deployment.
  3. Klicken Sie auf Functions → Logs.
Im Dodo Payments Dashboard konfigurieren:
  1. Gehen Sie zu Developer → Webhooks.
  2. Fügen Sie einen Endpoint mit Ihrer Vercel Functions URL hinzu.
  3. Wählen Sie subscription.active, subscription.cancelled und subscription.renewed aus.

Häufige Probleme

Ressourcen

Zuletzt geändert am 26. September 2026