Vai al contenuto principale

GitHub Repository

Boilerplate minimale Go + Dodo Payments

Panoramica

Il boilerplate Go fornisce un punto di partenza pronto per la produzione per integrare Dodo Payments con il tuo backend Go. Questo template include la gestione delle sessioni di checkout, la verifica dei webhook, l’integrazione del portale clienti e segue le migliori pratiche di Go per aiutarti ad accettare pagamenti rapidamente.
Questo boilerplate utilizza Go 1.21+ con pattern di clean architecture (cmd, internal, templates), template HTML e l’SDK dodopayments-go per un’integrazione API senza soluzione di continuità.

Caratteristiche

  • Configurazione rapida - Inizia in meno di 5 minuti
  • Integrazione dei pagamenti - Flusso di checkout preconfigurato usando l’SDK dodopayments-go
  • Interfaccia moderna - Pagina dei prezzi pulita a tema scuro con template HTML
  • Gestione webhook - Verifica e processa in modo sicuro gli eventi di pagamento
  • Portale clienti - Gestione self-service degli abbonamenti
  • Best practice Go - Architettura pulita con cmd, internal e templates
  • Checkout precompilato - Dimostra il passaggio dei dati cliente per migliorare l’esperienza utente

Requisiti

Prima di iniziare, assicurati di avere:
  • Go 1.21+
  • Account Dodo Payments (per accedere alle chiavi API e Webhook dal dashboard)

Avvio Rapido

1

Clone the Repository

git clone https://github.com/dodopayments/go-boilerplate.git
cd go-boilerplate
2

Install Dependencies

make install
O manualmente:
go mod download
3

Get API Credentials

Registrati su Dodo Payments e ottieni le tue credenziali dalla dashboard:
Assicurati di essere in Modalità Test durante lo sviluppo!
4

Configure Environment Variables

Crea un file .env nella directory principale:
cp .env.example .env
Aggiorna i valori con le tue credenziali Dodo Payments:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here
DODO_PAYMENTS_WEBHOOK_KEY=your_webhook_signing_key_here
DODO_PAYMENTS_RETURN_URL=http://localhost:8000
DODO_PAYMENTS_ENVIRONMENT=test_mode
Non inserire mai il file .env nel controllo versione. È già incluso in .gitignore.
5

Add Your Products

Aggiorna internal/lib/products.go con i tuoi ID prodotto effettivi da Dodo Payments:
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999, // in cents
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
    // ... add more products
}
6

Run the Development Server

make run
O manualmente:
go run cmd/server/main.go
Apri http://localhost:8000 per vedere la tua pagina di pricing!
Dovresti vedere una pagina dei prezzi a tema scuro con i tuoi prodotti pronta all’acquisto.

Struttura del Progetto

go-boilerplate/
├── cmd/
│   └── server/             # Application entry point
├── internal/
│   ├── api/                # API handlers (Checkout, Portal, Webhook)
│   ├── core/               # Configuration and system core
│   └── lib/                # Shared logic (Products, Customer utils)
├── templates/              # HTML templates
├── Makefile                # Build and run commands
├── go.mod                  # Go module definition
├── go.sum                  # Dependency checksums
├── .env.example            # Environment template
└── README.md

Endpoint API

Il boilerplate include i seguenti endpoint preconfigurati:
EndpointMetodoDescrizione
/GETPagina dei prezzi con elenco dei prodotti
/api/checkoutPOSTCrea una nuova sessione di checkout
/api/webhookPOSTGestisci i webhook di Dodo Payments
/api/customer-portalPOSTGenera l’URL del portale clienti

Personalizzazione

Aggiorna le Informazioni sul Prodotto

Modifica internal/lib/products.go per variare:
  • ID dei prodotti (dal tuo dashboard Dodo)
  • Prezzi
  • Funzionalità
  • Descrizioni
var Products = []Product{
    {
        ProductID:   "pdt_001", // Replace with your product ID
        Name:        "Basic Plan",
        Description: "Get access to basic features and support",
        Price:       9999,
        Features: []string{
            "Access to basic features",
            "Email support",
            "1 Team member",
            "Basic analytics",
        },
    },
}

Pre-compila i Dati del Cliente

In templates/index.html, sostituisci i dati cliente hardcodati con i dati reali dei tuoi utenti:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "john@example.com"  // Replace with actual logged-in user's email
};
In un’app di produzione, inietteresti dinamicamente questi valori dal tuo sistema di autenticazione.

Eventi Webhook

Il boilerplate dimostra la gestione degli eventi webhook in internal/api/webhook.go. Gli eventi supportati includono:
EventoDescrizione
subscription.activeAttivato quando un abbonamento diventa attivo
payment.succeededAttivato quando un pagamento ha esito positivo
Aggiungi la tua logica aziendale all’interno del gestore webhook per:
  • Aggiornare i permessi utente nel tuo database
  • Inviare email di conferma
  • Fornire accesso a prodotti digitali
  • Monitorare analisi e metriche

Testare i Webhook Localmente

Per lo sviluppo locale, utilizza strumenti come ngrok per esporre il tuo server locale:
ngrok http 8000
Aggiorna l’URL del webhook nel tuo Dashboard Dodo Payments:
https://your-ngrok-url.ngrok.io/api/webhook

Distribuzione

Compila per la Produzione

make build
O manualmente:
go build -o bin/server cmd/server/main.go
./bin/server

Distribuisci su Vercel

[ Distribuisci con Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

Crea un Dockerfile:
FROM golang:1.21-alpine AS builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o bin/server cmd/server/main.go

FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/bin/server .
COPY --from=builder /app/templates ./templates

EXPOSE 8000
CMD ["./server"]
Compila ed esegui:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Considerazioni per la Produzione

Prima di distribuire in produzione:
  • Passa DODO_PAYMENTS_ENVIRONMENT a live_mode
  • Usa le chiavi API di produzione dalla dashboard
  • Aggiorna l’URL del webhook al tuo dominio di produzione
  • Abilita HTTPS per tutti gli endpoint

Risoluzione dei Problemi

Assicurati che i moduli Go siano correttamente scaricati:
go mod tidy
go mod download
Cause comuni:
  • ID prodotto non valido - verifica che esista nella tua dashboard Dodo
  • Chiave API o impostazione ambiente errate in .env
  • Controlla i log del server per messaggi di errore dettagliati
Per i test locali, usa ngrok per esporre il tuo server:
ngrok http 8000
Aggiorna l’URL del webhook nella tua dashboard Dodo con l’URL di ngrok. Assicurati di aggiornare il file .env con la chiave di verifica del webhook corretta.
Assicurati di eseguire il server dalla directory principale del progetto, oppure che il percorso dei template sia configurato correttamente nel tuo codice.

Scopri di più

Supporto

Hai bisogno di aiuto con il boilerplate?