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

[Dúvida] GET ​/{pixUrlAcessToken} #78

Closed cinrcazangi closed 3 years ago

cinrcazangi commented 3 years ago

Qual será o valor do parâmetro {pixUrlAcessToken} para este endpoint? Não localizei na documentação a especificação do valor deste parâmetro.

Não entendi o objetivo deste endpoint, uma vez que já é possível consultar a cobrança pela operação /cob/{txid}. Em qual cenário este endpoint será utilizado pelo PSP Pagador?

ninrod commented 3 years ago

prezado @cinrcazangi ,

Qual será o valor do parâmetro {pixUrlAcessToken} para este endpoint? Não localizei na documentação a especificação do valor deste parâmetro.

esse endpoint é uma "URL de capacidade". É para ser aleatório, bem difícil de adivinhar, e está sob a responsabilidade do PSP recebedor sua criação.

Não entendi o objetivo deste endpoint, uma vez que já é possível consultar a cobrança pela operação /cob/{txid}. Em qual cenário este endpoint será utilizado pelo PSP Pagador?

Será utilizado no ato do scan do QR Code pelo usuário pagador via seu app mobile de seu PSP pagador.

cinrcazangi commented 3 years ago

Você teria um cenário de exemplo com valores fictícios para ajudar no entendimento deste fluxo?

Se a criação da URL de capacidade está sob responsabilidade do PSP recebedor, como o PSP Pagador receberá esta URL?

franciscotfmc commented 3 years ago

@cinrcazangi, acredito que essa URL estará codificada no QR Code Dinâmico. Fazendo o parser do BR Code o PSP Pagador terá posse desta URL.

ninrod commented 3 years ago

@cinrcazangi, acredito que essa URL estará codificada no QR Code Dinâmico. Fazendo o parser do BR Code o PSP Pagador terá posse desta URL.

Exatamente, @franciscotfmc, obrigado.

llatsch commented 3 years ago

@ninrod Consegue exemplificar? Pode descrever um caso de uso por favor?

ninrod commented 3 years ago

boa tarde @llatsch

@ninrod Consegue exemplificar? Pode descrever um caso de uso por favor?

Um possível fluxo no estilo "caminho feliz" seria:

  1. O EC "E" contrata a software House "S" que estabelece uma integração via API Pix com mTLS + Oauth2 com o PSP "B" em nome do EC "E"
  2. O software da software house "S", apto a realizar agora chamadas aos endpoints da API Pix oferecidos pelo PSP "B", aguarda um cliente pagador chegar.
  3. O cliente comparece ao caixa e gostaria de comprar 3 produtos no valor de 100 reais.
  4. O cliente informa ao caixa que gostaria de pagar via Pix.
  5. O caixa instrui o software a emitir uma cobrança Pix.
  6. O software realiza uma chamada PUT /cob/00000000000000000000000000000000001 atribuindo os valores adequados ao body do request.
  7. O endpoint retorna sucesso, e, no JSON de retorno, pode-se verificar que o valor psp-b.example.com/qr/be3e00b2-760e-4fb2-8159-fc55620be28c está atribuído ao campo: loc.location
  8. De posse deste elemento, o location, a software cria a string do QR Code dinâmico.
  9. o QR Code dinâmico é renderizado com base nesta string
  10. O pagador escaneia o QR Code via o APP de seu PSP pagador.
  11. O PSP pagador acessa o payload JSON que representa esta cobrança via a URL (a "location") contida no QR Dinâmico.
  12. os dados da cobranças são retornados: chave do DICT, valor, etc...
  13. O PSP do pagador apresenta os dados da transação para o pagador e pede confirmação.
  14. O pagador confirma a transação.
  15. O PSP do pagador envia a PACS.008 para os sistemas do Banco Central via ICOM.
  16. O BCB liquida a transação conversando com o Banco receptor, o qual confirma a transação.
  17. O BCB informa ao PSP do pagador que a operação foi liquidada.
  18. O BCB também informa ao PSP do recebedor que a operação foi liquidada.
  19. O PSP do pagador informa ao pagador que a transação foi concluída
  20. O PSP do recebedor, no caso, o psp "B" associa um Pix à cobrança cujo txid é 00000000000000000000000000000000001 porque na PACS.008 recebida que representa este Pix havia um campo específico chamado TransactionIdentification (também chamado de "idConciliacaoRecebedor" se você estiver olhando para o catálogo do Pix) em que constava o valor 00000000000000000000000000000000001. Esse é exatamente o txid que consta em GET /cob/{txid} entre outros endpoints.
  21. o software realiza um GET em /cob/00000000000000000000000000000000001 e verifica que há um pix associado a essa cobrança e com o valor correto: 100 reais.
  22. O caixa confirma a compra e libera o cliente e a mercadoria.
fernandogodoy commented 3 years ago

Vendo a resposta enviado pelo @franciscotfmc e conforme descrito na espeficicação: No momento que o usuário pagador efetua a leitura de um QR Code dinâmico gerado pelo recebedor, esta URL será acessada e seu conteúdo consiste em uma estrutura JWS. As informações sobre a segurança no acesso às urls encontram-se no Manual de Segurança do Pix disponível em nesse link.

A resposta da API Pix será o padrão para as consultas, ou seja, todos QRCode dinânicos devem conter uma URL e, esta deve responder conforme especificado na API Pix?

Todo PSP pagador, ao ler um QRCode deve bater neste endpoint e compreender a resposta dele, Correto?

franciscotfmc commented 3 years ago

Este é exatamente o meu entendimento também. Mas o @ninrod é quem pode confirmar se estamos corretos. :)

ninrod commented 3 years ago

A resposta da API Pix será o padrão para as consultas, ou seja, todos QRCode dinânicos devem conter uma URL e, esta deve responder conforme especificado na API Pix?

Todo PSP pagador, ao ler um QRCode deve bater neste endpoint e compreender a resposta dele, Correto?

Sim, é isso. Apenas acrescentaria "Ao ler um QRCode dinâmico". O estático não contém URL.