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

[Nova Funcionalidade] Notificação de pagamentos #62

Closed renatofrota closed 3 years ago

renatofrota commented 3 years ago

Trazendo uma discussão que foi aberta na issue #9 (mas não era o foco original da issue) e ficou sem resposta por lá, trago para essa issue em forma de sugestão.

Visando oferecer uma experiência mais próxima à do cartão de débito e facilitando a adoção do Pix em pequenos estabelecimentos comerciais, que hoje contam com um comprovante gerado e impresso imediatamente pelas "maquininhas" de cartão, seria interessante que o QR Code utilizado para realizar as cobranças (ou a chave que está vinculada a ele) tivesse um webhook vinculado, para o qual o próprio BACEN (ou o PSP recebedor) enviaria um request (notificação).

Isso facilitaria que desenvolvedores de software oferecessem um serviço que inclua a notificação de pagamentos aos clientes de seus sistemas de ERP/cobrança. O recebedor do Pix receberia uma notificação de novo pagamento diretamente no celular ou em seu sistema de cobrança, sem precisar de um contrato para acesso à PIX API junto ao PSP.

Em 99,9% dos casos o único recurso da API estritamente necessário para um nível mínimo de controle a ser utilizado por pequenos estabelecimentos é esse, que permite uma notificação ou "baixa" de um pagamento. Os demais, são bem mais restritos a empresas de médio e grande porte.

Do ponto de vista da segurança, também é interessante evitar a necessidade de que um desenvolvedor tenha acesso (e armazene) tokens de API dos clientes, especialmente estes sendo pequenos clientes, sem um departamento de desenvolvimento, segurança ou tecnologia de maneira geral e não podendo realizar as integrações necessárias por conta própria.

Não considero isso propriamente como uma "automação" mas como um requisito básico para adoção do Pix em larga escala em muitos negócios de pequeno porte. Sem este tipo de funcionalidade, fica bem inviável o comerciante verificar os pagamentos (o fluxo de uma pequena padaria de bairro já seria suficientemente grande a ponto de inviabilizar a adoção imediata do Pix), enquanto o cartão de débito fornece uma confirmação segura e instantânea que o Pix, sem tal recurso sugerido, não oferece de forma facilitada e acessível.

renatofrota commented 3 years ago

Baseado em quê? Não sou PSP, não conheço a regulamentação em sua integralidade.

Manual de iniciação do Pix.

Observação: a notificação não se dá via API. É um request que parte deles para o meu sistema. O MP é que está me comunicando algo, não está [nem estariaria] me dando acesso à informações relativas ao sistema Pix por meio de nenhuma API.

É esse request para o seu sistema é uma chamada de API, não há outro nome para isso e o impacto regulatório é claro.

É o PSP acionando uma URL no meu sistema - a API é minha, não do PSP. Totalmente fora do escopo da regulação do Pix. Só vejo como um problema se o BACEN agora resolveu, de uma hora pra outra, proibir que os PSPs ofereçam serviços tecnológicos de quaisquer natureza que não a API Pix. :laughing:

Prezados, a discussão está interessante. É bastante informação, estou tentando acompanhar. Se vocês quiserem que eu responda algo em específico podem me marcar.

Respondendo alguns pontos:

@renatofrota

Podem me ajudar a entender, em detalhe, a proposta? Entendi que a proposta gira em torno de atribuir a uma cobrança uma URL específica para "notificação". Supondo 10M de cobranças, (há usuários recebedores que geram 10milhões de cobranças por mês), potencialmente, do ponto de vista do PSP recebedor, teria-se em mãos 10 milhões de URLs diferentes para notificar, respectivamente, cada uma destas cobranças. Entendi corretamente a proposta?

Se já está previsto um endpoint /webhook responsável por definir qual a URL que deverá ser notificada quando o PSP recebe um pagamento para aquele cliente que configurou o webhook, qual a diferença a URL ser única ou variável a cada cobrança? O número de requisições enviadas não muda.

Perfeito, mas o número de servers diferentes com os quais o PSP recebedor teria que se comunicar muda: de 1 por client_id para 1 por txid. A segurança da comunicação entre o PSP recebedor e estes inúmeros servers me preocupa. Como exatamente seria estabelecida a segurança na comunicação do PSP recebedor com esses N servers, na proposta apresentada aqui?

Eu não estou entendendo onde, exatamente, está a sua dúvida. Se o recebedor disser ao PSP "me avisa aqui nessa URL X quando cair um pagamento para a minha Chave Pix Y" e esta URL é servida via HTTPS, que diferença faz ela ser sempre a mesma, definida de forma completamente limitada por um endpoint específico, ou ela ser uma URL vinculada à Chave Pix ou à Cobrança?

Os requests serem enviados sempre para uma mesma URL, cito: https://sistema-a.recebedor.example.com/pixnotify; ou vezes para esta mas, sob determinadas circunstâncias (cobranças relacionadas às vendas realizadas através de um hotsite de uma campanha que tem uma duração limitada, por exemplo) para uma URL diferente, cito: https://hotsite-natal.recebedor.example.com/pixnotify, não faz a menor diferença do ponto de vista da segurança. Ambas são URLs com o mesmo caráter técnico.

