Skip to main content

GitHub Repository

Complete source code and setup guide
Scopri Dodo Payments Supabase Subscription Starter — un boilerplate completo per Next.js, Supabase e Dodo Payments con autenticazione, pagamenti e webhook.

Configurazione Rapida

1. Prerequisiti

Ti servono:
  • Un account Supabase con un progetto creato
  • Una chiave API di Dodo Payments disponibile in Developer → API Keys nella dashboard

2. Autenticazione e collegamento

Trova il riferimento del progetto in Project Settings nella dashboard di Supabase.

3. Configurazione del database

  1. Vai alla dashboard di Supabase.
  2. Apri l’SQL Editor.
  3. Copia l’intero contenuto di schema.sql ed eseguilo.

4. Impostazione dei secret iniziali

Supabase fornisce automaticamente SUPABASE_URL e SUPABASE_SERVICE_ROLE_KEY in fase di esecuzione.
Imposterai DODO_PAYMENTS_WEBHOOK_KEY dopo il deployment, una volta ottenuto l’URL del webhook.

5. Deployment

La funzione è già configurata in functions/webhook/index.ts.

6. Ottenere l’URL del webhook

L’URL del webhook è:

7. Registrazione del webhook nella dashboard di DodoPayments

  1. Vai a Developer → Webhooks nella dashboard di Dodo Payments.
  2. Fai clic su Add endpoint.
  3. Inserisci l’URL del webhook.
  4. Seleziona questi eventi: subscription.active, subscription.cancelled, subscription.renewed.
  5. Fai clic su Create endpoint e copia il signing secret.

8. Impostazione della chiave del webhook e nuovo deployment

Cosa fa

Il gestore dei webhook elabora gli eventi delle subscription e li archivia in Supabase PostgreSQL:
  • subscription.active — Crea o aggiorna i record dei clienti e delle subscription
  • subscription.cancelled — Contrassegna la subscription come annullata
  • subscription.renewed — Aggiorna la data della prossima fatturazione

Funzionalità principali

  • Verifica della firma — Utilizza l’SDK di Dodo Payments per verificare l’autenticità del webhook
  • Idempotenza — Utilizza l’header webhook-id per impedire l’elaborazione duplicata
  • Registrazione degli eventi — Archivia tutti gli eventi nella tabella webhook_events per mantenere una traccia di audit
  • Gestione degli errori — Registra gli errori e contrassegna gli eventi per un nuovo tentativo
Questo esempio gestisce tre eventi principali delle subscription con un numero minimo di campi. Puoi estenderlo per supportare ulteriori tipi di evento e campi in base alle tue esigenze.

File di configurazione

Schema del database

Tabelle create:
  • customers — Email, nome e ID cliente Dodo Payments
  • subscriptions — Stato, importo, data della prossima fatturazione, collegata ai clienti
  • webhook_events — Registro degli eventi con l’ID del webhook per l’idempotenza

Codice di implementazione

Come funziona

La Edge Function basata su Deno:
  1. Verifica la firma — Utilizza l’SDK di Dodo Payments per la verifica HMAC-SHA256
  2. Controlla i duplicati — Utilizza l’header webhook-id per impedire l’elaborazione duplicata
  3. Registra l’evento — Archivia i dati grezzi del webhook nella tabella webhook_events
  4. Elabora gli aggiornamenti — Crea o aggiorna clienti e subscription tramite il client Supabase
  5. Gestisce gli errori — Registra gli errori e contrassegna gli eventi per un nuovo tentativo

Test

Sviluppo locale:
Il flag --no-verify-jwt è obbligatorio perché i webhook non includono token JWT. La sicurezza è garantita dalla verifica della firma del webhook.
Visualizzazione dei log:
Oppure nella dashboard di Supabase, in Edge Functions → webhook → Logs. Configurazione nella dashboard di Dodo Payments:
  1. Vai a Developer → Webhooks.
  2. Aggiungi un endpoint con il tuo URL Supabase.
  3. Seleziona subscription.active, subscription.cancelled e subscription.renewed.

Problemi comuni

Risorse

Ultima modifica il 26 settembre 2026