Passer au contenu principal

Dépôt GitHub

Boilerplate minimal Go + Dodo Payments

Aperçu

Le boilerplate Go fournit un point de départ prêt pour la production pour intégrer Dodo Payments avec votre backend Go. Ce modèle inclut la gestion des sessions de paiement, la vérification des webhooks, l’intégration du portail client, et suit les meilleures pratiques Go pour vous aider à commencer à accepter des paiements rapidement.
Ce boilerplate utilise Go 1.21+ avec des modèles d’architecture propre (cmd, internal, templates), des modèles HTML, et le SDK dodopayments-go pour une intégration API sans faille.

Fonctionnalités

  • Configuration rapide - Commencez en moins de 5 minutes
  • Intégration de paiement - Flux de paiement préconfiguré utilisant le SDK dodopayments-go
  • UI moderne - Page de tarification propre et sombre avec des modèles HTML
  • Gestion des webhooks - Vérifiez et traitez en toute sécurité les événements de paiement
  • Portail client - Gestion des abonnements en libre-service
  • Meilleures pratiques Go - Architecture propre avec cmd, internal, et templates
  • Checkout pré-rempli - Montre comment passer les données client pour améliorer l’expérience utilisateur

Prérequis

Avant de commencer, assurez-vous d’avoir :
  • Go 1.21+
  • Compte Dodo Payments (pour accéder aux clés API et Webhook depuis le tableau de bord)

Démarrage rapide

1

Cloner le dépôt

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

Installer les dépendances

make install
Ou manuellement :
go mod download
3

Obtenir les identifiants API

Inscrivez-vous sur Dodo Payments et obtenez vos identifiants depuis le tableau de bord :
Assurez-vous d’être en Mode Test pendant le développement !
4

Configurer les variables d'environnement

Créez un fichier .env dans le répertoire racine :
cp .env.example .env
Mettez à jour les valeurs avec vos identifiants 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
Ne jamais commettre votre fichier .env dans le contrôle de version. Il est déjà inclus dans .gitignore.
5

Ajoutez vos produits

Mettez à jour internal/lib/products.go avec vos véritables identifiants de produit de 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

Exécutez le serveur de développement

make run
Ou manuellement :
go run cmd/server/main.go
Ouvrez http://localhost:8000 pour voir votre page de tarification !
Vous devriez voir une page de tarification à thème sombre avec vos produits prêts à être achetés.

Structure du projet

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

Points de terminaison API

Le boilerplate inclut les points de terminaison préconfigurés suivants :
Point de terminaisonMéthodeDescription
/GETPage de tarification avec liste de produits
/api/checkoutPOSTCréer une nouvelle session de paiement
/api/webhookPOSTGérer les webhooks de Dodo Payments
/api/customer-portalPOSTGénérer l’URL du portail client

Personnalisation

Mettre à jour les informations sur les produits

Modifiez internal/lib/products.go pour modifier :
  • Identifiants de produit (de votre tableau de bord Dodo)
  • Tarification
  • Fonctionnalités
  • Descriptions
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",
        },
    },
}

Pré-remplir les données client

Dans templates/index.html, remplacez les données client codées en dur par vos véritables données utilisateur :
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // Replace with actual logged-in user's email
};
Dans une application de production, vous injecteriez dynamiquement ces valeurs depuis votre système d’authentification.

Événements de webhook

Le boilerplate démontre la gestion des événements de webhook dans internal/api/webhook.go. Les événements pris en charge incluent :
ÉvénementDescription
subscription.activeDéclenché lorsqu’un abonnement devient actif
payment.succeededDéclenché lorsqu’un paiement est réussi
Ajoutez votre logique métier à l’intérieur du gestionnaire de webhook pour :
  • Mettre à jour les autorisations utilisateur dans votre base de données
  • Envoyer des e-mails de confirmation
  • Fournir l’accès à des produits numériques
  • Suivre les analyses et les métriques

Tester les webhooks localement

Pour le développement local, utilisez des outils comme ngrok pour exposer votre serveur local :
ngrok http 8000
Mettez à jour l’URL du webhook dans votre tableau de bord Dodo Payments :
https://your-ngrok-url.ngrok.io/api/webhook

Déploiement

Construire pour la production

make build
Ou manuellement :
go build -o bin/server cmd/server/main.go
./bin/server

Déployer sur Vercel

[ Déployer avec Vercel ](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/go-boilerplate)

Docker

Créez 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"]
Construisez et exécutez :
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Considérations de production

Avant de déployer en production :
  • Changez DODO_PAYMENTS_ENVIRONMENT en live_mode
  • Utilisez les clés API de production depuis le tableau de bord
  • Mettez à jour l’URL du webhook vers votre domaine de production
  • Activez HTTPS pour tous les points de terminaison

Dépannage

Assurez-vous que les modules Go sont correctement téléchargés :
go mod tidy
go mod download
Causes courantes :
  • Identifiant de produit invalide - vérifiez qu’il existe dans votre tableau de bord Dodo
  • Mauvaise clé API ou paramètre d’environnement dans .env
  • Vérifiez les journaux du serveur pour des messages d’erreur détaillés
Pour les tests locaux, utilisez ngrok pour exposer votre serveur :
ngrok http 8000
Mettez à jour l’URL du webhook dans votre tableau de bord Dodo vers l’URL ngrok. Assurez-vous de mettre à jour votre fichier .env avec la clé de vérification du webhook correcte.
Assurez-vous que vous exécutez le serveur depuis le répertoire racine du projet, ou que le chemin des modèles est correctement configuré dans votre code.

En savoir plus

Support

Besoin d’aide avec le boilerplate ?