Tópico sobre a criação de um simulador local da API Pix do Banco…
INEMA
github.com/inematds/APIPXINTER ↗
aparece e abre corretamente
* [ ] Cancelamento atualiza status para CANCELADA
* [ ] Reenvio de webhook (idempotência) não cria duplicatas
* [ ] Testes com expiração: cobrança expira e não aceita pagamento (se desejar)
* [ ] Logs de auditoria registrados
15 — Observações finais e recomendações⌗
- Para aprender e prototipar, o mock é a forma mais segura e rápida.
- Se no futuro você quiser migrar para o Banco Inter real, o ideal é desenhar um adapter no backend: no ambiente de produção, esse adapter chama o Inter real (mTLS/OAuth) e em modo dev aponta para o mock. Assim a UI e DB não mudam.
- Ao implementar, cuide de testes automatizados para fluxos de pagamento e webhooks.
Se quiser, no próximo passo eu posso:
- Gerar para você um documento PDF/README com esse relatório formatado (se pedir, eu crio o conteúdo pronto para salvar).
- Ou ainda, sem criar nada, posso escrever os contratos OpenAPI (esquema de endpoints) no texto aqui para você copiar — útil se for passar para dev.
Qual desses dois prefere? (PDF/README pronto para baixar ou OpenAPI spec text para colar?)
ogs, auditoria e idempotência
- Idempotência: aceitar reenvios do webhook; atualizar estado apenas se status mudar para
PAGA(não duplicar). - Logs: registrar todos os webhooks recebidos/enviados, mudanças de status e respostas.
- Audit trail: salvar
txid,endToEndId,raw_payloaddo webhook.
9 — Segurança e cuidados (importante)⌗
- Nunca usar credenciais reais de banco no mock. Tudo local e sem exposição.
- Se colocar a interface na internet (mesmo para testes), proteger com autenticação (senha ou OAuth).
- Armazenar tokens/segredos em variáveis de ambiente, não em repositório.
- Sanitizar qualquer URL que for liberada no
link_final. - Cuidado com geração de QR que imite payloads reais — se você criar QR que pode ser pago por apps reais, isso criará transferências reais quando conectado a contas reais; para testes mantenha valores simbólicos ou utilize QR “fake” que não passa pela rede do Bacen.
- Se quiser integração futura com Inter real, migre etapa a etapa, e troque apenas o “adapter” do backend que chama o mock para chamar o Inter real.
10 — Exemplo de sequência de uso (exemplo prático)⌗
- Usuário preenche cadastro:
valor=29.90,solicitacao=Pedido123,link_final=https://meuapp/entrega/123 - Frontend envia
PUT /pix/v2/cob?txid=TESTE-0001→ backend gera:
pixCopiaECola(string)qrCodeImage(base64)location(mock URL)- salva no DB com
status=ATIVA3. Front mostra QR. Cliente faz “pagamento” (no mundo real esse passo seria o cliente lendo QR com app bancário; aqui clique em Simular Pagamento) 4. Simular Pagamento chama/internal/simulate-pay→ backend atualizastatus=PAGAepaid_at5. Backend dispara webhook para app (ou para itself) com o payloadPIX_LIQUIDADO6. Front, ouvindo via websocket ou polling, recebe a notificação e exibelink_finalliberado
11 — Endpoints mínimos sugeridos (resumo)⌗
POST /auth/token— obter token mockPUT /pix/v2/cob?txid={txid}— criar cobrançaGET /pix/v2/loc/{locId}— consultar cobrançaDELETE /pix/v2/cob?txid={txid}— cancelarPOST /internal/simulate-pay— forçar liquidação no mockPOST /webhook/pix— endpoint do seu sistema que o mock chamará (este é o receptor)
12 — Tech stack sugerido (rápido)⌗
- Backend: Node.js (Express) ou Python (FastAPI/Flask) — ambos fáceis para protótipo.
- DB: SQLite (local) ou Postgres (produção).
- Frontend: React com Vite, ou simples HTML+VanillaJS se for mínimo.
- QR generation:
qrcode(Python) ouqrcode(Node package). - Websockets (opcional): Socket.IO para atualizar status em tempo real.
- Deploy local: Docker-compose para empacotar tudo.
13 — Exemplos de payloads prontos (copiar/colar)⌗
Criar cobrança (request)⌗
PUT /pix/v2/cob?txid=TESTE-20251112-0001
Content-Type: application/json
Authorization: Bearer mocked-token
Body:
{
"calendario": { "expiracao": 300 },
"valor": { "original": "1.00" },
"devedor": { "cpf": "00000000000", "nome": "Cliente Teste" },
"chave": "11122233344",
"solicitacaoPagador": "Teste de integração - pedido 1",
"link_final": "https://exemplo.com/sucesso/1"
}
Simular pagamento (request)⌗
POST /internal/simulate-pay
Content-Type: application/json
Authorization: Bearer mocked-token
Body:
{
"txid": "TESTE-20251112-0001",
"valor_pago": "1.00",
"payer_name": "Pagador Teste"
}
Webhook recebido pelo cliente (exemplo)⌗
{
"evento": "PIX_LIQUIDADO",
"pix": [{
"endToEndId": "E20251112TESTE0001",
"txid": "TESTE-20251112-0001",
"valor": "1.00",
"horario": "2025-11-12T15:34:00Z",
"payer": {"nome":"Pagador Teste", "cpf":"00000000000"}
}]
}
14 — Checklist de testes (QA)⌗
- [ ] Criar cobrança com txid único → retorna pixCopiaECola + QR (base64)
- [ ] QR renderiza corretamente no browser
- [ ] Copia-e-cola funciona (campo copiar no front)
- [ ] Simular pagamento → webhook disparado e recebido
- [ ] Status muda de
ATIVA→PAGAno DB - [ ]
link_final
cal/pix/v2/lo
Vou te entregar um relatório de instrução completo (em português) para simular todo o fluxo do Banco Inter sem precisar abrir conta lá, e também para criar uma interface web leve que faça: cadastro → gerar QR dinâmico (simulado) → enviar/mostrar QR para o pagador → “esperar” confirmação do banco (simulada) → liberar e mostrar um link.
Você pediu apenas o relatório (não vou criar código/serviços por você). O documento abaixo traz arquitetura, modelos de dados, contratos de API do mock, payloads de exemplo, UI/UX, sequência de testes e orientações de segurança — tudo pronto para você ou um dev implementar/rodar localmente.
Relatório — Simulador Pix (estilo Banco Inter) + Interface Web (fluxo completo)⌗
1 — Objetivo resumido⌗
Criar um ambiente de simulação que reproduz o comportamento da API Pix do Banco Inter (cobrança via txid, QR dinâmico, webhook de confirmação) sem conta bancária, e uma interface web onde:
- Você cadastra a cobrança (cliente, valor, expiração).
- Ao salvar, abre a tela com o QR (imagem + copia-e-cola) para o pagador.
- O sistema “aguarda” confirmação do banco (simulada) e, quando confirmada, libera um link final na tela.
2 — Visão geral da arquitetura (alto nível)⌗
Componentes:
- Frontend web (UI) — formulário de cadastro, tela do QR, status em tempo real. (React/Vue simples ou HTML+JS)
- Backend API (simulador Inter) — endpoints REST que simulam:
- Autenticação (token)
- Criação de cobrança (
/pix/v2/cob?txid=...) - Consulta de loc (
/pix/v2/loc/{id}) - Notificações (webhook simulator) 3. Banco de dados simples — sqlite/postgres para armazenar cobranças, txid, status, usuário, link final. 4. Serviço de simulação de liquidação — job que “liquida” cobranças de teste (manual button ou agendador). 5. Gerador de QR — biblioteca que converte payload EMV/BRCode em imagem PNG/SVG. 6. Mock Webhook Receiver (no frontend/backend) — para simular callback do banco. 7. Optional: Proxy de integração futura — ponto onde, no futuro, trocará-se o mock pelo Inter real.
Fluxo:
- Usuário cria cobrança pela UI → backend cria registro e retorna
pixCopiaECola+qrCodeImage(base64/url). - Tela mostra QR; pagador faz o Pix (simulado).
- Serviço de simulação liquida a cobrança e chama o webhook do frontend/backend.
- Backend atualiza status → frontend exibe link liberado.
3 — Modelos de dados (DB schema mínimo)⌗
Tabela cobrancas:
id(uuid, PK)txid(string, único) — ex:TESTE-20251112-0001valor(decimal) — ex.: 29.90moeda(string) — "BRL"solicitacao_pagador(string)devedor_nome(string, opt)devedor_cpf_cnpj(string, opt)expiracao_segundos(int)status(string) —ATIVA,PAGA,VENCIDA,CANCELADApix_copia_e_cola(text)qr_code_base64(text) — image/png base64location(string) — simulação de URL do Intercreated_at(timestamp)paid_at(timestamp, opt)link_final(string, opt) — URL a ser liberada após confirmaçãometa(json/text) — campo livre
Tabela users (se desejar autenticação):
id,name,email,password_hash
4 — Contratos da API do Mock (endpoints e exemplos)⌗
4.1 Autenticação (opcional)⌗
POST /auth/token
-
Request (x-www-form-urlencoded):
-
client_id,client_secret - Response:
{
"access_token": "mocked-token-abc",
"token_type": "bearer",
"expires_in": 3600
}
Obs: para simular mTLS, não é necessário; apenas aceitar token.
4.2 Criar cobrança (equivalente a Inter PUT /pix/v2/cob?txid=)⌗
PUT /pix/v2/cob?txid={txid}
- Headers:
Authorization: Bearer <token> - Body (JSON):
{
"calendario": { "expiracao": 3600 },
"valor": { "original": "29.90" },
"devedor": { "cpf": "12345678909", "nome": "Maria Silva" },
"chave": "minha-chave-pix@exemplo",
"solicitacaoPagador": "Pagamento pedido #1234",
"link_final": "https://exemplo.com/entrega/1234"
}
- Response (201):
```json { "txid": "pedido1234", "status": "ATIVA", "location":
Simulando API PIX INTER
1