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.36k stars 268 forks source link

QR Code dinâmico possibilitando alteração do valor pelo pagador. #312

Closed luizagsilva closed 3 years ago

luizagsilva commented 3 years ago

Bom dia pessoal,

Pelos manuais do BACEN entendo que não é um cenário válido que um QR Code Dinâmico possibilite a alteração de valor pelo pagador final...e com base nas discussões que tivemos no fórum: https://github.com/bacen/pix-api/issues/219, isso ainda foi confirmado e realmente não deveríamos ter o cenário de que o pagador consiga alterar o valor final do pagamento.

Porém, no app do Santander eu consigo alterar o valor de alguns QR dinâmicos e gostaria de entender se tem alguma evolução que deveria ser feita no QR ou se a correção deveria ser feita pelo Santander.

Seguem alguns exemplos:

  1. QR code do Itaú no site da Kabum -> possibilita a alteração de valor pelo pagador, porém quando finalizo a transação o Itaú (recebedor) recusa o meu pagamento. QR Code: 00020101021226770014BR.GOV.BCB.PIX2555api.itau/pix/qr/v2/f50feab7-1273-48c3-a296-db458e212dbf5204000053039865802BR5925KABUM COMERCIO ELETRONICO6009SAO PAULO62070503***63047469

  2. QR Code da AME na Americanas -> antes possibilitava a alteração de valor pelo pagador, mas agora não possibilita mais. https://sacola.americanas.com.br/pagamento/?cartId=e1f2aaa4-0887-427f-90bb-0fc6a59f1fb9 .. teve algo que eles fizeram para garantir isso?

  3. QR Code do BTG na Hotmart -> possibilita a alteração de valor e o BTG (Recebedor) não recusa. A hotmart faz o reembolso na hora e consigo voltar a fazer a compra, mas é uma experiência bem ruim. Ex: 00020101021226910014br.gov.bcb.pix2569api.developer.btgpactual.com/v1/p/v2/e8ed4de9db46404d8b320d2f66570271520400005303986540569.905802BR5920Adyen do Brasil LTDA6009Sao Paulo62070503***63041083

Qual deve ser a ação correta aqui? Tem algo que pode ser evoluído no QR Code do BTG e do Itaú? Ou se isso acontecer, o recebedor deverá recusar? Como deve ser a implementação nesse caso?

muito obrigada!

renatofrota commented 3 years ago

Bom dia, Luiza.

Se permite edição, é o app do PSP do pagador que tem um erro, não o QR Code em si. Então o seu app, que tá permitindo a edição de valor nos casos 1 e 3, é que tem um defeito.

Não consegui abrir o QR Code do segundo link (pede autenticação) mas ele pode ser um QR Code estático (e o seu app se comportar de forma diferente - e correta - nesse caso, não permitindo edição do valor, e apresentando o problema somente no caso do QR Code dinâmico) ou pode ter algum elemento diferente, como a presença do valor no próprio QR Code, no template 54 (que não é obrigatório no caso dos QR Codes dinâmicos mas, pela presença dele, o seu app se comportar diferente, já que o primeiro e o terceiro não tem o valor no QR Code, o template 54 não está presente).

Se você puder dizer qual é o PSP pagador onde você observou esse comportamento, vou adicionar na lista de problemas de interoperabilidade (https://github.com/renatofrota/pix-pendencias/issues/22).

-edit-

Agora vi, é o Santander. Vou adicionar ele lá na lista.

luizagsilva commented 3 years ago

Renato, obrigada pelo retorno. Não consigo fazer o pix copia e cola na americanas, nem pelo app (não aparece a opção de pagar com PIX pelo mobile).

O PSP pagador é o Santander.

No 1 e no 3 não tem o valor no qr code? Porque gerei no checkout! Vc acha que o PSP Recebedor deveria recusar nesse caso?

renatofrota commented 3 years ago

O QR Code dinâmico tem um componente que é uma URL de Payload. Ao ser lida, esta URL retorna as informações sobre a cobrança - inclusive o valor. Por isso, o valor (template 54) nem sempre está disponível no próprio código "Copia e Cola" que representa o BR Code (pois não é necessário).

Exemplo 1 (Kabum)

image

Exemplo 3 (Hotmart)

image

Imagens obtidas com ajuda da ferramenta PIX QRCode Tool.

Estou vendo que o terceiro exemplo tem o template 54 (que passou batido pelo meu olhar quando vi apenas a string). Você reportou conseguir editar o valor ao pagar, então não é essa a causa (ausência do template 54). Deve ser um problema generalizado do Santander com QR Codes dinâmicos, então. O app está atualizado? Qual a plataforma (Android ou iOS)?

Obs: você pode conseguir ler os QR Codes com esse app para Android (tem similares no iOS).

luizagsilva commented 3 years ago

obrigada pela análise Renato! O problema acontece tanto no Android quanto no iOS, então to achando que é realmente generalizado do App do Santander!

ninrod commented 3 years ago

Boa noite @luizagsilva e @renatofrota.

Se permite edição, é o app do PSP do pagador que tem um erro, não o QR Code em si. Então o seu app, que tá permitindo a edição de valor nos casos 1 e 3, é que tem um defeito.

Corretamente observado.

@luizagsilva , para QRs dinâmicos, não se pode alterar valor. Os casos em que os PSPs estão permitindo edição de valor no QR Dinâmico estão contra a especificação do arranjo e provavelmente estes PSPs conversarão com o DECEM para corrigir o problema.

Para QR Estático a regra é a seguinte: se constar valor, não pode alterar. Se não constar valor, pode colocar o valor que quiser.

luizagsilva commented 3 years ago

Obrigada pelo retorno @ninrod ! Dado que esse cenário existe, o PSP recebedor deveria recusar o recebimento desse pagamento?

ninrod commented 3 years ago

@luizagsilva,

o PSP recebedor deveria recusar o recebimento desse pagamento?

O PSP recebedor deveria recusar esse pagamento se o valor está diferente do valor especificado na cobrança.

luizagsilva commented 3 years ago

@ninrod , obrigada! existe essa regra em algum manual ou especificação?

ninrod commented 3 years ago

@luizagsilva, boa noite.

@ninrod , obrigada! existe essa regra em algum manual ou especificação?

Acredito que não exista uma regra específica que diga exatamente isso, mas parece ser do interesse, tanto do usuário recebedor como do PSP recebedor em agir desta forma; o processo de devolução é mais "caro".

luizagsilva commented 3 years ago

@ninrod concordo! obrigada Felipe pelo retorno!