As rotas de callback de cash-in e cash-out são exclusivas do adaptador. Uma aplicação cliente não deve enviar um callback nem declarar um resultado de liquidação do provedor.
Enviar um cash-out em duas etapas
Um cash-out é intencionalmente dividido entre iniciação e processamento.- Chame Iniciar transferência com um novo valor de
X-Idempotency. O plugin valida a requisição e cria uma iniciação de transferência. Ele recusa um destino manual do tipoSLRY(conta-salário). - Chame Processar transferência para essa iniciação. O plugin executa o débito necessário no Midaz e envia o trabalho ao adaptador de conectividade.
- Leia a transferência com Obter transferência. A aceitação do processamento não é um resultado final de pagamento.
- Deixe o adaptador de conectividade entregar o callback terminal. Leia novamente até a transferência chegar a um estado concluído, rejeitado ou outro estado terminal conforme o contrato da resposta.
201 com o status PROCESSING. Um 502 com PIX-0325 significa que o plugin não enviou o pagamento e tentou reverter o débito.
Uma transferência ou devolução que fica em PROCESSING por 90 minutos ou mais pode ser resolvida com Desbloquear transferência ou Desbloquear devolução. O plugin consulta o SPI sobre o resultado e o aplica.
Mantenha o mesmo valor de idempotência somente para repetir a mesma chamada. Um novo pagamento de negócio exige um novo valor.
Receber um cash-in pelo limite do adaptador
O adaptador recebe o evento do lado externo, chama os callbacks internos de aprovação e liquidação do plugin, e o plugin valida e credita o destino por meio do Midaz. Sua aplicação observa esse fluxo pelas leituras públicas da transferência: usedirection=in para listar as transferências que uma conta recebeu. Ela não chama os callbacks de aprovação ou liquidação.
Um cash-in que não pode ser aprovado ou liquidado não é uma decisão de retry do lado do cliente. Inspecione o estado público da operação antes de tomar outra ação.
Verificação de fraude no Pix recebido
A sua instituição pode verificar um Pix recebido com o próprio sistema de fraude antes que o Pix Lerian o aprove. A verificação vem desligada por padrão. Cada tenant liga a verificação na configuração de tempo de execução do SPI.
O Pix Lerian verifica primeiro a conta de destino. Um Pix que a verificação da conta recusa não chega ao seu endpoint. As liquidações do Pix Automático e as devoluções recebidas não são verificadas.
A requisição
O Pix Lerian envia uma requisiçãoPOST com um corpo JSON:
contractVersion:1.0.eventType:PIX_CASHIN.approvalId: um UUID. Toda requisição sobre o mesmo Pix traz o mesmo valor.requestedAterespondBy: timestamps em UTC.respondByé o momento até o qual o Pix Lerian espera a sua resposta.cashin: o valor, oendToEndId, o pagador (debitParty), o recebedor (creditParty) e a conta que recebe o crédito (account).
X-Webhook-Timestamp: o horário Unix, em segundos, da assinatura.X-Webhook-Signature:v1,sha256=<hex>, em que<hex>é o HMAC-SHA256 em minúsculas dev1:<timestamp>.<raw body>comantifraud_hook_secretcomo chave.Idempotency-Key: oapprovalId.- O seu header, quando você configura um.
A resposta
Responda com um status2xx e um objeto JSON com um campo decision:
APPROVEouALLOW: o Pix Lerian aprova o Pix.REJECT,DENYouREVIEW: o Pix Lerian recusa o Pix com o código de motivoFRAD, e nada é creditado.
Idempotency-Key. Dê a mesma decisão todas as vezes.
Quando o seu endpoint não responde
O Pix Lerian aplica a decisão de contingência quando não recebe uma decisão: em um timeout, um erro de conexão, um status fora de2xx, um redirecionamento, uma resposta que ele não consegue ler ou uma configuração incompleta. Depois de falhas repetidas, o Pix Lerian para de chamar o seu endpoint por um curto período e aplica a contingência. Uma recusa pela contingência sai com o código de motivo DS04.
Criar e observar uma devolução
Use Criar devolução para uma transferência elegível e leia-a por meio de Obter devolução.reasonCode aceita somente MD06, SL02, FR01 e BE08. Uma devolução que o trilho recusa responde 422 (PIX-0013). Uma devolução segue seu próprio ciclo de vida assíncrono. Não a marque como concluída até que o plugin registre o resultado terminal do provedor e o efeito correspondente no Midaz.
Uma nova tentativa com o mesmo valor de X-Idempotency em até uma hora após a primeira resposta 2xx retorna a devolução existente com 200. Depois de um 5xx ou de um 409 (PIX-0406), a primeira tentativa ainda pode estar PROCESSING com o seu débito. Chame Listar devoluções com transferId antes de tentar de novo.
Usar o Block Balancer do MED 2.0
O Block Balancer retém fundos de uma transação contestada antes de uma decisão de devolução. Esse é um fluxo operacional controlado, não um atalho para transferências comuns.- Crie uma retenção para a transação contestada. O plugin coloca uma retenção pendente do Midaz do saldo disponível na conta de bloqueio configurada. Um replay do mesmo
request_refretorna a retenção existente. - Se o caso terminar antes da liquidação, libere uma retenção
PENDING. Você não pode liberar uma retenção que já está em liquidação. - Inicie a liquidação da Fase 1 para uma retenção ou um grupo elegível. A retenção se torna
SETTLING. O ramo retorna a retenção pendente e envia uma devolução, ou confirma a retenção, trata qualquer excedente e envia o pagamento necessário. - Conclua a Fase 2 somente a partir do resultado observado da operação vinculada. Um sucesso torna a retenção
SETTLED. Uma falha a compensa paraPENDING. - Use o fechamento manual, a devolução de excedente e as funções de auditoria somente pelos controles operacionais autorizados. Elas não são endpoints normais da aplicação.