E ressalto: hoje já é previsto o envio de notificações via webhook. Minha sugestão é que continue sendo uma requisição simples, com o único objetivo de notificar o recebedor, não que o PSP recebedor ou o BACEN colete ou processe qualquer informação presente nesta URL de notificação. Ademais, mudar o escopo da URL de webhook de um client_id para Chave Pix (podendo ser sobreposto na Cobrança) não faria qualquer diferença neste aspecto.

E, lembrando, não será necessariamente sempre diferente. O número de URLs diferentes não seria igual ao número de Cobranças, assim como não será necessariamente uma relação 1:1 com um txid. Pode ser, como no exemplo acima, uma URL de uso geral e, em casos pontuais, ser uma URL diferente.

De qualquer forma, explico melhor a intenção: o interesse em ter capacidade de sobrescrever a URL de notificação é para situações onde uma empresa atua em mais de um ramo (perfeitamente comum) e tem mais de um e-commerce e/ou mais de um sistema de cobrança (também muito comum) esta poder definir as URLs de notificação com base no sistema que é responsável pelo controle de liberação de serviços/pedidos sem ter, necessariamente, 2 contas de integração distintas com o PSP (o número de URLs seria, na maior parte das vezes, igual ao número de sistemas compartilhando aquela conta de integração) ou se forçar a ter uma URL única que servirá de "gateway" para encaminhar essas notificações a diferentes sistemas (gerando a necessidade de infra, processamento e requests totalmente desnecessários).

No contexto colocado aqui, versando sobre situações envolvendo empresas com mais de um sistema de cobrança, estabelecer diferentes client_ids par cada sistema de cobrança não resolveria a questão, uma vez que o usuário recebedor poderia estabelecer uma URL diferente por client_id?

No papel é lindo, mas mundo real não é tão simples assim. Seria um processo burocrático (e completamente desnecessário, que não existe em nenhuma parte da cadeia de pagamentos de outros modelos atualmente) gerar um novo par de credenciais (o que dependeria, inclusive, de intervenção manual por parte do PSP, na maioria das vezes) e isso leva tempo. Especialmente se for para um uso pontual como um hotsite promocional que vai ao ar durante um curtíssimo período (blackfriday-cybermonday, natal, semana do dia das mães, etc) e não um processo que vai resultar num uso contínuo, de longo prazo.

Seria muito melhor eu ter autonomia para definir como quero receber as notificações de diferentes Pix, relacionados a diferentes Cobranças/chaves, mediante alterações feitas por um único ator da relação cliente <-> PSP (esse "ator" seria eu mesmo, o cliente).

Isso se daria por meio de um processo 100% padronizado, automatizado e simples. Podendo ser:

E no caso de estar usando Cobranças e QR Codes dinâmicos:

Se é o recebedor que está definindo a URL de notificação que deve ser contatada (na Chave Pix ou na Cobrança), a entropia é praticamente ilimitada. E a URL, mesmo em cenários onde se observa alguma "padronização" (ex: vários recebedores usando o mesmo software e este sendo SaaS e não self-hosted), poderá conter, naturalmente, seus critérios de diferenciação e de autenticação. Um mero ?key=chave-de-validacao nesta URL seria mais do que suficiente para distinguir quem é o recebedor (e se a notificação é válida).

Entendo que é possível implementar um nível de entropia adequado, conforme relatado nesse trecho. Contudo, a preocupação do BACEN é com relação a um piso de segurança mínimo. Veja, se fosse implementado desta maneira, um usuário recebedor descuidado poderia não utilizar "um mero ?key=chave-de-validacao" e, assim, estar exposto a fraudes. Nós aqui sabemos que, em caso de uma fraude que explore esta falha, foi o usuário recebedor que não "implementou uma entropia adequada". Mas a fraude efetivamente aconteceria e até que o BACEN, instituidor do arranjo, conseguisse explicar que na verdade foi o usuário recebedor que foi descuidado, a imagem do arranjo estaria prejudicada. Alguem poderia argumentar que o arranjo apresenta "uma propensão ao erro". E aí poderia haver desdobramentos, certamente: O PSP recebedor arcaria com o prejuízo? O BACEN? o próprio usuário recebedor? De quem seria exatamente a culpa pela falha de segurança que permitiu a fraude? Existe um cenário complexo que teria que ser muito cuidadosamente analisado observando todos estes fatores.

Eu propus uma solução que seria a obrigatoriedade do recebedor informar uma chave de validação junto à própria URL de notificação (o que reforçaria a necessidade por parte de quem está implementado de que aquela chave deverá ser validada ao receber uma notificação).

Se o recebedor tratar o pagamento como baixado com base unicamente na notificação e sem validar a chave, ele estará assumindo o risco da fraude, assim como um vendedor do Mercado Livre que confia num e-mail que veio de uma origem desconhecida dizendo que o seu produto foi vendido e posta o produto nos Correios (sem verificar no sistema do ML que a venda de fato foi concretizada).

O ML é culpado pelos e-mails enviados por terceiros dizendo que um produto foi vendido? Os bancos são responsáveis pelos SMS de phishing que eu recebo toda semana dizendo que eu preciso revalidar meu cadastro nos mais variados bancos? Da mesma forma, o BACEN (ou o PSP recebedor, se este ficar responsável por enviar as notificações) não tem responsabilidade se a validação não for realizada pelo recebedor.

