bacen / pix-api

API Pix: a API do Arranjo de Pagamentos Instantâneos Brasileiro, Pix, criado pelo Banco Central do Brasil.
https://bacen.github.io/pix-api
2.32k stars 262 forks source link

Exigência da informação do "id" de devoluções #275

Open jgslima opened 3 years ago

jgslima commented 3 years ago

Os ambientes dos PSPs podem possuir canais variados, de forma que, um cliente recebedor acabará tendo à sua disposição algum outro canal para comandar uma devolução além da API PIX (app, internet banking, etc). Ocorre que, devoluções comandadas por canais convencionais não terão a informação do "id".

Alguns serviços de consultas da API PIX especificam que, se o PIX relativo a uma cobrança tiver tido devoluções, os dados destas devoluções devem ser retornados. E dentre eles, o campo "id" que é declarado como required.

Se o cliente recebedor tiver, por alguma razão qualquer, comandado uma devolução por um canal convencional, o PSP terá ciência de que a devolução relativa àquele PIX ocorreu, mas não terá como reportar a informação do "id" (também questionável se a informação do "status" é pertinente neste caso).

Como o PSP deve proceder?

rubenskuhl commented 3 years ago

Me parece que o campo "id" deveria ser opcional no GET /pix e no webhook, porém apenas caso ele não exista. Ou seja, se existir ele deve ser informado. Já no PUT de devolução continuaria obrigatório e idempotente (vide #277).

ninrod commented 3 years ago

bom dia @jgslima

Se o cliente recebedor tiver, por alguma razão qualquer, comandado uma devolução por um canal convencional, o PSP terá ciência de que a devolução relativa àquele PIX ocorreu, mas não terá como reportar a informação do "id" (também questionável se a informação do "status" é pertinente neste caso).

Ressalto que esse id da devolução é único por e2eid. Além disso, apresenta tamanho máximo de 35 caracteres no pattern [A-Za-z0-9]{1,35}.

Como o PSP deve proceder?

O PSP escolhe um id para representar esse id que não foi escolhido pelo usuário recebedor. Sem pensar muito eu usaria um UUIDv4 (32 chars hexa).