GitHub Repository
Codice sorgente completo e guida all’installazione
Configurazione Rapida
1. Prerequisiti
Ti servono:- Un account Vercel
- Un account database Neon
- Una chiave API di Dodo Payments disponibile in Developer → API Keys nella dashboard
2. Installazione delle dipendenze
3. Configurazione del database
- Registrati su Neon e crea un progetto.
- Apri l’editor SQL.
- Copia l’intero contenuto di
schema.sqled eseguilo. - Copia la stringa di connessione da Connection Details.
4. Impostazione delle variabili d’ambiente iniziali
Imposterai
DODO_PAYMENTS_WEBHOOK_KEY dopo il deployment, una volta ottenuto l’URL del webhook.5. Distribuisci
6. Ottieni il Tuo URL del Webhook
Il tuo URL del webhook è:7. Registra il Webhook nel Dashboard di DodoPayments
- Vai su Developer → Webhooks nella dashboard di Dodo Payments.
- Fai clic su Add endpoint.
- Inserisci l’URL del webhook.
- Seleziona questi eventi:
subscription.active,subscription.cancelled,subscription.renewed. - Fai clic su Create endpoint e copia il signing secret.
8. Imposta la Chiave del Webhook e Ridistribuisci
Cosa Fa
L’handler del webhook elabora gli eventi delle subscription e li archivia in PostgreSQL:subscription.active— Crea o aggiorna i record del customer e della subscriptionsubscription.cancelled— Contrassegna la subscription come cancellatasubscription.renewed— Aggiorna la prossima data di fatturazione
Caratteristiche Principali
- Verifica della firma — Utilizza l’SDK di Dodo Payments per verificare l’autenticità del webhook
- Idempotenza — Utilizza l’header
webhook-idper impedire l’elaborazione duplicata - Logging degli eventi — Archivia tutti gli eventi nella tabella
webhook_eventsper finalità 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 set minimo di campi. Puoi estenderlo per supportare altri tipi di eventi e campi in base alle tue esigenze.
File di Configurazione
Schema del Database
customers— Email, nome e ID del customer Dodo Paymentssubscriptions— Stato, importo, prossima data di fatturazione, collegati ai customerwebhook_events— Registro degli eventi con webhook ID per l’idempotenza
Codice di Implementazione
Come Funziona
L’handler del webhook:- Disabilita il parsing del body — Per accedere al body raw necessario alla verifica della firma
- Verifica la firma — Utilizza l’SDK di Dodo Payments per verificare la richiesta con HMAC-SHA256
- Controlla i duplicati — Utilizza l’header
webhook-idper impedire di elaborare due volte lo stesso evento - Registra l’evento — Archivia il webhook raw nella tabella
webhook_eventsper finalità di audit - Elabora l’evento — Crea o aggiorna customer e subscription in Neon
- Gestisce gli errori — Registra gli errori e contrassegna gli eventi come non elaborati per un nuovo tentativo
Test
Sviluppo locale:- Seleziona il progetto.
- Vai su Deployments → deployment più recente.
- Fai clic su Functions → Logs.
- Vai su Developer → Webhooks.
- Aggiungi un endpoint con l’URL delle Vercel Functions.
- Seleziona
subscription.active,subscription.cancelledesubscription.renewed.