A única alteração proposta que poderia ser considerada mais insegura em relação ao modelo atual é que, para a notificação ser mais relevante a quem não possuir acesso à API Pix e for se valer do uso de QR Codes estáticos + a notificação via webhook (o que vai facilitar de fato a adoção do Pix como efetivo substituto às maquinetas no comércio) é que a notificação contemple algumas informações mínimas, somente as essenciais para distinguir pagadores que possam estar realizando transações ao mesmo tempo dentro do estabelecimento. Informações básicas tais como: o txid (sendo este o único completamente necessário), o valor que foi pago (necessário se não quiser forçar geração de QR Codes estáticos para cada cliente, permitindo o QR Code afixado no caixa, de uso geral) e o horário e/ou o e2eid da transação (para possibilitar identificar e tratar possíveis casos de recebimento da notificação em duplicidade ou fora da ordem em que os pagamentos foram recebidos). Outras informações, como dados pessoais do pagador, eu entendo que o BACEN possa considerar sensíveis demais para serem enviadas diretamente na notificação (talvez possa enviar só o primeiro nome e as outras iniciais?), sendo necessário o uso da API Pix caso o estabelecimento queria obter mais informações para integrações mais completas.

rubenskuhl commented 3 years ago

É esse request para o seu sistema é uma chamada de API, não há outro nome para isso e o impacto regulatório é claro.

É o PSP acionando uma URL no meu sistema - a API é minha, não do PSP. Totalmente fora do escopo da regulação do Pix. Só vejo como um problema se o BACEN agora resolveu, de uma hora pra outra, proibir que os PSPs ofereçam serviços tecnológicos de quaisquer natureza que não a API Pix. 😆

APIs não são diodos, as interações entre sistemas são API em qualquer dos sentidos de atuação. E sim, um PSP oferecendo algo que se refira ao Pix em cima de qualquer recurso tecnológico é parte da atuação do PSP regulada pelo BACEN. É parte de entrar no sistema financeiro regulado, não é vale tudo, e principalmente não é seguir o manual da start-up de criar barreiras de entrada para os possíveis concorrentes.

Não é diminuindo a necessidade de regulação que se deve defender casos de uso, e sim mostrando o real valor disso para a sociedade.

renatofrota commented 3 years ago

É esse request para o seu sistema é uma chamada de API, não há outro nome para isso e o impacto regulatório é claro.

É o PSP acionando uma URL no meu sistema - a API é minha, não do PSP. Totalmente fora do escopo da regulação do Pix. Só vejo como um problema se o BACEN agora resolveu, de uma hora pra outra, proibir que os PSPs ofereçam serviços tecnológicos de quaisquer natureza que não a API Pix. laughing

APIs não são diodos, as interações entre sistemas são API em qualquer dos sentidos de atuação. E sim, um PSP oferecendo algo que se refira ao Pix em cima de qualquer recurso tecnológico é parte da atuação do PSP regulada pelo BACEN. É parte de entrar no sistema financeiro regulado, não é vale tudo, e principalmente não é seguir o manual da start-up de criar barreiras de entrada para os possíveis concorrentes.

Não é diminuindo a necessidade de regulação que se deve defender casos de uso, e sim mostrando o real valor disso para a sociedade.

Então intermediadores, fintechs, bancos... que ofereciam notificações de pagamento de qualquer outra espécie deverão deixar de fazê-lo, no caso específico do pagamento que entrou na conta ser um Pix? Não vejo o menor sentido.

Seguindo por este raciocínio, então, aplicativos de gestão financeira como o GuiaBolso, que acessa minhas contas bancárias e me auxilia no meu planejamento financeiro, não poderá ler os pagamentos que eu receber quando estes forem Pix (somente DOCs e TEDs)?

E ainda seguindo a mesma lógica, os aplicativos dos bancos, sejam desktop/web/mobile que possuem funcionalidade de exportar o meu extrato, também não poderão exportar as transações que forem envios/recebimentos Pix?

Complicou!

rubenskuhl commented 3 years ago

APIs não são diodos, as interações entre sistemas são API em qualquer dos sentidos de atuação. E sim, um PSP oferecendo algo que se refira ao Pix em cima de qualquer recurso tecnológico é parte da atuação do PSP regulada pelo BACEN. É parte de entrar no sistema financeiro regulado, não é vale tudo, e principalmente não é seguir o manual da start-up de criar barreiras de entrada para os possíveis concorrentes. Não é diminuindo a necessidade de regulação que se deve defender casos de uso, e sim mostrando o real valor disso para a sociedade.

Então intermediadores, fintechs, bancos... que ofereciam notificações de pagamento de qualquer outra espécie deverão deixar de fazê-lo, no caso específico do pagamento que entrou na conta ser um Pix? Não vejo o menor sentido.

O sentido é não ser essa a desculpa para lock-in numa API proprietária.

Seguindo por este raciocínio, então, aplicativos de gestão financeira como o GuiaBolso, que acessa minhas contas bancárias e me auxilia no meu planejamento financeiro, não poderá ler os pagamentos que eu receber quando estes forem Pix (somente DOCs e TEDs)?

O GuiaBolso é o caso de uso padrão do OpenBanking, que vai ter acesso às transações recebidas e a ser iniciador de pagamentos. Ele hoje não usa APIs nesses acessos, ele simula um cliente, exatamente pela falta de padronização ainda a ser criada como parte do OpenBanking.

