Esta página trata do provisionamento. Participantes indiretos explica o que uma participação hospedada é, como um crédito de entrada chega até ela, como o seu ciclo de vida se comporta e cada recusa que ela pode responder.
Para dar a um participante indireto uma credencial própria do Pix JD, veja Parceiros no Pix JD.
Passo 1: a chave de criptografia do segredo de entrega
No SaaS, não há nada a fazer neste passo. A Lerian configura a chave para o seu tenant. Siga para o passo 2. O resto deste passo vale para um deploy self-hosted.
POST. Essa é toda a recuperação.
Este
409 significa “provisione a chave”, não “tente de novo mais tarde”. O trilho procurou a chave e constatou que ela não existe. Apenas um operador pode adicioná-la. Repetir a chamada sem essa mudança falha da mesma forma. É por isso que o código é um 409 e não diz nada sobre nova tentativa.O irmão dele é 503 PIX-0123, “Indirect delivery key source unavailable”. Você o recebe quando o trilho não conseguiu ler a chave, porque a fonte de chaves dele recusou ou não respondeu. O trilho então não sabe que a chave não existe, porque a leitura não terminou. A resposta nomeia a dependência que falhou, e tentar de novo é a ação certa. Os dois códigos recusam o cadastro e não armazenam nada. O par permite distinguir uma configuração incompleta de uma indisponibilidade.
O formato: exatamente 64 caracteres hexadecimais. É uma chave AES-256 (32 bytes), codificada em hexadecimal. Isso são 64 caracteres hexadecimais, não 63 e não 65.
Um valor ausente, em branco ou malformado produz o mesmo
409 PIX-0107. Não há padrão e não há degradação para guardar o segredo em texto claro. Isso é deliberado: um padrão silencioso aqui guardaria segredos de clientes criptografados com uma chave que todo mundo conhece.409 PIX-0107 para 201.
Passo 2: declare que este tenant hospeda participantes indiretos
Definaplugin-br-pix-jd.indirects/enabled como true. Esta é uma escrita de configuração, então exige Plugin PIX JD Editor.
204 quando aceita o valor. O valor é um booleano JSON, sem aspas: {"value":"true"} responde 400.
O cadastro funciona com a postura desligada, então você pode cadastrar participantes antes de habilitá-la. A postura controla os caminhos do dinheiro e o certificado de QR próprio do passo 4. Com a postura desligada, o passo 4 responde 422 PIX-0111. Antes de cadastrar alguém mostra o que cada metade faz.
A leitura falha fechada. Quando um caminho do dinheiro “volta ao comportamento de direto” e ninguém mudou a chave, essa é a causa. Olhe o systemplane.
Passo 3: cadastre um participante indireto
Uma chamada faz toda a montagem. Ela checa o ISPB, cria a conta de liquidação@pi_{ispb} no Midaz e marca a participação como ativa. Ela exige Plugin PIX JD Contributor ou Plugin PIX JD Editor.
Um
201 significa que a participação está pronta para uso. O status é sempre ACTIVE. Você não precisa ficar consultando.
Participantes indiretos traz as recusas, as ações de ciclo de vida e como ler o registro de volta.
Passo 4: configure o certificado de QR próprio dele, se ele tiver um
Pule este passo para um participante indireto que não tem certificado de QR próprio na JD. Os QR codes dinâmicos dele são então assinados com o seu certificado e servidos no seu host, como para os seus próprios clientes. Por que este passo existe. Alguns participantes indiretos têm o próprio certificado de QR na JD. A JD então assina os QR codes dinâmicos deles com esse certificado. O app do pagador confere a assinatura contra o conjunto de chaves que ele encontra no mesmo host do payload do QR. Então o payload e o conjunto de chaves desse participante devem estar no host do próprio participante, não no seu. Acesso: Plugin PIX JD Contributor ou Plugin PIX JD Editor.1
Informe o host do participante
Envie
PATCH /v1/indirects/{indirectId} com o indirectId do cadastro:O orçamento de 77 caracteres. A JD limita a URL de um payload de QR a 77 caracteres. O plugin a monta como
publicBaseUrl, depois QRCODE_PAYLOAD_PATH, depois, no SaaS, o ISPB da sua instituição, depois o tipo da cobrança e um identificador de até 22 caracteres. Com o QRCODE_PAYLOAD_PATH padrão, qr, sobram 37 caracteres para o host. Um deploy com um QRCODE_PAYLOAD_PATH mais longo deixa menos. Então cada QR code dinâmico desse participante responde 422 PIX-0112. Escolha o host dentro desse orçamento antes de cadastrá-lo.Um 200 retorna a participação. Confira que qrCertificate.ownCertificate é true e que qrCertificate.publicBaseUrl é o host que você enviou.2
Publique o conjunto de chaves do participante no host dele
O participante não consegue gerar o próprio conjunto de chaves, porque a JD guarda o certificado e assina. Leia o conjunto de chaves do plugin:A resposta é um documento
application/jwk-set+json. Sirva esses bytes como estão, com esse media type, em https:// mais o host do participante mais / mais QRCODE_JWK_PATH. Com o QRCODE_JWK_PATH padrão, isso é https://pix.indirect.example.com/v1/qrcodes/jwks. No SaaS, o caminho termina com mais um segmento: o ISPB da sua instituição, por exemplo https://pix.indirect.example.com/v1/qrcodes/jwks/12345678. Leia o conjunto de chaves de novo cada vez que a JD renovar o certificado do participante.O header X-JWK-Set-Freshness diz fresh ou stale. stale significa que a JD não respondeu e o plugin serviu a última cópia dele. Leia de novo antes de publicar.indirectId desse participante, o plugin não serve o payload dele. A resposta traz payloadJws, e o participante o serve em payloadUrl no próprio host. Criar um QR code dinâmico descreve essa resposta, e como recuperar um payload que você não recebeu.
Passo 5: coloque saldo na posição
O cadastro cria a conta@pi_{ispb} vazia. Um Pix recebido a credita, mas um pagamento de saída precisa de saldo antes. Sem fundos, todo pagamento que sai por aquele participante indireto falha por saldo insuficiente. Você faz a carga inicial. Ela espelha o arranjo: na JD você administra o limite daquela instituição, e no seu ledger você coloca saldo na posição dela.
A mecânica é a mesma do passo de saldo de Configuração do trilho. Lance uma transação do Midaz a partir de @external/BRL, com as mesmas variáveis daquela página. Apenas o destino muda, para o piAccountAlias do cadastro. É uma transação do Midaz, então exige Midaz Editor ou Midaz Contributor.
close com 409 PIX-0096 enquanto a conta @pi tem fundos, disponíveis ou retidos, e nomeia a causa. Zere a posição antes de encerrar. Uma posição com saldo mantém a participação aberta até você zerá-la.
Como checar. Leia o saldo da conta de volta no Midaz. A checagem mais segura é por comportamento: um pagamento de saída pelo participante indireto para de ser recusado por saldo insuficiente.
Declare o cliente do participante indireto
Um participante indireto mantém os clientes dele no próprio core, não nos seus livros. Uma requisição para um desses clientes declara o cliente, e não nomeia nenhuma conta sua:
Cada requisição também carrega o
indirectId. O plugin não lê nenhum registro do cliente declarado, e o envia à JD.
- Uma requisição com o cliente declarado e uma conta (
accountId, ouaccount_idna consulta), ou sem nenhum dos dois, responde400 PIX-0061. - Uma conta funciona quando a sua própria credencial envia a requisição. Com um parceiro por trás da requisição, a conta responde
400 PIX-0061. - O plugin não confere nenhum limite de conta em uma ordem com um pagador declarado. O saldo da posição
@pi_{ispb}limita a ordem. - Um
accountType4declarado responde422 PIX-0098.
Devolver um Pix que um participante indireto recebeu
Um Pix para um cliente de um participante indireto cai na posição@pi_{ispb} desse participante. Para devolvê-lo, envie POST /v1/refunds com o indirectId desse participante. A devolução então debita essa posição. Ela não precisa de accountId: quem devolve é o recebedor que o Pix original nomeia. Com um parceiro por trás da requisição, um accountId responde 400 PIX-0061.
O plugin recusa a devolução nestes casos, e não move dinheiro:
422 PIX-0135: o Pix original caiu na posição de um participante indireto, e a devolução não temindirectId.404 PIX-0147: a devolução nomeia outro participante indireto, ou o Pix original caiu em uma conta direta e a devolução tem umindirectId.
indirectId passa pelas mesmas checagens de uma ordem de pagamento. A postura de hospedagem deve estar ligada, e a participação deve estar ACTIVE.
As chaves do systemplane do namespace indirects
Há cinco chaves, todas em plugin-br-pix-jd.indirects, e todas elas sempre existem. As três chaves de entrega e de resolução só produzem efeito quando enabled é true, porque elas ajustam os caminhos do dinheiro. validate_ispb_on_jd é a exceção. Ela controla um passo do cadastro, que funciona enquanto enabled ainda é false.
204 quando aceita um valor e 400 quando o validador o recusa. Booleanos e inteiros vão sem aspas. Um valor fora da faixa responde 400. O plugin não o ajusta ao limite.
Os dois passos que podem parar o fluxo de indiretos por conta própria não estão neste namespace. A identidade é a chave do systemplane
tenancy/jd_integration_binding. Sem ela, todo pagamento falha com 409 PIX-0092. A chave de criptografia vem de uma variável de deploy ou de um cofre de segredos. Sem ela, todo cadastro falha com 409 PIX-0107.
