Skip to main content

GitHub Repository

Fullständig källkod och installationsguide
Läs mer om Dodo Payments Supabase Subscription Starter — en komplett Next.js-, Supabase- och Dodo Payments-boilerplate med autentisering, betalningar och webhooks.

Snabb installation

1. Förutsättningar

Du behöver:
  • Ett Supabase-konto med ett skapat projekt
  • En Dodo Payments API-nyckel från Developer → API Keys i dashboarden

2. Autentisera och länka

Hitta din projektreferens under Project Settings i Supabase-dashboarden.

3. Databasinställningar

  1. Gå till Supabase-dashboarden.
  2. Öppna SQL Editor.
  3. Kopiera hela innehållet i schema.sql och kör det.

4. Ange initiala hemligheter

Supabase tillhandahåller automatiskt SUPABASE_URL och SUPABASE_SERVICE_ROLE_KEY vid körning.
Du anger DODO_PAYMENTS_WEBHOOK_KEY efter distributionen, när du har din webhook-URL.

5. Distribuera

Funktionen är redan konfigurerad i functions/webhook/index.ts.

6. Hämta din webhook-URL

Din webhook-URL är:

7. Registrera webhook i DodoPayments-dashboarden

  1. Gå till Developer → Webhooks i Dodo Payments-dashboarden.
  2. Klicka på Add endpoint.
  3. Ange din webhook-URL.
  4. Välj dessa händelser: subscription.active, subscription.cancelled, subscription.renewed.
  5. Klicka på Create endpoint och kopiera signeringshemligheten.

8. Ange webhook-nyckeln och distribuera igen

Vad den gör

Webhook-hanteraren bearbetar prenumerationshändelser och lagrar dem i Supabase PostgreSQL:
  • subscription.active — Skapar eller uppdaterar kund- och prenumerationsposter
  • subscription.cancelled — Markerar prenumerationen som avslutad
  • subscription.renewed — Uppdaterar nästa faktureringsdatum

Viktiga funktioner

  • Signaturverifiering — Använder Dodo Payments SDK för att verifiera webhookens äkthet
  • Idempotens — Använder webhook-id-headern för att förhindra duplicerad bearbetning
  • Händelseloggning — Lagrar alla händelser i tabellen webhook_events för revisionsspår
  • Felhantering — Loggar fel och markerar händelser för nytt försök
Det här exemplet hanterar tre centrala prenumerationshändelser med minimala fält. Du kan utöka det för att stödja ytterligare händelsetyper och fält utifrån dina behov.

Konfigurationsfiler

Databasschema

Skapade tabeller:
  • customers — E-postadress, namn och Dodo Payments-kund-ID
  • subscriptions — Status, belopp, nästa faktureringsdatum, kopplad till kunder
  • webhook_events — Händelselogg med webhook-ID för idempotens

Implementeringskod

Så fungerar det

Den Deno-baserade Edge Function:
  1. Verifierar signaturen — Använder Dodo Payments SDK för HMAC-SHA256-verifiering
  2. Kontrollerar dubbletter — Använder webhook-id-headern för att förhindra duplicerad bearbetning
  3. Loggar händelsen — Lagrar rå webhook-data i tabellen webhook_events
  4. Bearbetar uppdateringar — Skapar eller uppdaterar kunder och prenumerationer via Supabase-klienten
  5. Hanterar fel — Loggar fel och markerar händelser för nytt försök

Testning

Lokal utveckling:
--no-verify-jwt-flaggan krävs eftersom webhooks inte innehåller JWT-token. Säkerheten tillhandahålls av webhook-signaturverifiering.
Visa loggar:
Eller i Supabase-dashboarden under Edge Functions → webhook → Logs. Konfigurera i Dodo Payments-dashboarden:
  1. Gå till Developer → Webhooks.
  2. Lägg till en endpoint med din Supabase-URL.
  3. Välj subscription.active, subscription.cancelled och subscription.renewed.

Vanliga problem

Resurser

Senast ändrad 26 september 2026