E ainda seguindo a mesma lógica, os aplicativos dos bancos, sejam desktop/web/mobile que possuem funcionalidade de exportar o meu extrato, também não poderão exportar as transações que forem envios/recebimentos Pix?

Isso não é uma API, é apenas mais um layout de arquivos. Quer seja em formatos padronizados como ISO 20022 ou CNAB 750, quer seja num formato próprio de um banco, ele não se constitui uma API... no momento layout de arquivos não é escopo de padronização do BACEN. Tem gente que diz que os CNABs tem tanta diferença entre os bancos que isso deveria ser objeto de padronização, mas se for, o que faria mais sentido é uma padronização mais genérica do que só para Pix. Assim como o BR CODE padronizou QR-Code para uso em qualquer arranjo de pagamento.

renatofrota commented 3 years ago

Então intermediadores, fintechs, bancos... que ofereciam notificações de pagamento de qualquer outra espécie deverão deixar de fazê-lo, no caso específico do pagamento que entrou na conta ser um Pix? Não vejo o menor sentido.

O sentido é não ser essa a desculpa para lock-in numa API proprietária.

Mas isso não é lock-in. O MercadoPago não é o único que oferece notificações de pagamento. Todos os intermediadores e gateways de pagamento oferecem, para todos os recebimentos (e até mesmo alguns bancos "tradicionais", quando não para todos os recebimentos, ao menos para algum tipo de pagamento particular, como é o caso do Itaú Shopline).

Você precisa entender que há uma diferença entre a API Pix (que oferece vários recursos) e a API dos intermediadores e gateways:

Uma coisa não compete com a outra. O recebimento que entra na conta por meio do Pix, não será acessível por meio de uma API proprietária de forma que elementos/informações exclusivos do arranjo Pix fiquem disponíveis "por fora" da API Pix. Mas todo recebimento de dinheiro é uma "Operação" (no caso do MP) e eu entendo que, poder consultar determinados dados sobre esta transação (dados estes que também estão disponíveis em todas os demais tipos de transações que o MP é capaz de receber, tais como o nome do pagador, o valor, o horário da transação, o status - que no caso do Pix, por definição, seria sempre "approved") por meio da API proprietária do MP não interfere em nada a existência da API Pix (e o MP oferecê-la ou não). São ações sem equivalência com a consulta de transações por seu txid, criação ou consulta de cobranças, etc - ações estas, sim, disponíveis exclusivamente pela API Pix.

Inclusive, há bancos tradicionais que oferecem APIs de comunicação para os correntistas. Estes vão deixar de oferecer consultas às transações da conta (ou limitar os retornos das consultas, omitindo os recebimentos que sejam Pix)? Aposto que não. Uma vez recebido o dinheiro na minha conta, ele é meu dinheiro. Não importa se ele veio por um Pix ou se foi uma compensação de cheque. Ele precisa estar acessível para consulta (ou ser notificado), como qualquer outro dinheiro.

renatofrota commented 3 years ago

Inclusive, a minha sugestão para que as notificações sejam padronizadas no Pix e acessíveis nem necessidade de um client_id para acesso à API Pix, é exatamente evitar esse "lock-in" em determinados intermediadores/gateways/PSP, tornando este um recurso universalmente acessível no âmbito do Pix e fazendo do Pix uma modalidade de recebimento preferida face a outras, justamente por essa versatilidade que a padronização traria.

Não só a facilidade de usar o Pix como substituto a maquinetas aumentaria como, também, a competitividade entre os players, se todos tiverem que oferecer as notificações. O que fizer isso melhor, atender melhor os clientes, agregar mais valor que não especificamente os "recursos Pix" (que são padronizados), terá mais sucesso.

rubenskuhl commented 3 years ago

Mesmo nesse argumento, com o qual eu não concordo em seu todo mas vou discorrer sobre seus desmembramentos, TxID é uma informação do arranjo Pix. Então uma API proprietária mesmo que somente notificando que o Pix de TxID tal foi realizado para a conta está em violação. Uma API proprietária que só diga "você recebeu R$ 12,34" e depois permita consulta de extrato onde aparece o TxID, também esta em violação. Agora uma que no extrato diga apenas "Pix" estaria ok.

renatofrota commented 3 years ago

Mesmo nesse argumento, com o qual eu não concordo em seu todo mas vou discorrer sobre seus desmembramentos, TxID é uma informação do arranjo Pix. Então uma API proprietária mesmo que somente notificando que o Pix de TxID tal foi realizado para a conta está em violação. Uma API proprietária que só diga "você recebeu R$ 12,34" e depois permita consulta de extrato onde aparece o TxID, também esta em violação. Agora uma que no extrato diga apenas "Pix" estaria ok.

Como eu disse:

Uma coisa não compete com a outra. O recebimento que entra na conta por meio do Pix, não será acessível por meio de uma API proprietária de forma que elementos/informações exclusivos do arranjo Pix fiquem disponíveis "por fora" da API Pix.

O que é uma pena. Entendo o interesse, por parte do BACEN, que haja padronização. Mas é pena limitar que parte das informações, que já estão em mãos do PSP e acessíveis pelo recebedor no app mobile não possam ser consultadas por outros meios que não a API Pix.

