Vai al contenuto principale

GitHub Repository

Complete source code and setup guide
Checkout the complete starter kit for supabase
A minimal subscription starter kit built with Next.js, Supabase, and Dodo Payments. This boilerplate helps you quickly set up a subscription-based SaaS with authentication, payments, and webhooks.
Dodo Payments Supabase Subscription Starter

Configurazione Rapida

1. Requisiti

2. Autenticazione e Collegamento

Ottieni il tuo riferimento progetto da Supabase Dashboard → Impostazioni progetto

3. Configurazione del Database

  1. Vai al tuo Supabase Dashboard
  2. Apri l’Editor SQL
  3. Crea una nuova query
  4. Copia e incolla l’intero contenuto di schema.sql
  5. Esegui la query

4. Imposta i Segreti Iniziali

Supabase fornisce automaticamente SUPABASE_URL e SUPABASE_SERVICE_ROLE_KEY durante l’esecuzione.
Nota: Imposteremo DODO_PAYMENTS_WEBHOOK_KEY dopo il deployment una volta che avrai il tuo URL di webhook.

5. Distribuisci

La funzione è già configurata in functions/webhook/index.ts - basta distribuirla:

6. Ottieni il Tuo URL Webhook

Il tuo URL webhook è:

7. Registra il Webhook nel Dashboard di DodoPayments

  1. Vai alla DodoPayments Dashboard → Developer → Webhooks
  2. Crea un nuovo endpoint webhook
  3. Configura il tuo URL webhook come endpoint
  4. Abilita questi eventi di sottoscrizione:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copia il Signing Secret

8. Imposta la Chiave Webhook e Ridistribuisci

Cosa Fa

Elabora eventi di abbonamento e li memorizza in Supabase PostgreSQL:
  • subscription.active - Crea/aggiorna record di clienti e abbonamenti
  • subscription.cancelled - Segna l’abbonamento come annullato
  • subscription.renewed - Aggiorna la data di fatturazione successiva

Caratteristiche Principali

Verifica della firma - Utilizza la libreria dodopayments
Idempotenza - Previene l’elaborazione duplicata con gli ID dei webhook
Logging degli eventi - Traccia di controllo completa nella tabella webhook_events
Gestione degli errori - Registrati e ritentabili
Nota: Questa implementazione dimostra la gestione di tre eventi di sottoscrizione principali (subscription.active, subscription.cancelled, subscription.renewed) con campi minimi. Puoi facilmente estenderla per supportare ulteriori tipi di eventi e campi in base alle tue esigenze.

File di Configurazione

Schema del Database

Tabelle create:
  • customers - Email, nome, dodo_customer_id
  • subscriptions - Stato, importo, next_billing_date, collegato ai clienti
  • webhook_events - Registro eventi con webhook_id per idempotenza

Codice di Implementazione

Come Funziona

La funzione Edge basata su Deno:
  1. Verifica la firma - Utilizza la libreria dodopayments per la verifica HMAC-SHA256
  2. Controlla l’idempotenza - Verifica l’ID del webhook per evitare elaborazioni duplicate
  3. Registra l’evento - Memorizza i dati grezzi del webhook nella tabella webhook_events
  4. Elabora gli aggiornamenti - Crea o aggiorna clienti e sottoscrizioni tramite il client Supabase
  5. Gestisce gli errori - Registra i fallimenti e segnala l’evento per un ritentativo

Testing

Sviluppo locale:
Il flag --no-verify-jwt è richiesto perché i webhook non includono token JWT. La sicurezza è fornita dalla verifica della firma del webhook.
Visualizza i log:
Oppure nel Supabase Dashboard → Funzioni Edge → webhook → scheda Log Configura nel Dashboard di DodoPayments:
  1. Vai a Sviluppatori → Webhook
  2. Aggiungi endpoint con il tuo URL Supabase
  3. Abilita: subscription.active, subscription.cancelled, subscription.renewed

Problemi Comuni

Risorse

Ultima modifica il 22 maggio 2026