Saltar al contenido principal

Repositorio de GitHub

Plantilla mínima 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.
Esta plantilla 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 problemas.

Características

  • Configuración rápida - Comienza en menos de 5 minutos
  • Integración de pagos - Flujo de pago preconfigurado utilizando el SDK dodopayments-go
  • Interfaz moderna - Página de precios limpia y con tema oscuro con plantillas HTML
  • Manejo de webhooks - Verifica y procesa eventos de pago de forma segura
  • Portal del cliente - Gestión de suscripciones autoservicio
  • Mejores prácticas de Go - Arquitectura limpia con cmd, internal y templates
  • Checkout prellenado - Demuestra cómo pasar datos del cliente para mejorar la experiencia del 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

Obtén las credenciales de la API

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

Configura las variables de entorno

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 cometas tu archivo .env en el control de versiones. Ya está incluido en .gitignore.
5

Agrega tus productos

Actualiza internal/lib/products.go con tus IDs 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 con 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:
Punto finalMétodoDescripción
/GETPágina de precios con listado de productos
/api/checkoutPOSTCrear una nueva sesión de pago
/api/webhookPOSTManejar 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:
  • IDs de producto (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 del cliente codificados con tus datos de usuario reales:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // 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

La plantilla demuestra cómo manejar eventos de webhook en internal/api/webhook.go. Los eventos soportados incluyen:
EventoDescripción
subscription.activeActivado cuando una suscripción se vuelve activa
payment.succeededActivado cuando un pago es exitoso
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 puntos finales

Solución de problemas

Asegúrate de que los módulos de Go estén descargados correctamente:
go mod tidy
go mod download
Causas comunes:
  • ID de producto inválido - verifica que exista en tu panel de Dodo
  • Clave de API incorrecta o configuración de entorno en .env
  • Revisa los registros del servidor para mensajes de error detallados
Para pruebas locales, utiliza 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 de verificación de webhook correcta.
Asegúrate de estar ejecutando el servidor desde el directorio raíz del proyecto, o que la ruta de las plantillas esté configurada correctamente en tu código.

Aprende más

Soporte

¿Necesitas ayuda con la plantilla?