renatofrota commented 3 years ago

@ninrod

Continuando o que falei na minha resposta mais acima (a primeira desde a sua última mensagem aqui neste issue e focada na questão técnica - as demais mensagens tem um cunho mais jurídico ou particular do BACEN):

Outras informações, como dados pessoais do pagador, eu entendo que o BACEN possa considerar sensíveis demais para serem enviadas diretamente na notificação (talvez possa enviar só o primeiro nome e as outras iniciais?), sendo necessário o uso da API Pix caso o estabelecimento queria obter mais informações para integrações mais completas.

A chave de validação (definida pelo recebedor junto à URL de notificação) poderia, inclusive, ser utilizada para codificar o conteúdo enviado na notificação, aumentando ainda mais a segurança.

renatofrota commented 3 years ago

@rubenskuhl , já que você parece estar bem por dentro da parte regulatória, se puder me ajudar, me permita voltar à questão de regulação sobre as funcionalidades técnicas que os PSPs podem oferecer aos clientes finais:

O Itaú Shopline, por exemplo, oferece a criação de cobranças e estas podem ser pagas tanto por boleto (qualquer cliente) quanto por débito em conta (somente por quem é correntista do Itaú) e todas as "baixas" são notificadas para o recebedor por um webhook. Se eu crio uma cobrança com a identificação A1B2C3, recebo a notificação de "baixa" dessa cobrança via webhook com essa identificação, não importando como foi pago.

Se o Itaú Shopline agregar a opção de o pagador efetuar o pagamento desta cobrança A1B2C3 via Pix, ele poderá me notificar que a cobrança A1B2C3 foi "baixada" (paga), através da integração Shopline que já está implantada (não importando para o recebedor que o pagamento foi um Pix e, muito menos, qual o txid que o Itaú utilizou ao gerar um QR Code para apresentar ao pagador e conciliar o pagamento internamente, só importa para mim que está pago).

Estou correto neste raciocínio ou há alguma imposição a este processo?

rubenskuhl commented 3 years ago

Eu acredito que boletos híbridos, inclusive os com possível pagamento via Pix, não estejam cobertos pelo escopo da API Pix. Neste caso há um outro arranjo de pagamento, um produto específico que inclusive no caso de pagamento do boleto cancela o Pix e no caso de pagamento via Pix cancela o boleto. Não é que alguém chamou o Pix de, por exemplo, de SX e na verdade é o mesmo arranjo... me parece um produto diferente. E aí entra em qualquer outro escopo regulatório, se algum existir... e o fato dele não ter ou não uma API, ortogonal à existência da API Pix.

Me parece que esse tipo de avaliação vai precisar sempre de casos específicos... casos genéricos podem parecer tranquilos, dá para imaginar casos esdrúxulos que seriam péssimos do ponto de vista regulatório, mas que cada caso precise de avaliação específica. Esse não me soa sirenes de alerta.

renatofrota commented 3 years ago

Não é que alguém chamou o Pix de, por exemplo, de SX e na verdade é o mesmo arranjo...

:rofl:

Eu acredito que boletos híbridos, inclusive os com possível pagamento via Pix, não estejam cobertos pelo escopo da API Pix. Neste caso há um outro arranjo de pagamento, um produto específico que inclusive no caso de pagamento do boleto cancela o Pix e no caso de pagamento via Pix cancela o boleto. Não é que alguém chamou o Pix de, por exemplo, de SX e na verdade é o mesmo arranjo... me parece um produto diferente. E aí entra em qualquer outro escopo regulatório, se algum existir... e o fato dele não ter ou não uma API, ortogonal à existência da API Pix.

Me parece que esse tipo de avaliação vai precisar sempre de casos específicos... casos genéricos podem parecer tranquilos, dá para imaginar casos esdrúxulos que seriam péssimos do ponto de vista regulatório, mas que cada caso precise de avaliação específica. Esse não me soa sirenes de alerta.

Bom, o exemplo que eu dei (Shopline) pode ser diretamente relacionado ao que a API do MercadoPago, PagSeguro, Gerencianet, etc e etc oferecem. No fim das contas, estou vendo que integrar a API Pix e criar cobranças diretamente com ela não será a única forma de "receber um Pix" e conciliar esses recebimentos.

Se o próprio Pix oferecesse a notificação de forma mais facilitada, seria mais fácil transitar entre os PSP e a adoção do Pix como meio de recebimento principal (ou até único) aconteceria em um prazo bem mais curto para muitos tipos de negócios. Não sendo o caso (sendo necessário implementar a API Pix, que é bem mais complexa), na prática os clientes continuarão usando os integradores de sempre e a tal "abertura de mercado" oferecida pelo surgimento do Pix será menos expressiva (será um novo meio de pagamento, inovador em natureza, mas concentrado na mão dos mesmos players de sempre).

rubenskuhl commented 3 years ago

Se for receber um Pix, aí é Pix e precisa seguir a API Pix. Os 3 PSPs citados na mensagem acima alegaram que vão implementar a API Pix como descrito neste repositório; um deles foi descartado por cobrar MDR (%), mas os outros estão na reta final do processo de escolha para serem o PSP escolhido, com a informação clara de que só a API Pix padrão do BACEN leva a um contrato de prestação de serviços.

renatofrota commented 3 years ago

