cerebro-vip INEMA.CLUB
inícioINEMA.DEV Desenvolvimento

Tópico sobre a criação de um simulador local da API Pix do Banco…

INEMA.DEV Desenvolvimento · 2025-11-12 · ~6 min · ver no Telegram ↗

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_payload do 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)

  1. Usuário preenche cadastro: valor=29.90, solicitacao=Pedido123, link_final=https://meuapp/entrega/123
  2. Frontend envia PUT /pix/v2/cob?txid=TESTE-0001 → backend gera:
  • pixCopiaECola (string)
  • qrCodeImage (base64)
  • location (mock URL)
  • salva no DB com status=ATIVA 3. 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 atualiza status=PAGA e paid_at 5. Backend dispara webhook para app (ou para itself) com o payload PIX_LIQUIDADO 6. Front, ouvindo via websocket ou polling, recebe a notificação e exibe link_final liberado

11 — Endpoints mínimos sugeridos (resumo)

  • POST /auth/token — obter token mock
  • PUT /pix/v2/cob?txid={txid} — criar cobrança
  • GET /pix/v2/loc/{locId} — consultar cobrança
  • DELETE /pix/v2/cob?txid={txid} — cancelar
  • POST /internal/simulate-pay — forçar liquidação no mock
  • POST /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) ou qrcode (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 ATIVAPAGA no DB
  • [ ] link_final

cal/pix/v2/lo

"mock-bank.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:

  1. Frontend web (UI) — formulário de cadastro, tela do QR, status em tempo real. (React/Vue simples ou HTML+JS)
  2. 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:

  1. Usuário cria cobrança pela UI → backend cria registro e retorna pixCopiaECola + qrCodeImage (base64/url).
  2. Tela mostra QR; pagador faz o Pix (simulado).
  3. Serviço de simulação liquida a cobrança e chama o webhook do frontend/backend.
  4. 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-0001
  • valor (decimal) — ex.: 29.90
  • moeda (string) — "BRL"
  • solicitacao_pagador (string)
  • devedor_nome (string, opt)
  • devedor_cpf_cnpj (string, opt)
  • expiracao_segundos (int)
  • status (string) — ATIVA, PAGA, VENCIDA, CANCELADA
  • pix_copia_e_cola (text)
  • qr_code_base64 (text) — image/png base64
  • location (string) — simulação de URL do Inter
  • created_at (timestamp)
  • paid_at (timestamp, opt)
  • link_final (string, opt) — URL a ser liberada após confirmação
  • meta (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

chatgpt.com ↗

1

Recursos

↑ voltar ao topo · ver no Telegram ↗