Zum Hauptinhalt springen

GitHub Repository

Minimaler Go- + Dodo Payments-Boilerplate

Übersicht

Das Go-Boilerplate bietet einen produktionsbereiten Ausgangspunkt für die Integration von Dodo Payments in Ihr Go-Backend. Diese Vorlage umfasst die Handhabung von Checkout-Sitzungen, die Überprüfung von Webhooks, die Integration des Kundenportals und folgt den besten Praktiken von Go, um Ihnen zu helfen, schnell Zahlungen zu akzeptieren.
Dieses Boilerplate verwendet Go 1.21+ mit Clean-Architecture-Mustern (cmd, internal, templates), HTML-Vorlagen und das dodopayments-go SDK für eine nahtlose API-Integration.

Funktionen

  • Quick Setup – Schnellstart in unter 5 Minuten
  • Payment Integration – Vorgefertigter Checkout-Flow mit dem dodopayments-go SDK
  • Modern UI – Saubere, dunkel gestaltete Preisübersichtsseite mit HTML-Vorlagen
  • Webhook Handling – Zahlungsereignisse sicher prüfen und verarbeiten
  • Customer Portal – Selbstständige Abo-Verwaltung
  • Go Best Practices – Saubere Architektur mit cmd, internal und templates
  • Pre-filled Checkout – Zeigt, wie Kundendaten zur Verbesserung der UX übergeben werden

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:
  • Go 1.21+
  • Dodo Payments-Konto (um API- und Webhook-Keys vom Dashboard abzurufen)

Schnellstart

1

Clone the Repository

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

Install Dependencies

make install
Oder manuell:
go mod download
3

Get API Credentials

Melden Sie sich bei Dodo Payments an und holen Sie sich Ihre Zugangsdaten aus dem Dashboard:
Stellen Sie sicher, dass Sie sich während der Entwicklung im Testmodus befinden!
4

Configure Environment Variables

Erstellen Sie eine .env-Datei im Stammverzeichnis:
cp .env.example .env
Aktualisieren Sie die Werte mit Ihren Dodo Payments-Anmeldeinformationen:
.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
Committen Sie Ihre .env-Datei niemals in die Versionskontrolle. Sie ist bereits in .gitignore enthalten.
5

Add Your Products

Aktualisieren Sie internal/lib/products.go mit Ihren tatsächlichen Produkt-IDs von 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
Oder manuell:
go run cmd/server/main.go
Öffnen Sie http://localhost:8000, um Ihre Preisgestaltungseite zu sehen!
Sie sollten eine dunkel gestaltete Preisübersichtsseite sehen, auf der Ihre Produkte zum Kauf bereitstehen.

Projektstruktur

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

API-Endpunkte

Das Boilerplate umfasst die folgenden vorkonfigurierten Endpunkte:
EndpunktMethodeBeschreibung
/GETPreisübersichtsseite mit Produktauflistung
/api/checkoutPOSTErstellen Sie eine neue Checkout-Sitzung
/api/webhookPOSTVerarbeiten Sie Dodo Payments Webhooks
/api/customer-portalPOSTGenerieren Sie eine Kundenportal-URL

Anpassung

Produktinformationen aktualisieren

Bearbeiten Sie internal/lib/products.go, um folgende Punkte anzupassen:
  • Produkt-IDs (aus Ihrem Dodo-Dashboard)
  • Preise
  • Funktionen
  • Beschreibungen
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",
        },
    },
}

Kundendaten vorab ausfüllen

In templates/index.html ersetzen Sie die fest kodierten Kundendaten durch Ihre tatsächlichen Benutzerdaten:
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 einer Produktionsanwendung würden Sie diese Werte dynamisch aus Ihrem Authentifizierungssystem einfügen.

Webhook-Ereignisse

Das Boilerplate zeigt die Verarbeitung von Webhook-Ereignissen in internal/api/webhook.go. Unterstützte Ereignisse sind:
EreignisBeschreibung
subscription.activeWird ausgelöst, wenn ein Abonnement aktiv wird
payment.succeededWird ausgelöst, wenn eine Zahlung erfolgreich ist
Fügen Sie Ihre Geschäftslogik innerhalb des Webhook-Handlers hinzu, um:
  • Benutzerberechtigungen in Ihrer Datenbank zu aktualisieren
  • Bestätigungs-E-Mails zu senden
  • Zugriff auf digitale Produkte bereitzustellen
  • Analysen und Metriken zu verfolgen

Webhooks lokal testen

Für die lokale Entwicklung verwenden Sie Tools wie ngrok, um Ihren lokalen Server freizugeben:
ngrok http 8000
Aktualisieren Sie die Webhook-URL in Ihrem Dodo Payments Dashboard:
https://your-ngrok-url.ngrok.io/api/webhook

Bereitstellung

Für die Produktion bauen

make build
Oder manuell:
go build -o bin/server cmd/server/main.go
./bin/server

Auf Vercel bereitstellen

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

Docker

Erstellen Sie eine 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"]
Bauen und ausführen:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Produktionsüberlegungen

Vor dem Einsatz in der Produktion:
  • Wechseln Sie DODO_PAYMENTS_ENVIRONMENT zu live_mode
  • Verwenden Sie Produktions-API-Schlüssel aus dem Dashboard
  • Aktualisieren Sie die Webhook-URL auf Ihre Produktionsdomain
  • Aktivieren Sie HTTPS für alle Endpunkte

Fehlersuche

Stellen Sie sicher, dass die Go-Module ordnungsgemäß heruntergeladen sind:
go mod tidy
go mod download
Häufige Ursachen:
  • Ungültige Produkt-ID – prüfen Sie, ob sie in Ihrem Dodo-Dashboard vorhanden ist
  • Falscher API-Schlüssel oder Umgebungswert in .env
  • Überprüfen Sie die Serverprotokolle auf detaillierte Fehlermeldungen
Für lokale Tests verwenden Sie ngrok, um Ihren Server erreichbar zu machen:
ngrok http 8000
Aktualisieren Sie die Webhook-URL in Ihrem Dodo-Dashboard auf die ngrok-URL. Stellen Sie sicher, dass Sie Ihre .env-Datei mit dem richtigen Webhook-Verifizierungsschlüssel aktualisieren.
Stellen Sie sicher, dass Sie den Server vom Projektstammverzeichnis aus starten oder dass der Vorlagenpfad in Ihrem Code korrekt konfiguriert ist.

Erfahren Sie mehr

Unterstützung

Brauchen Sie Hilfe mit dem Boilerplate?