Skip to main content
Se você já tem suas credenciais (API Key e API Secret), pode integrar a Avantti Finance ao seu projeto com um único prompt. Copie o texto abaixo, cole no seu assistente de IA (Cursor, Claude, etc.) e substitua os placeholders pelas suas credenciais.
O prompt foi escrito para que o assistente trate a segurança automaticamente: as credenciais vão para variáveis de ambiente (.env), o .env é adicionado ao .gitignore, e nada sensível é commitado. Ainda assim, confira o resultado antes de subir para produção.

O prompt

Você vai integrar a API de pagamentos da Avantti Finance (https://api.avanttifinance.com) ao meu projeto.

CREDENCIAIS (substitua pelos valores reais e NÃO commite):
- AVANTTI_API_KEY = "SUBSTITUA_PELA_SUA_API_KEY"
- AVANTTI_API_SECRET = "SUBSTITUA_PELO_SEU_API_SECRET"

REGRAS DE SEGURANÇA (obrigatórias):
1. Salve as credenciais em variáveis de ambiente num arquivo .env (nunca hardcode no código).
2. Garanta que o .env está no .gitignore. Crie um .env.example com placeholders.
3. Toda a comunicação com a API deve acontecer no backend, nunca no frontend.

CONTEXTO DA API:
- Autenticação em 2 etapas: faça POST https://api.avanttifinance.com/auth com HTTP Basic
  (usuário = API Key, senha = API Secret). A resposta é { success, token, tokenType, expiresIn }
  onde expiresIn está em milissegundos. Use o token como "Authorization: Bearer <token>" nas demais rotas.
- O token expira rápido: implemente cache do token em memória e renove automaticamente quando expirar.
- Todos os valores monetários são em CENTAVOS (8000 = R$ 80,00).

IMPLEMENTE um módulo de pagamentos com:

1) Autenticação automática (função interna que obtém/renova o token Bearer).

2) PIX IN — criar cobrança:
   POST /v1/pix/in/qrcode
   Body: {
     "amountInCents": number,            // em centavos
     "description"?: string,
     "postbackUrl"?: string,             // URL de webhook
     "customer": {
       "name"?: string, "email"?: string,
       "documentType": "cpf" | "cnpj", "document": string, "phone"?: string
     },
     "items"?: [{ "title": string, "tangible": boolean, "quantity": number, "amountInCents": number }],
     "seller"?: { "name": string, "documentType": "cpf"|"cnpj", "document": string }
   }
   Resposta: data.pix.emv (copia e cola) e data.pix.qrCode.
   Observação: se enviar items, a soma de amountInCents*quantity deve ser igual a amountInCents.

3) PIX OUT — criar transferência (saque):
   POST /v1/pix/out/transfer
   Header OBRIGATÓRIO: "X-Idempotency-Key: <chave-única-por-transferência>"
   Body: { "pixKey"?: string, "amount": number /* centavos */, "password": string /* 6 dígitos */ }
   Gere a X-Idempotency-Key automaticamente (ex.: timestamp + random) e permita passá-la manualmente.

4) Consulta de saque:
   GET /v1/transfers/{transfer_id} -> retorna { amount, createdAt, pixKey, status }.

TRATAMENTO DE ERROS:
- Em erro a API retorna { success: false, message }. Propague a message de forma legível.
- Trate 401 (token expirado/credenciais inválidas) renovando o token e, se persistir, avisando o usuário.

ENTREGÁVEIS:
- Crie o módulo de integração na linguagem/stack que este projeto já usa.
- Crie funções: createPixIn(params), createPixOut(params), getTransfer(id).
- Adicione um exemplo de uso comentado e instruções rápidas no README.
- Não use as credenciais diretamente no código: leia sempre de process.env (ou equivalente da stack).

Alternativa: usar o MCP

Se você usa um assistente compatível com MCP, em vez de gerar código você pode simplesmente instalar o nosso servidor MCP e pedir as operações em linguagem natural — sem escrever integração manual.