Boa tarde, pessoal.

Acredito que não se fala muito sobre, queria dar uma explicação mais técnica sobre como o PIX (Pagamentos Instantâneos Twitter, acho que o X só está ali para o nome ficar legal) funciona, explicando algumas das principais mensagens, papéis de cada coisa e tudo mais.

O PIX é um sistema de mensageria entre bancos, utilizando o Bacen como roteador e gerenciador do sistema. Nesse sistema, existe a principal parte, na minha visão, que são as ICOM (interfaces de comunicação), por onde as mensagens trafegam.

Para enviar uma mensagem para outro banco, é necessário, utilizando a rfsn (rede interna do bacen), se conectar ao servidor e enviar:

POST /api/v1/in/{ispb}/msgs

assim o bacen envia a mensagem aos outros bancos, que por um long polling, utilizando multiparts (para a retirada de múltiplas mensagens ao mesmo tempo), retira as mensagens para seu banco por meio da inicialização do polling:

GET /api/v1/out/{ispb}/stream/start

e da retirada em si:

GET /api/v1/out/{ispb}/stream/{PI-Pull-Next}

Assim, qualquer banco pode enviar mensagens do PIX para qualquer outro banco. Mas também existem dois canais no PIX, o primário, que realiza os pagamentos instantâneos, tem as mensagens administrativas, etc, e o secundário, que serve para os lotes de pagamentos, como restituição do imposto de renda, benefícios sociais, etc, que é usado primariamente no período da madrugada. Esses dois canais são separados para um não afetar o outro, para seu PIX da ganja não afetar os PIX do pagamento do salário de outra pessoa e vice versa.

Nisso, também pode ocorrer de um banco fazer a comunicação com o Bacen (participante direto), enquanto existem outros bancos registrados nesse banco (participantes indiretos). Então quando se envia um pagamento para uma fintech sem conexão direta com o Bacen, se envia este pagamento para o participante direto que envia para aquela fintech.

Mas quais mensagens são enviadas?

Existem diversas, como o pedido de pagamentos (pacs.008), a aceitação ou rejeição por erro de negócio (pacs.002), a devolução de valores de um pagamento (pacs.004), as mensagens do PIX Automático (sistema de débito automático e boletagem por meio do PIX), as mensagens administrativas (adição de novos bancos, mudança do CNPJ/ISPB de um banco), etc. Todas as mensagens são por meio de XML.

Também existem validações que todos os bancos precisam fazer com as mensagens (por meio dos XSDs do zip ali), hashs das mensagens, verificações com chaves públicas, assinar as mensagens enviadas. Isso tudo para garantir a segurança de quem realmente enviou é o banco que está enviando.

Também existem as mudanças de catálogo, para adições de novas mensagens, alterações nas mensagens, troca do CNPJ alfanumérico, essas coisas, que acontecem com um cronograma do Bacen e são disponibilizadas no site.

Nisso, existem algumas estatísticas sobre o PIX para quem quiser ver também.

E como as chaves do PIX funcionam (DICT)?

Basicamente os bancos registram com o banco central as contas das pessoas, com as chaves que vocês conhecem, fazendo com que, ao invés de enviar um PIX manual (se você colocar a conta, agência, banco, cpf, etc, na hora do envio, você consegue enviar um pagamento sem chave DICT, a pessoa nem precisa ter uma chave para você enviar um PIX), exista uma chamada no bacen para verificar qual é a conta daquela chave, para assim enviar o PIX de fato, é aquela janelinha que abre depois de colocar a chave da conta no aplicativo.

Então é isso, uma explicação mais técnica, porém básica sobre o funcionamento do nosso meio de pagamento, qualquer dúvida que eu possa tirar, falem aí!

Edit: Português e alguns links adicionais