SonaCORE

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 é simulado
Todo o trilho. Este roteiro precisa de um simulador de patrocinador Pix rodando localmente, e esse simulador não está publicado no ambiente de avaliação. Por isso ele só roda em um stack local. Não há patrocinador Pix contratado.

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.

  1. 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 up
  2. Criar 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=
    corpo
    { "account_id": "<conta>", "key_type": "EVP" }
  3. 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}
    corpo
    {
      "pix_key": "<chave>",
      "amount": { "currency": "BRL", "value": 12345 },
      "end_to_end_id": "<e2e>"
    }
  4. 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 desconhecida
  5. Enviar um pagamento

    Uma obrigação no trilho PIX com o recebedor como parte externa. Ela fica pendente até o trilho responder.

    POST /v1/obligations
    corpo
    {
      "rail": "PIX",
      "amount": { "currency": "BRL", "value": 7500 },
      "debtor": { "kind": "account", "account_id": "<devedor>" },
      "creditor": { "kind": "external", "external_id": "<chave do recebedor>" }
    }
  6. 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}
  7. 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)
    corpo
    { "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.

local
./scripts/devlocal.sh up
./scripts/demo-pix-sim.sh