Só em ambiente local
Pix, entrada e saída
Chaves Pix, um crédito recebido, um pagamento enviado, e o que acontece quando o trilho recusa.
O que este roteiro prova
- Um crédito Pix entra como evidência conciliada com a chave, e não como uma escrita direta em saldo.
- Uma chave trocada não redireciona dinheiro em trânsito: o crédito para a chave antiga é resolvido pelo que valia no momento.
- Uma falha do trilho é visível como estado da obrigação, com o código de motivo, e não é escondida como concluída.
Os passos
Os corpos abaixo estão abreviados nos identificadores, que você substitui pelos que as respostas anteriores devolvem. Cada escrita que cria valor precisa de um cabeçalho Idempotency-Key. Este roteiro roda contra um stack local, não contra o ambiente de avaliação.
Subir o ambiente local
O roteiro precisa do stack completo e do simulador de patrocinador. Sem o simulador, os passos de trilho não têm com quem falar.
./scripts/devlocal.sh upCriar uma chave Pix
Uma chave aleatória gerada pelo ledger, ou uma chave que você informa. A consulta resolve chave para conta.
POST /v1/pix/keys, depois GET /v1/pix/keys/lookup?key={ "account_id": "<conta>", "key_type": "EVP" }Receber um crédito
O simulador anuncia um Pix recebido para aquela chave. O ledger o registra como evidência, concilia com a conta e cria as obrigações.
POST /sim/inbound-pix (simulador), depois GET /v1/evidences/{evidence_id}{ "pix_key": "<chave>", "amount": { "currency": "BRL", "value": 12345 }, "end_to_end_id": "<e2e>" }Um crédito para uma chave que não existe
Não é descartado nem creditado no escuro. Fica visível como evidência não conciliada, para alguém decidir.
POST /sim/inbound-pix (simulador) com uma chave desconhecidaEnviar um pagamento
Uma obrigação no trilho PIX com o recebedor como parte externa. Ela fica pendente até o trilho responder.
POST /v1/obligations{ "rail": "PIX", "amount": { "currency": "BRL", "value": 7500 }, "debtor": { "kind": "account", "account_id": "<devedor>" }, "creditor": { "kind": "external", "external_id": "<chave do recebedor>" } }O trilho liquida
O simulador confirma. A obrigação chega a FINAL com resultado SETTLED. Note que FINAL sozinho não significa liquidado: é o resultado que diz.
POST /sim/outbound/{ref}/settle (simulador), depois GET /v1/obligations/{obligation_id}O trilho recusa
Com um código de motivo, por exemplo conta do recebedor inválida. A obrigação mostra a falha em vez de sumir.
POST /sim/outbound/{ref}/fail (simulador){ "reason_code": "AC03", "reason_message": "Creditor account invalid" }
A versão executável
Este roteiro é a espinha de scripts/demo-pix-sim.sh, no repositório do núcleo. Esse script roda na nossa integração contínua a cada mudança relevante, então uma divergência entre o que está escrito aqui e o que o sistema faz quebra o build antes de chegar a esta página.
./scripts/devlocal.sh up
./scripts/demo-pix-sim.sh