Hoppa till huvudinnehåll

GitHub Repository

Fullständig källkod och installationsguide
Kolla in det kompletta startpaketet för supabase
Ett minimalt prenumerationsstartpaket byggt med Next.js, Supabase och Dodo Payments. Denna mall hjälper dig att snabbt konfigurera en prenumerationsbaserad SaaS med autentisering, betalningar och webhooks.
Dodo Payments Supabase Subscription Starter

Snabb installation

1. Förutsättningar

2. Autentisera & Länka

Hämta din projektreferens från Supabase Dashboard → Projektinställningar

3. Databasinställning

  1. Gå till din Supabase Dashboard
  2. Öppna SQL-redigeraren
  3. Skapa en ny fråga
  4. Kopiera och klistra in hela innehållet från schema.sql
  5. Kör frågan

4. Ställ in initiala hemligheter

Supabase tillhandahåller automatiskt SUPABASE_URL och SUPABASE_SERVICE_ROLE_KEY vid körtid.
Obs: Vi ställer in DODO_PAYMENTS_WEBHOOK_KEY efter distribution när du har din webhook-URL.

5. Distribuera

Funktionen är redan konfigurerad i functions/webhook/index.ts - distribuera den bara:

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 slutpunkten
  4. Aktivera dessa prenumerationshändelser:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Kopiera Signing Secret

8. Ställ in Webhook-nyckel & Återdistribuera

Vad det gör

Behandlar abonnemangshändelser och lagrar dem i Supabase PostgreSQL:
  • subscription.active - Skapar/uppdaterar kund- och abonnemangsregister
  • subscription.cancelled - Markerar abonnemanget som avbrutet
  • subscription.renewed - Uppdaterar nästa faktureringsdatum

Nyckelfunktioner

Signeringsverifiering - Använder dodopayments-biblioteket
Idempotens - Förhindrar dubbel bearbetning med webhook-ID:n
Händelselogging - Fullständig revisionsspårning i webhook_events-tabellen
Felhantering - Loggas och kan försöka igen
Obs: Denna implementation visar hur man hanterar tre kärnhändelser för prenumerationer (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 baserat på 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

Den Deno-baserade Edge-funktionen:
  1. Verifierar signatur - Använder dodopayments-biblioteket för HMAC-SHA256-verifiering
  2. Kontrollerar idempotens - Söker upp webhook-ID för att förhindra dubbel bearbetning
  3. Loggar händelsen - Sparar rå webhook-data i webhook_events-tabellen
  4. Behandlar uppdateringar - Skapar eller uppdaterar kunder och prenumerationer via Supabase-klienten
  5. Hanterar fel - Loggar fel och markerar händelsen för nytt försök

Testning

Lokal utveckling:
--no-verify-jwt-flaggan krävs eftersom webhooks inte inkluderar JWT-token. Säkerheten tillhandahålls av verifiering av webhook-signatur.
Visa loggar:
Eller i Supabase Dashboard → Edge Functions → webhook → Loggar-flik Konfigurera i DodoPayments Dashboard:
  1. Gå till Utvecklare → Webhooks
  2. Lägg till endpoint med din Supabase-URL
  3. Aktivera: subscription.active, subscription.cancelled, subscription.renewed

Vanliga problem

Resurser

Senast ändrad 22 maj 2026