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.39k stars 269 forks source link

[Dúvida] Revisar cobrança - Desvincular loc.id #288

Open renanpto opened 3 years ago

renanpto commented 3 years ago

Boa tarde,

Ao revisar uma cobranca com vencimento ou imediata, o usuário poderá informar na entrada "loc" : null indicando que deseja remover location vinculado a cobrança.

Considerando esse cenário, qual deve ser o comportamento esperado ? Desvincular o location anterior e associar um novo ? ou simplesmente desvincular o location e pronto ?

Obrigado !

ninrod commented 3 years ago

desvincular o location e pronto

Isso mesmo. A cobrança não é exibida até que seja associada a um novo location. Ela existe, mas não está em nenhuma "vitrine".

erikaaseg commented 3 years ago

Boa tarde! No caso, qual seria o comportamento esperado da revisão da cobrança? 1) Se o usuário informar "loc":null, ou caso usuário não informar o atributo "loc", o sistema desvincularia a cobrança sendo editada da Location (caso a cobrança estivesse vinculada anteriormente)? 2) Se o usuário quiser manter ou vincular a cobrança a uma location, ele teria que, obrigatoriamente passar o atributo "loc"?

A dúvida é pelo seguinte motivo: apresentar o atributo "loc": null e não apresentar o atributo "loc", do ponto de vista do código, é a mesma coisa. Neste caso, sempre que o usuário fizer uma revisão, para que ele não desvincule a cobrança da location, ele teria que necessariamente passar a location. É isso mesmo?

ninrod commented 3 years ago

boa tarde @erikaaseg

  1. Se o usuário informar "loc":null, ou caso usuário não informar o atributo "loc", o sistema desvincularia a cobrança sendo editada da Location (caso a cobrança estivesse vinculada anteriormente)?

Informou "loc": null, tira o QR Code da vitrine. Não informou nada sobre loc, então não está se querendo mudar nada em loc, permanece com o "loc" que já estava associado.

  1. Se o usuário quiser manter ou vincular a cobrança a uma location, ele teria que, obrigatoriamente passar o atributo "loc"?

Se quiser manter, não informa nada sobre "loc". Se quiser vincular a um novo location, informa o id desse novo location desde que este location já não esteja associado a uma cobrança.

mliberato commented 3 years ago

@ninrod eu acho muito arriscado considerar essa diferença semântica entre "não enviar loc"e "enviar loc:null". Existem várias discussões na internet sobre o assunto. Para muitas bibliotecas, "null" ou a inexistência de um atributo são tratados da mesma forma.

Como já existe o endpoint específico para desvincular uma cobrança de uma location (DELETE /loc/{id}/txid), acredito que os endpoints de revisar cobrança (PATCH /cob/{txid} | PATCH /cobv/{txid}) não devam endereçar este caso de uso de "desvincular cobrança", evitando maiores transtornos.

ninrod commented 3 years ago

Boa noite @mliberato

Como já existe o endpoint específico para desvincular uma cobrança de uma location (DELETE /loc/{id}/txid), acredito que os endpoints de revisar cobrança (PATCH /cob/{txid} | PATCH /cobv/{txid}) não devam endereçar este caso de uso de "desvincular cobrança", evitando maiores transtornos.

Não adianta "consertar" só aqui. Essa semântica do null está espalhada pela API nos endpoints PATCH e já foi objeto de várias issues neste repo: https://github.com/bacen/pix-api/issues/311, https://github.com/bacen/pix-api/issues/281, https://github.com/bacen/pix-api/issues/108. "Esse barco já partiu", a semântica é essa mesmo e não há volta neste ponto da linha do tempo de existência do Pix. Só em uma eventual v3.

mliberato commented 3 years ago

@ninrod ok, desculpe, não tinha visto que o assunto já tinha sido abordado anteriormente. Vale reforçar então o processo de homologação criando casos de teste específicos para cobrir esses pontos junto aos PSPs.