Pular para o conteúdo principal

GitHub Repository

Boilerplate mínimo Go + Dodo Payments

Visão Geral

O boilerplate em Go fornece um ponto de partida pronto para produção para integrar os pagamentos Dodo com seu backend em Go. Este template inclui manipulação de sessão de checkout, verificação de webhook, integração com o portal do cliente e segue as melhores práticas de Go para ajudá-lo a começar a aceitar pagamentos rapidamente.
Este boilerplate usa Go 1.21+ com padrões de arquitetura limpa (cmd, internal, templates), templates HTML e o SDK dodopayments-go para integração perfeita com APIs.

Recursos

  • Configuração rápida - Comece em menos de 5 minutos
  • Integração de pagamentos - Fluxo de checkout pré-configurado usando o SDK dodopayments-go
  • Interface moderna - Página de preços limpa com tema escuro usando templates HTML
  • Tratamento de webhooks - Verifique e processe eventos de pagamento com segurança
  • Portal do cliente - Gerenciamento de assinaturas em modo self-service
  • Boas práticas em Go - Arquitetura limpa com cmd, internal e templates
  • Checkout com campos preenchidos - Demonstra como passar dados do cliente para melhorar a experiência do usuário

Pré-requisitos

Antes de começar, certifique-se de que você tem:
  • Go 1.21+
  • Conta Dodo Payments (para acessar as chaves da API e do Webhook no painel)

Início Rápido

1

Clone the Repository

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

Install Dependencies

make install
Ou manualmente:
go mod download
3

Get API Credentials

Cadastre-se em Dodo Payments e obtenha suas credenciais no painel:
Certifique-se de estar em Modo de Teste enquanto desenvolve!
4

Configure Environment Variables

Crie um arquivo .env no diretório raiz:
cp .env.example .env
Atualize os valores com suas credenciais do 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 faça commit do seu arquivo .env no controle de versão. Ele já está incluído em .gitignore.
5

Add Your Products

Atualize internal/lib/products.go com seus IDs de produto reais do 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

Run the Development Server

make run
Ou manualmente:
go run cmd/server/main.go
Abra http://localhost:8000 para ver sua página de preços!
Você deverá ver uma página de preços com tema escuro e seus produtos prontos para compra.

Estrutura do Projeto

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

Endpoints da API

O boilerplate inclui os seguintes endpoints pré-configurados:
EndpointMétodoDescrição
/GETPágina de preços com listagem de produtos
/api/checkoutPOSTCria uma nova sessão de checkout
/api/webhookPOSTTrata webhooks do Dodo Payments
/api/customer-portalPOSTGera URL do portal do cliente

Personalização

Atualizar Informações do Produto

Edite internal/lib/products.go para modificar:
  • IDs de produto (do seu painel Dodo)
  • Preços
  • Recursos
  • Descrições
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é-preencher Dados do Cliente

No templates/index.html, substitua os dados do cliente codificados com seus dados reais de usuário:
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
};
Em um aplicativo de produção, você injetaria dinamicamente esses valores do seu sistema de autenticação.

Eventos de Webhook

O boilerplate demonstra como lidar com eventos de webhook em internal/api/webhook.go. Os eventos suportados incluem:
EventoDescrição
subscription.activeDisparado quando uma assinatura se torna ativa
payment.succeededDisparado quando um pagamento é bem-sucedido
Adicione sua lógica de negócios dentro do manipulador de webhook para:
  • Atualizar permissões de usuário em seu banco de dados
  • Enviar e-mails de confirmação
  • Provisionar acesso a produtos digitais
  • Rastrear análises e métricas

Testando Webhooks Localmente

Para desenvolvimento local, use ferramentas como ngrok para expor seu servidor local:
ngrok http 8000
Atualize a URL do webhook em seu Painel do Dodo Payments:
https://your-ngrok-url.ngrok.io/api/webhook

Implantação

Compilar para Produção

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

Implantar no Vercel

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

Docker

Crie um 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"]
Compile e execute:
docker build -t go-dodo .
docker run -p 8000:8000 --env-file .env go-dodo

Considerações para Produção

Antes de implantar em produção:
  • Troque DODO_PAYMENTS_ENVIRONMENT por live_mode
  • Use chaves de API de produção do painel
  • Atualize a URL do webhook para seu domínio de produção
  • Habilite HTTPS em todos os endpoints

Resolução de Problemas

Garanta que os módulos Go sejam baixados corretamente:
go mod tidy
go mod download
Causas comuns:
  • ID de produto inválido - verifique se ele existe no seu painel Dodo
  • Chave de API ou ambiente incorreto em .env
  • Confira os logs do servidor para mensagens detalhadas de erro
Para testes locais, use ngrok para expor seu servidor:
ngrok http 8000
Atualize a URL do webhook no seu painel Dodo para a URL do ngrok. Certifique-se de atualizar seu arquivo .env com a chave de verificação correta do webhook.
Certifique-se de executar o servidor a partir do diretório raiz do projeto ou que o caminho das templates esteja corretamente configurado no seu código.

Saiba Mais

Suporte

Precisa de ajuda com o boilerplate?