Se for receber um Pix, aí é Pix e precisa seguir a API Pix.

Se eu, como PF ou PJ, autônomo/comerciante/prestador de serviço, usar qualquer intermediador para gerar cobranças e este (intermediador) receber os pagamentos por quaisquer meios (seja boleto, cartão, TEF, TED, criptomoeda, cheque, Pix ou sinal de fumaça), eu não tenho nada a ver com isso. A regulação do Pix se limita ao âmbito do Pix. O intermediador fazer uso do Pix para receber um valor e depois me disponibilizar esse valor (e, inclusive, me notificar que este recurso está disponível) está totalmente fora do contexto do arranjo Pix.

Se você entende o contrário, por favor, fundamente melhor.

Os 3 PSPs citados na mensagem acima alegaram que vão implementar a API Pix como descrito neste repositório; um deles foi descartado por cobrar MDR (%), mas os outros estão na reta final do processo de escolha para serem o PSP escolhido, com a informação clara de que só a API Pix padrão do BACEN leva a um contrato de prestação de serviços.

Você está trazendo informações particulares para o debate. Por favor, observe que a issue onde estamos discutindo tem um aspecto muito amplo que o seu caso de uso particular. Especificamente o trecho onde você diz "os outros estão na reta final do processo de escolha para serem o PSP escolhido" isso não fica claro para os leitores menos informados.

rubenskuhl commented 3 years ago

Se for receber um Pix, aí é Pix e precisa seguir a API Pix.

Se eu, como PF ou PJ, autônomo/comerciante/prestador de serviço, usar qualquer intermediador para gerar cobranças e este (intermediador) receber os pagamentos por quaisquer meios (seja boleto, cartão, TEF, TED, criptomoeda, cheque, Pix ou sinal de fumaça), eu não tenho nada a ver com isso. A regulação do Pix se limita ao âmbito do Pix. O intermediador fazer uso do Pix para receber um valor e depois me disponibilizar esse valor (e, inclusive, me notificar que este recurso está disponível) está totalmente fora do contexto do arranjo Pix.

Se você entende o contrário, por favor, fundamente melhor.

O âmbito do Pix não se resume aos PSPs e ao BACEN, inclui a relação do PSP com correntistas. Por isso há a API Pix. E isso acontece de forma similar em outros arranjos, onde o instituidor do arranjo define o que quiser definir. O BACEN, e que merece aplausos por isso, resolveu padronizar a API. Ponto final, a API é padronizada. Ficar procurando buracos na regulação é algo que não terá o meu apoio e espero que o BACEN resista. Se você quiser propor soluções para os casos de uso de 3 partes, aí sim proponha, mas não ignorando os problemas relevantes que surgem para se resolver.

Os 3 PSPs citados na mensagem acima alegaram que vão implementar a API Pix como descrito neste repositório; um deles foi descartado por cobrar MDR (%), mas os outros estão na reta final do processo de escolha para serem o PSP escolhido, com a informação clara de que só a API Pix padrão do BACEN leva a um contrato de prestação de serviços.

Você está trazendo informações particulares para o debate. Por favor, observe que a issue onde estamos discutindo tem um aspecto muito amplo que o seu caso de uso particular. Especificamente o trecho onde você diz "os outros estão na reta final do processo de escolha para serem o PSP escolhido" isso não fica claro para os leitores menos informados.

É um exemplo de que como todo caso prático não tem problemas teóricos. Você escolheu a lista, não eu, e como eu já tinha lidado com todos esses prestadores pude responder o que eles propõe.

renatofrota commented 3 years ago

Se for receber um Pix, aí é Pix e precisa seguir a API Pix.

Se eu, como PF ou PJ, autônomo/comerciante/prestador de serviço, usar qualquer intermediador para gerar cobranças e este (intermediador) receber os pagamentos por quaisquer meios (seja boleto, cartão, TEF, TED, criptomoeda, cheque, Pix ou sinal de fumaça), eu não tenho nada a ver com isso. A regulação do Pix se limita ao âmbito do Pix. O intermediador fazer uso do Pix para receber um valor e depois me disponibilizar esse valor (e, inclusive, me notificar que este recurso está disponível) está totalmente fora do contexto do arranjo Pix. Se você entende o contrário, por favor, fundamente melhor.

O âmbito do Pix não se resume aos PSPs e ao BACEN, inclui a relação do PSP com correntistas. Por isso há a API Pix. E isso acontece de forma similar em outros arranjos, onde o instituidor do arranjo define o que quiser definir. O BACEN, e que merece aplausos por isso, resolveu padronizar a API. Ponto final, a API é padronizada. Ficar procurando buracos na regulação é algo que não terá o meu apoio e espero que o BACEN resista. Se você quiser propor soluções para os casos de uso de 3 partes, aí sim proponha, mas não ignorando os problemas relevantes que surgem para se resolver.

A relação dos PSP com os correntistas no âmbito do Pix, no que diz respeito a enviar e receber Pix, especificamente Pix, por todos os seus canais de atendimento, faz total sentido que seja padronizado (inclusive a API, para quem quiser utilizá-la), para uma melhor experiência. Mas não é porque o Pix está sendo lançado que todas as soluções de cobrança devam, imediatamente, sofrer qualquer penalização em relação à recursos (features).

