Zum Hauptinhalt springen

GitHub Repository

Minimal 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 sauberen Architekturmustern (cmd, internal, templates), HTML-Vorlagen und das dodopayments-go SDK für eine nahtlose API-Integration.

Funktionen

  • Schnelle Einrichtung - Starten Sie in weniger als 5 Minuten
  • Zahlungsintegration - Vorgefertigter Checkout-Flow mit dem dodopayments-go SDK
  • Moderne UI - Saubere, dunkel gestaltete Preisgestaltungseite mit HTML-Vorlagen
  • Webhook-Verarbeitung - Sicheres Überprüfen und Verarbeiten von Zahlungsereignissen
  • Kundenportal - Selbstbedienungs-Abonnementverwaltung
  • Go-Best Practices - Saubere Architektur mit cmd, internal und templates
  • Vorab ausgefüllter Checkout - Demonstriert das Übergeben von Kundendaten zur Verbesserung der Benutzererfahrung

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

Repository klonen

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

Abhängigkeiten installieren

make install
Oder manuell:
go mod download
3

API-Anmeldeinformationen abrufen

Melden Sie sich bei Dodo Payments an und holen Sie sich Ihre Anmeldeinformationen vom Dashboard:
Stellen Sie sicher, dass Sie sich im Testmodus befinden, während Sie entwickeln!
4

Umgebungsvariablen konfigurieren

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
Verpflichten Sie niemals Ihre .env Datei zur Versionskontrolle. Sie ist bereits in .gitignore enthalten.
5

Fügen Sie Ihre Produkte hinzu

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

Entwicklungsserver starten

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 Preisgestaltungseite mit Ihren Produkten sehen, die bereit zum Kauf sind.

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
/GETPreisgestaltungseite mit Produktauflistung
/api/checkoutPOSTErstellen Sie eine neue Checkout-Sitzung
/api/webhookPOSTVerarbeiten Sie Dodo Payments-Webhooks
/api/customer-portalPOSTGenerieren Sie die URL des Kundenportals

Anpassung

Produktinformationen aktualisieren

Bearbeiten Sie internal/lib/products.go, um Folgendes zu ändern:
  • 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 codierten Kundendaten durch Ihre tatsächlichen Benutzerdaten:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // 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 demonstriert die Verarbeitung von Webhook-Ereignissen in internal/api/webhook.go. Unterstützte Ereignisse sind:
EreignisBeschreibung
subscription.activeAusgelöst, wenn ein Abonnement aktiv wird
payment.succeededAusgelö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

Bevor Sie in die Produktion gehen:
  • 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 Go-Module ordnungsgemäß heruntergeladen werden:
go mod tidy
go mod download
Häufige Ursachen:
  • Ungültige Produkt-ID - überprüfen Sie, ob sie in Ihrem Dodo-Dashboard vorhanden ist
  • Falscher API-Schlüssel oder Umgebungsparameter in .env
  • Überprüfen Sie die Serverprotokolle auf detaillierte Fehlermeldungen
Für lokale Tests verwenden Sie ngrok, um Ihren Server freizugeben:
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-Überprüfungsschlüssel aktualisieren.
Stellen Sie sicher, dass Sie den Server aus dem Stammverzeichnis des Projekts ausführen oder dass der Vorlagenpfad in Ihrem Code korrekt konfiguriert ist.

Erfahren Sie mehr

Unterstützung

Brauchen Sie Hilfe mit dem Boilerplate?