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).