Os 3 PSPs citados na mensagem acima alegaram que vão implementar a API Pix como descrito neste repositório; um deles foi descartado por cobrar MDR (%), mas os outros estão na reta final do processo de escolha para serem o PSP escolhido, com a informação clara de que só a API Pix padrão do BACEN leva a um contrato de prestação de serviços.

Você está trazendo informações particulares para o debate. Por favor, observe que a issue onde estamos discutindo tem um aspecto muito amplo que o seu caso de uso particular. Especificamente o trecho onde você diz "os outros estão na reta final do processo de escolha para serem o PSP escolhido" isso não fica claro para os leitores menos informados.

É um exemplo de que como todo caso prático não tem problemas teóricos. Você escolheu a lista, não eu, e como eu já tinha lidado com todos esses prestadores pude responder o que eles propõe.

Eu não escolhi este repositório para abrir esta issue ao acaso. Eu estou propondo uma melhoria para o Pix, que pode beneficiar a sociedade, e o meio de comunicação com a equipe que está desenvolvendo e implantando escolheu este canal. Onde mais eu deveria fazê-lo?

Não me leve a mal ou para o lado pessoal. Eu estava falando especificamente do seu comentário anterior. Para um desavisado que passar por esta issue em particular e ler aquele seu comentário, pode dar a impressão de que estamos (todos aqui) em busca de decidir algum PSP em particular para atender uma necessidade conjunta nossa. Não sei se você confundiu com a issue #57 onde você já falou mais abertamente da sua busca por um PSP. O fato é que esta issue não tinha essa discussão até esse momento e você não deixou no seu comentário que estava se referindo a sua busca pessoal por uma solução, para atender as suas necessidades (e que, convenhamos, nem tem qualquer relação com as mudanças que estamos propondo à sistemática de "Notificação de Pagamentos" que é o título desta issue aqui, #62).

rubenskuhl commented 3 years ago

Os comentários que faço aqui também não relação com a busca que estou fazendo, apenas volto a comentar que casos práticos são bem mais úteis nas definições de políticas públicas. Só que para isso eles precisam ser reais, não baseados em suposições que os fatos facilmente demonstrem sua não aplicabilidade.

ninrod commented 3 years ago

Prezados, mais uma vez agradeço pelas contribuições.

Aqui e em #111 pode-se ver que os endpoints /webhook podem ser melhorados. Sugiro focarmos, como @rubenskuhl também ressaltou, nos casos de uso específicos.

Achei interessante o caso de uso listado em #111: o usuário recebedor estabelecer uma URL diferente para o recebimento de QR Estáticos.

Em alguns pontos neste repo foi mencionada a funcionalidade de estabelecer URLs diferentes por chave Pix, o que considero menos problemático do que estabelecer "por cobrança", e até interessante:

seria muito melhor eu ter autonomia para definir como quero receber as notificações de diferentes Pix, relacionados a diferentes Cobranças/chaves

Vou abrir uma nova issue para reunirmos todos os comentários a respeito de melhorias no webhook e marco vocês lá, ok?

feinstein commented 3 years ago

@ninrod me passou uma ideia pela cabeça que talvez possa ajudar a se evitar mTLS em um futuro esquema alternativo.

Podemos encriptar a URL do webhook usando a chave publica do PSP recebedor. Dessa forma um hacker não tem como saber qual é a URL que está dentro do QR Code, apenas o PSP recebedor saberá qual é a URL de notificação, usando sua chave privada para desencriptar a URL.

Sei que isso não soluciona tudo, nem é algo 100% garantido, mas pode ser uma camada a mais de segurança a ser adotada. Apenas uma sugestão a mais ser considerada.

AdamTeodoro commented 1 year ago

Na real poderia até ser algo mais simples, junto com os parâmetros de geração de QRCODE o recebedor do pagamento poderia colocar uma URL como opcional, então se a url estivesse presente o sistema do banco central deveria enviar uma requisição post com os dados como: horário do pagamento, status do token de pagamento como "qrcode finalizado", ou "aguardando recebimento de novos pagamentos" (para o mesmo qrcode) e status do pagamento como sendo "pagamento aprovado" ou "cancelado qrcode expirado"

Guihgo commented 1 year ago

@AdamTeodoro é um ótimo recurso no mundo teórico, sem dúvidas facilitaria muito para os desenvolvedores e usuários finais. Mas no mundo real, me surgem algumas objeções.

  1. Não vejo o BACEN se beneficiando dessa feature, visto que só teria mais carga de trabalho e mais tráfego de dados em seus serviços. O BACEN deixa essa carga de trabalho para o PSP, que implementam dashboard para configuração da url de webhook sob ambiente controlado.

  2. O BACEN visa aumentar seu ecossistema para ampliar a concorrência entre as partes envolvidas. Se ele admitir essa responsabilidade, ele atira no próprio pé, pois estaria tomando uma das funções de muitos PSP e seus subordinados.

  3. O QR Code estático utiliza um protocolo adaptado do EMVco, assim chamado de BR Code, tem limite de 99 caracteres por identificador (tag). Teria que readaptar o protocolo para aceitar mais que 99 caracteres, visto que as URLs podem possuir mais que 99 caracteres. Não que seja impossível de fazer, aliás já foi feito, como o caso desta lib (emvqrcode-tools), qual permite criar qr code sob protocolo EMVco para transações em blockchain (Ethereum - EVM), visto que a hash das transações, data e assinaturas possuem mais que 99 caracteres. Mas fazer essa readaptação, demandaria, de todos PSP, o esforço para atualizarem suas bibliotecas de geração de br code com mais de 99 caracteres por tag, assim permitindo URLs completas.

  4. Apesar de haver meios técnicos para produzir essa feature e formas de se proteger às brechas na seguranças que podem vir a surgir, como já mencionado anteriormente pelo @rubenskuhl nessa issue. Na prática, essa feature torna-se inviável para o modelo de negócio limitado pela tecnologia do Pix.

