GitHub Repository
Minimal Go + Dodo Payments boilerplate
Overview
Le boilerplate Go est un serveur Go minimal qui vend vos produits Dodo Payments depuis une page de tarification. Il crée des sessions de paiement, vérifie et traite les webhooks, et ouvre le Customer Portal. Clonez-le comme point de départ pour votre propre backend Go.Le boilerplate nécessite Go 1.24.4 ou une version ultérieure, la version définie dans son
go.mod. Il utilise une structure cmd, internal et templates, affiche la page de tarification avec les modèles HTML de Go et appelle l’API Dodo Payments via le SDK dodopayments-go.Features
- Configuration rapide : clonez le dépôt, ajoutez vos clés API à
.envet démarrez le serveur avecmake run. - Intégration des paiements : un flux de paiement qui crée des sessions de paiement avec le SDK
dodopayments-go. - Interface moderne : une page de tarification sombre créée avec les modèles HTML de Go et Tailwind CSS.
- Gestion des webhooks : vérifie la signature de chaque webhook avant de traiter l’événement.
- Customer Portal : gestion autonome des abonnements via le Customer Portal.
- Bonnes pratiques Go : une structure de projet claire avec
cmd,internalettemplates. - Paiement prérempli : transmet le nom et l’adresse e-mail du client au paiement, afin qu’il n’ait pas à les saisir à nouveau.
Prerequisites
Avant de commencer, vous avez besoin des éléments suivants :- Go 1.24.4 ou une version ultérieure. Vérifiez votre version avec
go version. - Un compte Dodo Payments, pour créer une clé API et une clé de signature de webhook dans le tableau de bord.
- Au moins un produit, créé dans Products dans le tableau de bord.
Quick Start
1
Clone the Repository
2
Install Dependencies
make install exécute go mod download, puis go mod tidy. Pour télécharger les modules sans make, exécutez :3
Get API Credentials
Inscrivez-vous sur Dodo Payments, puis copiez les deux clés depuis le tableau de bord :
- Clé API : Developer → API Keys
- Clé de webhook : Developer → Webhooks. Chaque endpoint de webhook possède sa propre clé de signature. Pour créer un endpoint qui atteint votre serveur local, consultez Tester les webhooks en local.
4
Configure Environment Variables
Créez un fichier Définissez ces valeurs dans Le serveur lit ces variables au démarrage :
.env à la racine du projet à partir du modèle :.env :.env
Le serveur s’arrête au démarrage si l’une des clés obligatoires est manquante.
.env.example définit PORT et DODO_PAYMENTS_RETURN_URL sur le port 8080. Cette page utilise le port 8000 ; définissez donc les deux valeurs sur 8000 comme indiqué, ou remplacez 8000 par 8080 dans les commandes de cette page.5
Add Your Products
Remplacez le produit d’exemple dans
internal/lib/products.go par vos produits. Copiez l’identifiant de chaque produit depuis Products dans le tableau de bord :Price définit uniquement le prix affiché par la page de tarification, dans la plus petite unité monétaire : 9999 s’affiche comme $99.99. Le paiement facture le prix du produit dans Dodo Payments.6
Run the Development Server
make run compile le serveur dans bin/server et le démarre. Pour exécuter le serveur sans compiler d’abord un binaire, exécutez :Vous voyez une page de tarification sombre qui répertorie vos produits, prêts à être achetés.
Structure du projet
Le dépôt possède la structure suivante :Endpoints d’API
Le boilerplate comprend les endpoints préconfigurés suivants :Personnalisation
Mettre à jour les informations produit
Modifiezinternal/lib/products.go pour changer :
- Les identifiants des produits (depuis Products dans votre tableau de bord Dodo Payments)
- Les noms
- Les prix affichés sur la page de tarification
- Les fonctionnalités
- Les descriptions
/mo à chaque prix et affiche Custom au lieu d’un prix lorsque Price vaut 100000 ou davantage. Pour modifier ce comportement, éditez templates/index.html.
Préremplir les données client
Dans.env, la fonction handleCheckout envoie des données client codées en dur à /api/checkout. Remplacez-les par les données de l’utilisateur connecté :
handlePortal réutilise ces données client et utilise les mêmes nom et adresse e-mail d’exemple comme solution de repli. Dans une application de production, injectez ces valeurs depuis votre système d’authentification dans les deux fonctions.
Événements webhook
internal/api/webhook.go vérifie chaque requête avec client.Webhooks.Unwrap et la clé dans DODO_PAYMENTS_WEBHOOK_KEY, puis achemine l’événement selon son type. Ces événements disposent d’un gestionnaire, et chaque gestionnaire journalise les données de l’événement :
Le gestionnaire accepte également
subscription.on_hold, subscription.failed, subscription.expired et subscription.plan_changed sans effectuer d’action, et journalise tout autre type d’événement comme non géré. Il répond avec 200 à chaque événement vérifié. Pour connaître tous les types d’événements, consultez le Guide des événements webhook.
Ajoutez votre logique métier aux fonctions de gestion pour :
- Mettre à jour les autorisations des utilisateurs dans votre base de données
- Envoyer des e-mails de confirmation
- Provisionner l’accès aux produits numériques
- Suivre les analyses et les métriques
Tester les webhooks en local
Dodo Payments ne peut pas atteindrelocalhost. Pour recevoir des webhooks pendant le développement, exposez votre serveur local avec un tunnel tel que ngrok :
/api/webhook :
DODO_PAYMENTS_WEBHOOK_KEY, puis redémarrez le serveur.
Déploiement
Compiler pour la production
make build compile le serveur dans bin/server :
make, exécutez :
Déployer sur Vercel
[.env aux paramètres du projet Vercel, car .env ne se trouve pas dans le dépôt. Définissez ensuite votre endpoint webhook dans le tableau de bord sur https://yourdomain.com/api/webhook.
Docker
Créez un fichierDockerfile à la racine du projet. L’étape de compilation doit utiliser Go 1.24.4 ou une version ultérieure pour correspondre à go.mod :
templates/ à côté du binaire, car le serveur charge les modèles depuis le répertoire de travail. Compilez et exécutez l’image :
PORT de .env ; conservez donc PORT=8000 pour qu’elle corresponde au mappage des ports.
Considérations pour la production
Résolution des problèmes
Build errors or missing dependencies
Build errors or missing dependencies
Vérifiez que
go version indique Go 1.24.4 ou une version ultérieure, puis téléchargez à nouveau les modules :Checkout session creation fails
Checkout session creation fails
Causes courantes :
- L’identifiant du produit est invalide. Vérifiez qu’il existe dans Products, dans le même mode que votre clé API.
- La clé API ou
DODO_PAYMENTS_ENVIRONMENTdans.envest incorrecte. Une clé en mode test nécessitetest_mode. - Pour connaître l’erreur exacte, consultez les journaux du serveur. Le gestionnaire journalise chaque requête échouée avant de renvoyer
500.
Webhooks not receiving events
Webhooks not receiving events
Pour les tests locaux, exposez votre serveur avec ngrok :Définissez l’URL du webhook dans votre tableau de bord Dodo Payments sur l’URL ngrok. Définissez ensuite
DODO_PAYMENTS_WEBHOOK_KEY dans .env sur la clé de signature de cet endpoint. Si les journaux du serveur indiquent webhook verification failed, la clé ne correspond pas à l’endpoint.Templates not loading
Templates not loading
Le serveur charge
templates/base.html et templates/index.html depuis le répertoire de travail. Démarrez le serveur depuis la racine du projet ou modifiez les chemins des modèles dans cmd/server/main.go.En savoir plus
Go SDK
Documentation complète du SDK Go
Webhooks Documentation
Découvrez tous les événements webhook et les bonnes pratiques
Checkout Sessions
Découvrez en détail la configuration des sessions de paiement
API Reference
Documentation complète de l’API Dodo Payments
Assistance
Pour obtenir de l’aide concernant le boilerplate :- Posez vos questions dans la communauté Discord.
- Consultez le dépôt GitHub pour connaître les problèmes et les mises à jour.
- Contactez l’équipe d’assistance.