Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.garu.com.br/llms.txt

Use this file to discover all available pages before exploring further.

Visão Geral

Antes de processar pagamentos reais, siga este checklist para garantir que sua integração está pronta para produção.
Pagamentos em produção são reais. Certifique-se de testar completamente antes de usar chaves sk_live_.

Checklist de Produção

1. Autenticação

Veja a documentação de Autenticação para entender o sistema de chaves de API.
1

Crie chaves de produção

No Dashboard, vá em ConfiguraçõesDesenvolvedores e crie uma chave sk_live_.
2

Configure variáveis de ambiente

Armazene suas chaves de forma segura:
# .env.production
GARU_API_KEY=sk_live_sua_chave_producao
WEBHOOK_SECRET=seu_segredo_webhook
3

Nunca exponha chaves no frontend

Verifique que nenhuma chave aparece em código JavaScript do cliente ou em repositórios públicos.

2. Produtos

Veja a API de Produtos para criar e gerenciar produtos.
  • Todos os produtos criados com chaves sk_live_
  • Preços corretos (conferir valores)
  • Descrições e nomes revisados
  • Imagens funcionando (URLs públicas)
  • URLs de retorno apontando para produção

3. Webhooks

Consulte a documentação de Webhooks para implementação completa.
1

Configure o endpoint de produção

Use uma URL HTTPS do seu servidor de produção:
https://seusite.com/webhooks/garu
2

Valide assinaturas

Implemente validação de assinatura para todos os webhooks:
const crypto = require('crypto');

function validarAssinatura(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(payload))
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
3

Implemente idempotência

Evite processar o mesmo webhook duas vezes:
async function processarWebhook(data) {
  const jaProcessado = await verificarProcessado(data.id);
  if (jaProcessado) return;

  await processarPagamento(data);
  await marcarComoProcessado(data.id);
}
4

Responda rapidamente

Retorne 200 em menos de 5 segundos. Processe lógica pesada de forma assíncrona.

4. Tratamento de Erros

Consulte a Solução de Problemas para erros comuns e soluções.
  • Retry com backoff exponencial para erros 429
  • Logs detalhados para debugging
  • Alertas para erros críticos
  • Fallback para falhas de webhook
async function criarProdutoComRetry(dados, tentativas = 3) {
  for (let i = 0; i < tentativas; i++) {
    try {
      return await criarProduto(dados);
    } catch (error) {
      if (error.status === 429 && i < tentativas - 1) {
        await sleep(Math.pow(2, i) * 1000);
        continue;
      }
      throw error;
    }
  }
}

5. Segurança

  • HTTPS em todos os endpoints
  • Chaves de API em variáveis de ambiente
  • Validação de assinatura em webhooks
  • Logs não expõem dados sensíveis
  • Acesso ao Dashboard com 2FA habilitado

6. Monitoramento

Logs

Configure logs para todas as requisições à API e webhooks recebidos.

Alertas

Configure alertas para erros de pagamento e falhas de webhook.

Dashboard

Monitore transações e métricas no Dashboard da Garu.

Uptime

Monitore a disponibilidade do seu endpoint de webhook.

Testes Finais

Antes de ir ao ar, execute estes testes:

Teste de Pagamento Completo

1

Crie um produto de teste

Com chave sk_live_, crie um produto de R$ 5,00 (valor mínimo).
2

Complete um pagamento real

Use seu próprio cartão ou PIX para fazer um pagamento real.
3

Verifique o webhook

Confirme que seu servidor recebeu e processou o webhook corretamente.
4

Verifique a entrega

Confirme que o acesso foi liberado ou o produto foi entregue.
5

Teste o estorno

Solicite estorno pelo Dashboard e verifique se seu sistema trata corretamente.

Teste de Falhas

  • Testar comportamento quando webhook falha
  • Testar rate limiting (429)
  • Testar com chave inválida
  • Testar com dados inválidos

Migração de Teste para Produção

// config.js
const config = {
  development: {
    apiKey: process.env.GARU_TEST_KEY,
    baseUrl: 'https://garu.com.br/api'
  },
  production: {
    apiKey: process.env.GARU_LIVE_KEY,
    baseUrl: 'https://garu.com.br/api'
  }
};

module.exports = config[process.env.NODE_ENV || 'development'];
A URL base é a mesma para teste e produção. A diferença está apenas na chave de API usada.

Pós-Lançamento

Primeiros Dias

  • Monitore de perto todas as transações
  • Verifique se webhooks estão sendo recebidos
  • Responda rapidamente a problemas reportados

Manutenção Contínua

  • Rotacione chaves de API periodicamente
  • Mantenha logs por pelo menos 90 dias
  • Revise métricas de conversão
  • Atualize integrações conforme necessário

Suporte

Se encontrar problemas em produção:
  1. Verifique os logs do seu servidor
  2. Consulte a Solução de Problemas
  3. Acesse o Dashboard para ver status das transações
  4. Entre em contato: contato@garu.com.br

Suporte Técnico

Nossa equipe está disponível para ajudar com sua integração.