GitHub Repository
Minimaler Go- + Dodo Payments-Boilerplate
Übersicht
Das Go-Boilerplate ist ein minimaler Go-Server, der Ihre Dodo Payments-Produkte über eine Preisseite verkauft. Er erstellt Checkout-Sitzungen, verifiziert und verarbeitet Webhooks und öffnet das Customer Portal. Klonen Sie es als Ausgangspunkt für Ihr eigenes Go-Backend.Das Boilerplate benötigt Go 1.24.4 oder höher, die in seiner
go.mod festgelegte Version. Es verwendet ein cmd-, internal- und templates-Layout, rendert die Preisseite mit Go-HTML-Templates und ruft die Dodo Payments API über das dodopayments-go SDK auf.Funktionen
- Schnelle Einrichtung: Klonen Sie das Repository, fügen Sie Ihre API-Schlüssel zu
.envhinzu und starten Sie den Server mitmake run. - Zahlungsintegration: Ein Checkout-Ablauf, der Checkout-Sitzungen mit dem
dodopayments-goSDK erstellt. - Moderne Benutzeroberfläche: Eine Preisseite mit dunklem Design, erstellt mit Go-HTML-Templates und Tailwind CSS.
- Webhook-Verarbeitung: Verifiziert die Signatur jedes Webhooks, bevor das Ereignis verarbeitet wird.
- Customer Portal: Selbstständige Verwaltung von Abonnements über das Customer Portal.
- Go-Best Practices: Eine übersichtliche Projektstruktur mit
cmd,internalundtemplates. - Vorbefüllter Checkout: Übermittelt den Namen und die E-Mail-Adresse des Kunden an den Checkout, damit der Kunde diese nicht erneut eingeben muss.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie:- Go 1.24.4 oder höher. Überprüfen Sie Ihre Version mit
go version. - Ein Dodo Payments-Konto, um einen API-Schlüssel und einen Webhook-Signaturschlüssel im Dashboard zu erstellen.
- Mindestens ein Produkt, das im Dashboard unter Products erstellt wurde.
Schnellstart
1
Clone the Repository
2
Install Dependencies
make install führt go mod download und anschließend go mod tidy aus. Um die Module ohne make herunterzuladen, führen Sie Folgendes aus:3
Get API Credentials
Registrieren Sie sich bei Dodo Payments und kopieren Sie anschließend beide Schlüssel aus dem Dashboard:
- API Key: Developer → API Keys
- Webhook Key: Developer → Webhooks. Jeder Webhook-Endpunkt verfügt über einen eigenen Signaturschlüssel. Informationen zum Erstellen eines Endpunkts, der Ihren lokalen Server erreicht, finden Sie unter Webhooks lokal testen.
4
Configure Environment Variables
Erstellen Sie im Projektstammverzeichnis aus der Vorlage eine Datei Legen Sie diese Werte in Der Server liest diese Variablen beim Start ein:
.env:.env fest:.env
Der Server wird beim Start beendet, wenn einer der erforderlichen Schlüssel fehlt.
.env.example setzt PORT und DODO_PAYMENTS_RETURN_URL auf Port 8080. Diese Seite verwendet Port 8000. Setzen Sie daher beide wie gezeigt auf 8000 oder ersetzen Sie 8000 in den Befehlen auf dieser Seite durch 8080.5
Add Your Products
Ersetzen Sie das Beispielprodukt in
internal/lib/products.go durch Ihre Produkte. Kopieren Sie die ID jedes Produkts aus Products im Dashboard:Price legt nur den auf der Preisseite angezeigten Preis in der kleinsten Währungseinheit fest: 9999 wird als $99.99 angezeigt. Checkout berechnet den Preis des Produkts in Dodo Payments.6
Run the Development Server
make run erstellt den Server in bin/server und startet ihn. Um den Server auszuführen, ohne zuvor eine Binärdatei zu erstellen, führen Sie Folgendes aus:Sie sehen eine Preisseite mit dunklem Design, auf der Ihre kaufbereiten Produkte aufgeführt sind.
Projektstruktur
Das Repository hat folgende Struktur:API-Endpunkte
Das Boilerplate enthält die folgenden vorkonfigurierten Endpunkte:Anpassung
Produktinformationen aktualisieren
Bearbeiten Sieinternal/lib/products.go, um Folgendes zu ändern:
- Produkt-IDs (aus Products in Ihrem Dodo Payments-Dashboard)
- Namen
- Auf der Preisseite angezeigte Preise
- Funktionen
- Beschreibungen
/mo hinzu und zeigt Custom anstelle eines Preises an, wenn Price 100000 oder höher ist. Um dies zu ändern, bearbeiten Sie templates/index.html.
Kundendaten vorab ausfüllen
Intemplates/index.html sendet die Funktion handleCheckout fest codierte Kundendaten an /api/checkout. Ersetzen Sie diese durch die Daten des angemeldeten Benutzers:
handlePortal verwendet diese Kundendaten erneut und greift auf denselben Beispielnamen und dieselbe Beispiel-E-Mail-Adresse zurück. In einer Produktionsanwendung müssen Sie diese Werte in beiden Funktionen aus Ihrem Authentifizierungssystem übergeben.
Webhook-Ereignisse
internal/api/webhook.go verifiziert jede Anfrage mit client.Webhooks.Unwrap und dem Schlüssel in DODO_PAYMENTS_WEBHOOK_KEY und leitet das Ereignis anhand seines type weiter. Für diese Ereignisse gibt es jeweils einen Handler, und jeder Handler protokolliert die Ereignisdaten:
Der Handler akzeptiert außerdem
subscription.on_hold, subscription.failed, subscription.expired und subscription.plan_changed ohne Aktion und protokolliert jeden anderen Ereignistyp als nicht verarbeitet. Er antwortet auf jedes verifizierte Ereignis mit 200. Eine Übersicht über alle Ereignistypen finden Sie im Webhook Event Guide.
Fügen Sie den Handler-Funktionen Ihre Geschäftslogik hinzu, um:
- Benutzerberechtigungen in Ihrer Datenbank zu aktualisieren
- Bestätigungs-E-Mails zu senden
- Zugriff auf digitale Produkte bereitzustellen
- Analysen und Metriken zu erfassen
Webhooks lokal testen
Dodo Payments kannlocalhost nicht erreichen. Um während der Entwicklung Webhooks zu empfangen, machen Sie Ihren lokalen Server mit einem Tunnel wie ngrok öffentlich erreichbar:
/api/webhook:
DODO_PAYMENTS_WEBHOOK_KEY und starten Sie den Server anschließend neu.
Bereitstellung
Für die Produktion erstellen
make build kompiliert den Server in bin/server:
make zu erstellen und zu starten, führen Sie Folgendes aus:
Auf Vercel bereitstellen
[.env den Vercel-Projekteinstellungen hinzu, da .env nicht im Repository enthalten ist. Legen Sie anschließend den Webhook-Endpunkt im Dashboard auf https://yourdomain.com/api/webhook fest.
Docker
Erstellen Sie im Projektstammverzeichnis eine DateiDockerfile. Die Build-Stage muss Go 1.24.4 oder höher verwenden, passend zu go.mod:
templates/ neben die Binärdatei, da der Server die Templates aus dem Arbeitsverzeichnis lädt. Erstellen und starten Sie das Image:
PORT aus .env. Belassen Sie daher PORT=8000 unverändert, damit es zur Portzuordnung passt.
Überlegungen für die Produktion
Fehlerbehebung
Build errors or missing dependencies
Build errors or missing dependencies
Überprüfen Sie, ob
go version Go 1.24.4 oder höher meldet, und laden Sie anschließend die Module erneut herunter:Checkout session creation fails
Checkout session creation fails
Häufige Ursachen:
- Die Produkt-ID ist ungültig. Überprüfen Sie, ob sie unter Products im selben Modus wie Ihr API-Schlüssel vorhanden ist.
- Der API-Schlüssel oder
DODO_PAYMENTS_ENVIRONMENTin.envist falsch. Ein Schlüssel im Testmodus benötigttest_mode. - Die genaue Fehlermeldung finden Sie in den Serverprotokollen. Der Handler protokolliert jede fehlgeschlagene Anfrage, bevor er
500zurückgibt.
Webhooks not receiving events
Webhooks not receiving events
Für lokale Tests machen Sie Ihren Server mit ngrok öffentlich erreichbar:Setzen Sie die Webhook-URL in Ihrem Dodo Payments-Dashboard auf die ngrok-URL. Setzen Sie anschließend
DODO_PAYMENTS_WEBHOOK_KEY in .env auf den Signaturschlüssel dieses Endpunkts. Wenn der Server webhook verification failed protokolliert, stimmt der Schlüssel nicht mit dem Endpunkt überein.Templates not loading
Templates not loading
Der Server lädt
templates/base.html und templates/index.html aus dem Arbeitsverzeichnis. Starten Sie den Server aus dem Projektstammverzeichnis oder ändern Sie die Template-Pfade in cmd/server/main.go.Weitere Informationen
Go SDK
Vollständige Go SDK-Dokumentation
Webhooks Documentation
Erfahren Sie mehr über alle Webhook-Ereignisse und Best Practices
Checkout Sessions
Erhalten Sie einen detaillierten Einblick in die Konfiguration von Checkout-Sitzungen
API Reference
Vollständige Dodo Payments API-Dokumentation
Support
Wenn Sie Hilfe zum Boilerplate benötigen:- Stellen Sie Fragen in der Discord-Community.
- Sehen Sie im GitHub-Repository nach Problemen und Aktualisierungen.
- Kontaktieren Sie das Support-Team.