GitHub Repository
Boilerplate minimale Go + Dodo Payments
Panoramica
Il boilerplate Go è un server Go minimale che vende i tuoi prodotti Dodo Payments da una pagina dei prezzi. Crea sessioni di checkout, verifica e gestisce i webhook e apre il Customer Portal. Clonalo come punto di partenza per il tuo backend Go.Il boilerplate richiede Go 1.24.4 o versioni successive, la versione impostata nel suo
go.mod. Utilizza un layout cmd, internal e templates, esegue il rendering della pagina dei prezzi con i template HTML di Go e chiama l’API Dodo Payments tramite l’SDK dodopayments-go.Caratteristiche
- Configurazione rapida: clona il repository, aggiungi le tue chiavi API a
.enve avvia il server conmake run. - Integrazione dei pagamenti: un flusso di checkout che crea sessioni di checkout con l’SDK
dodopayments-go. - UI moderna: una pagina dei prezzi a tema scuro realizzata con i template HTML di Go e Tailwind CSS.
- Gestione dei webhook: verifica la firma di ogni webhook prima di elaborare l’evento.
- Customer Portal: gestione self-service degli abbonamenti tramite il Customer Portal.
- Best practice Go: una struttura del progetto pulita con
cmd,internaletemplates. - Checkout precompilato: invia il nome e l’email del cliente al checkout, così il cliente non deve inserirli di nuovo.
Requisiti
Prima di iniziare, ti occorrono:- Go 1.24.4 o versioni successive. Controlla la tua versione con
go version. - Un account Dodo Payments, per creare una chiave API e una chiave di firma dei webhook nella dashboard.
- Almeno un prodotto, creato nella sezione Products della dashboard.
Avvio Rapido
1
Clone the Repository
2
Install Dependencies
make install esegue go mod download e poi go mod tidy. Per scaricare i moduli senza make, esegui:3
Get API Credentials
Registrati su Dodo Payments, quindi copia entrambe le chiavi dalla dashboard:
- Chiave API: Developer → API Keys
- Chiave webhook: Developer → Webhooks. Ogni endpoint webhook ha una propria chiave di firma. Per creare un endpoint che raggiunga il tuo server locale, consulta Testing Webhooks Locally.
4
Configure Environment Variables
Crea un file Imposta questi valori in Il server legge queste variabili all’avvio:
.env nella directory principale del progetto a partire dal template:.env:.env
Il server si arresta all’avvio se manca una delle due chiavi obbligatorie.
.env.example imposta PORT e DODO_PAYMENTS_RETURN_URL sulla porta 8080. Questa pagina utilizza la porta 8000, quindi imposta entrambe su 8000 come mostrato, oppure sostituisci 8000 con 8080 nei comandi di questa pagina.5
Add Your Products
Sostituisci il prodotto di esempio in
internal/lib/products.go con i tuoi prodotti. Copia l’ID di ogni prodotto dalla sezione Products della dashboard:Price imposta solo il prezzo visualizzato dalla pagina dei prezzi, nell’unità minima della valuta: 9999 viene visualizzato come $99.99. Checkout applica il prezzo del prodotto in Dodo Payments.6
Run the Development Server
make run compila il server in bin/server e lo avvia. Per eseguire il server senza compilare prima un binario, esegui:Vedrai una pagina dei prezzi a tema scuro che elenca i tuoi prodotti, pronta per gli acquisti.
Struttura del progetto
Il repository ha questa struttura:Endpoint API
Il boilerplate include i seguenti endpoint preconfigurati:Personalizzazione
Aggiornare le informazioni sui prodotti
Modificainternal/lib/products.go per cambiare:
- ID prodotto (dalla sezione Products della dashboard Dodo Payments)
- Nomi
- Prezzi visualizzati nella pagina dei prezzi
- Funzionalità
- Descrizioni
/mo a ogni prezzo e mostra Custom al posto del prezzo quando Price è pari o superiore a 100000. Per modificare questo comportamento, modifica templates/index.html.
Precompilare i dati del cliente
In.env, la funzione handleCheckout invia dati cliente codificati direttamente a /api/checkout. Sostituiscili con i dati dell’utente autenticato:
handlePortal riutilizza questi dati cliente e ricorre allo stesso nome e alla stessa email di esempio. In un’app di produzione, inserisci questi valori dal tuo sistema di autenticazione in entrambe le funzioni.
Eventi webhook
internal/api/webhook.go verifica ogni richiesta con client.Webhooks.Unwrap e la chiave in DODO_PAYMENTS_WEBHOOK_KEY, quindi instrada l’evento in base al suo type. Questi eventi hanno un handler e ogni handler registra i dati dell’evento:
L’handler accetta anche
subscription.on_hold, subscription.failed, subscription.expired e subscription.plan_changed senza eseguire alcuna azione e registra ogni altro tipo di evento come non gestito. Risponde con 200 a ogni evento verificato. Per tutti i tipi di evento, consulta la Guida agli eventi webhook.
Aggiungi la tua logica di business alle funzioni handler per:
- Aggiornare le autorizzazioni degli utenti nel database
- Inviare email di conferma
- Provisionare l’accesso ai prodotti digitali
- Monitorare analisi e metriche
Testare i webhook in locale
Dodo Payments non può raggiungerelocalhost. Per ricevere webhook durante lo sviluppo, esponi il tuo server locale con un tunnel come ngrok:
/api/webhook:
DODO_PAYMENTS_WEBHOOK_KEY, quindi riavvia il server.
Deployment
Compilare per la produzione
make build compila il server in bin/server:
make, esegui:
Eseguire il deployment su Vercel
[.env alle impostazioni del progetto Vercel, perché .env non si trova nel repository. Quindi imposta l’endpoint webhook nella dashboard su https://yourdomain.com/api/webhook.
Docker
Crea unDockerfile nella directory principale del progetto. La fase di build deve utilizzare Go 1.24.4 o versioni successive, in linea con go.mod:
templates/ accanto al binario, perché il server carica i template dalla directory di lavoro. Compila ed esegui l’immagine:
PORT di .env, quindi mantieni PORT=8000 in modo che corrisponda alla mappatura delle porte.
Considerazioni per la produzione
Risoluzione dei problemi
Build errors or missing dependencies
Build errors or missing dependencies
Verifica che
go version indichi Go 1.24.4 o versioni successive, quindi scarica nuovamente i moduli:Checkout session creation fails
Checkout session creation fails
Cause comuni:
- L’ID prodotto non è valido. Verifica che esista nella sezione Products nella stessa modalità della tua chiave API.
- La chiave API o
DODO_PAYMENTS_ENVIRONMENTin.envè errata. Una chiave in modalità test richiedetest_mode. - Per conoscere l’errore esatto, controlla i log del server. L’handler registra ogni richiesta non riuscita prima di restituire
500.
Webhooks not receiving events
Webhooks not receiving events
Per i test locali, esponi il tuo server con ngrok:Imposta l’URL webhook nella dashboard Dodo Payments sull’URL ngrok. Quindi imposta
DODO_PAYMENTS_WEBHOOK_KEY in .env sulla chiave di firma di quell’endpoint. Se il server registra webhook verification failed, la chiave non corrisponde all’endpoint.Templates not loading
Templates not loading
Il server carica
templates/base.html e templates/index.html dalla directory di lavoro. Avvia il server dalla directory principale del progetto oppure modifica i percorsi dei template in cmd/server/main.go.Approfondimenti
Go SDK
Documentazione completa dell’SDK Go
Webhooks Documentation
Scopri tutti gli eventi webhook e le best practice
Checkout Sessions
Approfondisci la configurazione delle sessioni di checkout
API Reference
Documentazione completa dell’API Dodo Payments
Supporto
Per ricevere assistenza sul boilerplate:- Fai domande nella community Discord.
- Controlla il repository GitHub per problemi e aggiornamenti.
- Contatta il team di supporto.