GitHub Repository
Vollständiger Quellcode und Einrichtungsanleitung
Schnelle Einrichtung
1. Voraussetzungen
Sie benötigen:- Ein Netlify-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 Verbindungszeichenfolge aus Connection Details.
4. Initiale Environment Variables festlegen
Sie legen
DODO_PAYMENTS_WEBHOOK_KEY nach der Bereitstellung fest, sobald Sie Ihre Webhook-URL haben.5. Initialisieren und bereitstellen
6. Ihre Webhook-URL abrufen
Ihre Webhook-URL lautet: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 Ereignisse aus:
subscription.active,subscription.cancelled,subscription.renewed. - Klicken Sie auf Create endpoint und kopieren Sie das Signaturgeheimnis.
8. Webhook-Schlüssel festlegen und erneut bereitstellen
Funktionsweise
Der Webhook-Handler verarbeitet Subscription-Ereignisse und speichert sie in PostgreSQL:subscription.active— Erstellt Kunden- und Subscription-Datensätze oder aktualisiert siesubscription.cancelled— Markiert die Subscription als gekündigtsubscription.renewed— Aktualisiert das nächste Abrechnungsdatum
Hauptfunktionen
- Signaturüberprüfung — Verwendet das Dodo Payments SDK, um die Authentizität des Webhooks zu überprüfen
- Idempotenz — Verwendet den
webhook-id-Header, um doppelte Verarbeitung zu verhindern - Ereignisprotokollierung — Speichert alle Ereignisse zur Nachvollziehbarkeit in der Tabelle
webhook_events - Fehlerbehandlung — Protokolliert Fehler und markiert Ereignisse für einen erneuten Versuch
Dieses Beispiel verarbeitet drei zentrale Subscription-Ereignisse mit minimalen Feldern. Sie können es entsprechend Ihren Anforderungen erweitern, um zusätzliche Ereignistypen und Felder zu unterstützen.
Konfigurationsdateien
Datenbankschema
customers— E-Mail-Adresse, Name und Dodo Payments-Kunden-IDsubscriptions— Status, Betrag, nächstes Abrechnungsdatum, mit Kunden verknüpftwebhook_events— Ereignisprotokoll mit Webhook-ID für Idempotenz
Implementierungscode
Funktionsweise
Der Webhook-Handler:- Ü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 Ereignisses zweimal zu verhindern - Protokolliert das Ereignis — Speichert den rohen Webhook zur Nachvollziehbarkeit in der Tabelle
webhook_events - Verarbeitet das Ereignis — Erstellt Kunden und Subscriptions in Neon oder aktualisiert sie
- Behandelt Fehler — Protokolliert Fehler und markiert Ereignisse als nicht verarbeitet, damit sie erneut versucht werden können
Testen
Lokale Entwicklung:- Wählen Sie Ihre Site aus und gehen Sie zu Functions.
- Klicken Sie auf die Funktion
webhook. - Sehen Sie sich Echtzeit-Logs und den Aufrufverlauf an.
- Gehen Sie zu Developer → Webhooks.
- Fügen Sie einen Endpunkt mit Ihrer Netlify Functions-URL hinzu.
- Wählen Sie
subscription.active,subscription.cancelledundsubscription.renewedaus.