GitHub Repository
Fullständig källkod och installationsguide
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
3. Databasinställningar
- Gå till Supabase-dashboarden.
- Öppna SQL Editor.
- Kopiera hela innehållet i
schema.sqloch kör det.
4. Ange initiala hemligheter
Supabase tillhandahåller automatisktSUPABASE_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 ifunctions/webhook/index.ts.
6. Hämta din webhook-URL
Din webhook-URL är:7. Registrera webhook i DodoPayments-dashboarden
- 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. 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 prenumerationspostersubscription.cancelled— Markerar prenumerationen som avslutadsubscription.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_eventsfö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
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 idempotens
Implementeringskod
Så fungerar det
Den Deno-baserade Edge Function:- Verifierar signaturen — Använder Dodo Payments SDK för HMAC-SHA256-verifiering
- Kontrollerar dubbletter — Använder
webhook-id-headern för att förhindra duplicerad bearbetning - Loggar händelsen — Lagrar rå webhook-data i tabellen
webhook_events - Bearbetar uppdateringar — Skapar eller uppdaterar kunder och prenumerationer via Supabase-klienten
- 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.- Gå till Developer → Webhooks.
- Lägg till en endpoint med din Supabase-URL.
- Välj
subscription.active,subscription.cancelledochsubscription.renewed.