Ao meu ver, essa feature só estará mais resolvida quando o Real Digital surgir, pois como ele é baseado em tecnologia blockchain, as transações ficariam em um livro onde os PSPs teriam acesso. E um modelo de negócio será a venda de consulta das transações sob demanda através de smart contracts que ficassem ouvindo as transações autorizadas e serviços que emitissem webhook, e mesmo assim, não seria responsabilidade do BACEN fazer a notificação a qualquer um. Mas teremos que esperar seu desenvolvimento para vermos como serão as novas regras e suas restrições de acesso para essa tecnologia.

Por enquanto, sugiro utilizar um PSP que te forneça a opção de webhook para recebimentos em Pix.

AdamTeodoro commented 1 year ago

O PIX ficaria útil e o custo não seria tanto assim é só o pessoal acomodado tirar o traseiro da cadeira e começar a criar coisas realmente úteis, pra mim tá mais pra babação de ovo de gateway de pagamento que quer meter a mão em uma porcentagem do valor transferido por pix sendo que o próprio banco central poderia cobrar o custo fixo da requisição na transferência do Pix, bem melhor que deixar os gateways de pagamentos saquearem empresas já que cobram até 5% do valor da transferência por pix que tinha o objetivo de ser gratuito, só um idiota acha que uma requisição post custaria em % do valor da transferência, isso deveria ser uma taxa fixa, independentemente do valor transferido.

rubenskuhl commented 1 year ago

O PIX ficaria útil e o custo não seria tanto assim é só o pessoal acomodado tirar o traseiro da cadeira e começar a criar coisas realmente úteis, pra mim tá mais pra babação de ovo de gateway de pagamento que quer meter a mão em uma porcentagem do valor transferido por pix sendo que o próprio banco central poderia cobrar o custo fixo da requisição na transferência do Pix, bem melhor que deixar os gateways de pagamentos saquearem empresas já que cobram até 5% do valor da transferência por pix que tinha o objetivo de ser gratuito, só um idiota acha que uma requisição post custaria em % do valor da transferência, isso deveria ser uma taxa fixa, independentemente do valor transferido.

São coisas diferentes aí. Uma é porque o Banco Central não presta serviços diretamente; é definição da missão do Banco Central não ser um banco de varejo. Então necessariamente as transações acontecem entre instituições autorizadas pelo Banco Central, quer elas não tenham o Banco Central no meio do arranjo (ex: boleto e cartões) quer elas tenham (ex: Pix).

A outra é porque surgiu e se estabeleceu o pagamento por % no Pix. No começo do projeto em 2020 haviam mais prestadores cobrando valores fixos do que percentuais... mas isso foi mudando e acabou-se consolidando a realidade de mais prestadores com percentuais. Curiosamente, parece ter sido quem recebe valores baixos que pressionou para isso, por equivalência com cartão de débito. Diferente de boleto, onde o usual do mercado é valor fixo independente do valor do título. Isso significa que há um subsídio cruzado entre quem recebe valores menores, pagando menos por transação, e quem recebe valores maiores, que provavelmente paga mais do que de outra forma.

Mas eu não lembro de já ter visto cobrança de 5%... o típico é algo em torno de 1%, como 0.99% (MP), 1,19% (Efí) e por aí vai. Que eu também acho estranho ao invés de valor fixo, mas aconteceu pelos motivos acima. E quem tem volume acaba não pagando percentual.

AdamTeodoro commented 1 year ago

Não entendi pq seria banco de varejo se estaria prestando serviço para sistemas de empresas?, o no caso do pix para pessoa física não tá quebrando nenhuma missão do banco central?, a porcentagem que eles pegam sobre o pix é a quela velha exploração clássicas que os gateways de pagamentos já praticam criminosamente, já que não tem regulamentação, eu disse 5% com base em um caso somando todo o valor que o gateway de pagamento pegava, que seria 1,19% taxa do pix + taxa de transferência de 3,67 reais do pagarme, em porcentagem é errado já que vão lucrar por volume de transferências, isso só serve para encarecer os preços para o consumidor final e afetar negativamente nas vendas, nesse caso o gateway de pagamento ficou com aproximadamente 5% do total que era de uns 97 reais.

rubenskuhl commented 1 year ago

Não entendi pq seria banco de varejo se estaria prestando serviço para sistemas de empresas?, o no caso do pix para pessoa física não tá quebrando nenhuma missão do banco central?,

Para empresas também são bancos de varejo, só de outro segmento. O Banco Central é um banco de bancos, ele tem como clientes outros bancos e instituições de pagamentos.

Sobre a percentagem de gateways específicos, sugiro procurar algum da lista em #76 que tenha condições melhores.