Hoppa till huvudinnehåll

GitHub Repository

Komplett källkod och installationsguide

Snabb installation

1. Förutsättningar

2. Installera beroenden

3. Databasinställning

  1. Registrera dig på Neon
  2. Skapa ett nytt projekt
  3. Öppna SQL-redigeraren
  4. Kopiera och klistra in innehållet i schema.sql
  5. Kör frågan
  6. Hämta din anslutningssträng från Neon → Connection Details

4. Ställ in initiala miljövariabler

Via Vercel CLI:
Obs: Vi kommer att ange DODO_PAYMENTS_WEBHOOK_KEY efter distribution 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

  1. Gå till DodoPayments Dashboard → Developer → Webhooks
  2. Skapa en ny webhook-slutpunkt
  3. Konfigurera din webhook-URL som slutpunkt
  4. Aktivera dessa prenumerationshändelser:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Kopiera Signing Secret

8. Ställ in webhook-nyckel och distribuera på nytt

Vad det gör

Behandlar prenumerationsevenemang och lagrar dem i PostgreSQL:
  • subscription.active - Skapar/uppdaterar kund- och prenumerationsposter
  • subscription.cancelled - Markerar prenumerationen som avbruten
  • subscription.renewed - Uppdaterar nästa faktureringsdatum

Nyckelfunktioner

Signature verification - Använder biblioteket dodopayments ✅ Idempotency - Förhindrar dubbelexekvering med webhook-ID:n ✅ Event logging - Fullständig revisionskedja i webhook_events-tabellen ✅ Error handling - Loggas och kan försöka igen
Obs: Denna implementation visar hantering av tre kärnpprenumerationshändelser (subscription.active, subscription.cancelled, subscription.renewed) med minimala fält. Du kan enkelt utöka den för att stödja fler händelsetyper och fält utifrån dina behov.

Konfigurationsfiler

Databasstruktur

Skapade tabeller:
  • customers - E-post, namn, dodo_customer_id
  • subscriptions - Status, belopp, next_billing_date, kopplad till kunder
  • webhook_events - Händelselogg med webhook_id för idempotens

Implementeringskod

Hur det fungerar

Webhook-hanteraren:
  1. Inaktiverar kroppstolkning - För att få åtkomst till rå kroppen vid signaturverifiering
  2. Verifierar signaturen - Säkerställer att begäran kommer från DodoPayments med HMAC-SHA256
  3. Kontrollerar dubbletter - Använder webhook-ID för att förhindra att samma händelse behandlas två gånger
  4. Loggar händelsen - Sparar rå webhook i webhook_events-tabellen för revisionskedjan
  5. Bearbetar händelsen - Skapar eller uppdaterar kunder och prenumerationer i Neon
  6. Hanterar fel - Loggar fel och markerar händelsen som obehandlad för omförsök

Testning

Lokal utveckling:
Visa loggar i Vercel Dashboard:
  1. Välj ditt projekt
  2. Gå till Distributioner → senaste distribution
  3. Klicka på FunktionerLoggar
Konfigurera i DodoPayments Dashboard:
  1. Gå till Utvecklare → Webhooks
  2. Lägg till endpoint med din Vercel Functions-URL
  3. Aktivera: subscription.active, subscription.cancelled, subscription.renewed

Vanliga problem

Resurser

Senast ändrad 22 maj 2026