Pular para o conteúdo principal

Repositório do GitHub

Boilerplate mínimo em 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 de API sem problemas.

Recursos

  • Configuração Rápida - Comece em menos de 5 minutos
  • Integração de Pagamento - Fluxo de checkout pré-configurado usando o SDK dodopayments-go
  • UI Moderna - Página de preços limpa e com tema escuro com templates HTML
  • Manipulação de Webhook - Verifique e processe eventos de pagamento com segurança
  • Portal do Cliente - Gerenciamento de assinatura autoatendido
  • Melhores Práticas de Go - Arquitetura limpa com cmd, internal, e templates
  • Checkout Pré-preenchido - 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 o Repositório

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

Instalar Dependências

make install
Ou manualmente:
go mod download
3

Obter Credenciais da API

Inscreva-se em Dodo Payments e obtenha suas credenciais no painel:
Certifique-se de que você está em Modo de Teste enquanto desenvolve!
4

Configurar Variáveis de Ambiente

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 comite seu arquivo .env no controle de versão. Ele já está incluído em .gitignore.
5

Adicione Seus Produtos

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

Execute o Servidor de Desenvolvimento

make run
Ou manualmente:
go run cmd/server/main.go
Abra http://localhost:8000 para ver sua página de preços!
Você deve ver uma página de preços com tema escuro com 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/checkoutPOSTCriar uma nova sessão de checkout
/api/webhookPOSTManipular webhooks do Dodo Payments
/api/customer-portalPOSTGerar URL do portal do cliente

Personalização

Atualizar Informações do Produto

Edite internal/lib/products.go para modificar:
  • IDs dos produtos (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

Em templates/index.html, substitua os dados do cliente codificados com os dados reais do seu usuário:
const customerData = {
    name: "John Doe",       // Replace with actual logged-in user's name
    email: "[email protected]"  // 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 manipular eventos de webhook em internal/api/webhook.go. Os eventos suportados incluem:
EventoDescrição
subscription.activeAcionado quando uma assinatura se torna ativa
payment.succeededAcionado 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:
  • Mude DODO_PAYMENTS_ENVIRONMENT para live_mode
  • Use chaves da API de produção do painel
  • Atualize a URL do webhook para seu domínio de produção
  • Habilite HTTPS para todos os endpoints

Resolução de Problemas

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

Saiba Mais

Suporte

Precisa de ajuda com o boilerplate?