GitHub Repository
Komplett källkod och installationsguide
Snabb installation
1. Förutsättningar
Du behöver:- Ett Vercel-konto
- Ett Neon-databaskonto
- En Dodo Payments API-nyckel från Developer → API Keys i dashboarden
2. Installera beroenden
3. Databasinställningar
- Registrera dig på Neon och skapa ett projekt.
- Öppna SQL Editor.
- Kopiera hela innehållet i
schema.sqloch kör det. - Kopiera din anslutningssträng från Connection Details.
4. Ange initiala miljövariabler
Du anger
DODO_PAYMENTS_WEBHOOK_KEY efter distributionen, när du har din webhook-URL.5. Distribuera
6. Hämta din webhook-URL
Din webhook-URL är:7. Registrera webhook i DodoPayments Dashboard
- Gå till Developer → Webhooks i Dodo Payments-dashboarden.
- Klicka på Add endpoint.
- Ange din webhook-URL.
- Välj dessa händelser:
subscription.active,subscription.cancelled,subscription.renewed. - Klicka på Create endpoint och kopiera signeringshemligheten.
8. Ställ in webhook-nyckel och distribuera på nytt
Vad det gör
Webhook-hanteraren bearbetar prenumerationshändelser och lagrar dem i PostgreSQL:subscription.active— Skapar eller uppdaterar kund- och prenumerationspostersubscription.cancelled— Markerar prenumerationen som avslutadsubscription.renewed— Uppdaterar nästa faktureringsdatum
Nyckelfunktioner
- Signaturverifiering — Använder Dodo Payments SDK för att verifiera webhookens äkthet
- Idempotency — Använder
webhook-id-headern för att förhindra duplicerad bearbetning - Händelseloggning — Lagrar alla händelser i tabellen
webhook_eventsför granskningsspår - Felhantering — Loggar fel och markerar händelser för nytt försök
Det här exemplet hanterar tre centrala prenumerationshändelser med ett minimalt antal fält. Du kan utöka det för att stödja ytterligare händelsetyper och fält utifrån dina behov.
Konfigurationsfiler
Databasstruktur
customers— E-postadress, namn och Dodo Payments-kund-IDsubscriptions— Status, belopp, nästa faktureringsdatum, kopplad till kunderwebhook_events— Händelselogg med webhook-ID för idempotency
Implementeringskod
Hur det fungerar
Webhook-hanteraren:- Inaktiverar body parsing — För att komma åt den råa body-datan för signaturverifiering
- Verifierar signaturen — Använder Dodo Payments SDK för att verifiera begäran med HMAC-SHA256
- Kontrollerar dubbletter — Använder
webhook-id-headern för att förhindra att samma händelse bearbetas två gånger - Loggar händelsen — Lagrar den råa webhooken i tabellen
webhook_eventsför granskningsspår - Bearbetar händelsen — Skapar eller uppdaterar kunder och prenumerationer i Neon
- Hanterar fel — Loggar fel och markerar händelser som obearbetade för nytt försök
Testning
Lokal utveckling:- Välj ditt projekt.
- Gå till Deployments → den senaste distributionen.
- Klicka på Functions → Logs.
- Gå till Developer → Webhooks.
- Lägg till en endpoint med URL:en till dina Vercel Functions.
- Välj
subscription.active,subscription.cancelledochsubscription.renewed.