Saltar al contenido principal

GitHub Repository

Boilerplate mínimo de Go + Dodo Payments

Descripción general

La plantilla Go proporciona un punto de partida listo para producción para integrar Dodo Payments con tu backend de Go. Esta plantilla incluye manejo de sesiones de pago, verificación de webhooks, integración del portal del cliente y sigue las mejores prácticas de Go para ayudarte a comenzar a aceptar pagos rápidamente.
Este boilerplate utiliza Go 1.21+ con patrones de arquitectura limpia (cmd, internal, templates), plantillas HTML y el SDK dodopayments-go para una integración de API sin fisuras.

Características

  • Configuración rápida - Comienza en menos de 5 minutos
  • Integración de pagos - Flujo de pago preconfigurado usando el SDK dodopayments-go
  • UI moderna - Página de precios limpia con tema oscuro y plantillas HTML
  • Gestión de webhooks - Verifica y procesa eventos de pago de forma segura
  • Portal del cliente - Administración de suscripciones en autoservicio
  • Buenas prácticas de Go - Arquitectura limpia con cmd, internal e templates
  • Checkout prellenado - Demuestra cómo pasar datos del cliente para mejorar la experiencia de usuario

Requisitos previos

Antes de comenzar, asegúrate de tener:
  • Go 1.21+
  • Cuenta de Dodo Payments (para acceder a las claves de API y Webhook desde el panel)

Inicio rápido

1

Clona el repositorio

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

Instala las dependencias

make install
O manualmente:
go mod download
3

Get API Credentials

Regístrate en Dodo Payments y obtén tus credenciales desde el panel de control:
¡Asegúrate de estar en Modo de prueba mientras desarrollas!
4

Configure Environment Variables

Crea un archivo .env en el directorio raíz:
cp .env.example .env
Actualiza los valores con tus credenciales de 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
Nunca añadas tu archivo .env al control de versiones. Ya está incluido en .gitignore.
5

Add Your Products

Actualiza internal/lib/products.go con tus ID de producto reales 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

Ejecuta el servidor de desarrollo

make run
O manualmente:
go run cmd/server/main.go
Abre http://localhost:8000 para ver tu página de precios!
Deberías ver una página de precios con tema oscuro y tus productos listos para comprar.

Estructura del proyecto

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

Puntos finales de la API

La plantilla incluye los siguientes puntos finales preconfigurados:
EndpointMétodoDescripción
/GETPágina de precios con listado de productos
/api/checkoutPOSTCrear una nueva sesión de pago
/api/webhookPOSTProcesar webhooks de Dodo Payments
/api/customer-portalPOSTGenerar URL del portal del cliente

Personalización

Actualiza la información del producto

Edita internal/lib/products.go para modificar:
  • ID de productos (desde tu panel de Dodo)
  • Precios
  • Características
  • Descripciones
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",
        },
    },
}

Pre-llenar datos del cliente

En templates/index.html, reemplaza los datos de cliente codificados con tus datos reales de usuario:
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
};
En una aplicación de producción, inyectarías dinámicamente estos valores desde tu sistema de autenticación.

Eventos de Webhook

El boilerplate demuestra cómo gestionar eventos de webhook en internal/api/webhook.go. Los eventos compatibles incluyen:
EventoDescripción
subscription.activeSe dispara cuando una suscripción se activa
payment.succeededSe dispara cuando un pago se realiza con éxito
Agrega tu lógica de negocio dentro del manejador de webhook para:
  • Actualizar permisos de usuario en tu base de datos
  • Enviar correos electrónicos de confirmación
  • Proveer acceso a productos digitales
  • Rastrear analíticas y métricas

Pruebas de Webhooks Localmente

Para el desarrollo local, utiliza herramientas como ngrok para exponer tu servidor local:
ngrok http 8000
Actualiza la URL del webhook en tu Panel de Dodo Payments:
https://your-ngrok-url.ngrok.io/api/webhook

Despliegue

Compilar para producción

make build
O manualmente:
go build -o bin/server cmd/server/main.go
./bin/server

Desplegar en Vercel

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

Docker

Crea 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"]
Compila y ejecuta:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Consideraciones para producción

Antes de desplegar en producción:
  • Cambia DODO_PAYMENTS_ENVIRONMENT a live_mode
  • Usa claves de API de producción desde el panel
  • Actualiza la URL del webhook a tu dominio de producción
  • Habilita HTTPS para todos los endpoints

Solución de problemas

Asegúrate de que los módulos de Go estén correctamente descargados:
go mod tidy
go mod download
Causas comunes:
  • ID de producto inválido: verifica que exista en tu panel de Dodo
  • Clave de API o entorno incorrecto en .env
  • Consulta los registros del servidor para mensajes de error detallados
Para pruebas locales, usa ngrok para exponer tu servidor:
ngrok http 8000
Actualiza la URL del webhook en tu panel de Dodo a la URL de ngrok. Asegúrate de actualizar tu archivo .env con la clave correcta de verificación de webhook.
Asegúrate de ejecutar el servidor desde el directorio raíz del proyecto o de que la ruta de las plantillas esté correctamente configurada en tu código.

Aprende más

Soporte

¿Necesitas ayuda con la plantilla?