Histórico de mensagens sobre webhook pix em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook pix
Canal: pix
Avatar discord do usuario lucapwn

lucapwn

Ver Respostas

Olá, boa noite! Tudo bem? 😀
Estou tentando criar meu próprio webhook em PHP (no meu servidor dedicado) para receber as notificações de pagamentos realizados via Pix, e há algum problema, pois não recebo as notificações de pagamentos. Segue o código em PHP abaixo:

header("Content-Type: application/json");
$request = file_get_contents("php://input");
file_put_contents("webhook.json", print_r($request, true));
print_r($request);
?>

Recebo a notificação de configuração do link do webhook normalmente:

{
"webhookUrl": "https://exemplo-pix/webhook"
}

Mas não recebo a notificação quando realizo o pagamento:

{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}

Tentei utilizar o exemplo de configuração de servidor em Python desenvolvido em Flask (https://dev.gerencianet.com.br/v1/docs/api-pix#section-exemplos-de-uma-configura-o-de-servidor-), mas não consegui seguir esse exemplo. ☹️

Já testei em sites de terceiros (como o https://webhook.site), e funciona normalmente (recebi a notificação do pagamento).

O meu servidor possui certificado SSL e a versão do TLS é 1.2.

Preciso receber essas notificações e armazená-las em algum lugar para verificar se o pagamento foi realizado. Vocês podem me ajudar? Irei ficar muito grato! Muito obrigado! 😀

Avatar discord do usuario Deleted User

Deleted User

Ver Respostas

Olá, boa noite. Estou tentando configurar um webhook à uma chave PIX porém estou recebendo este erro: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api-pix-h.gerencianet.com.br', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLError(9, '[SSL] PEM lib (_ssl.c:4046)')))

Estou utilizando o SDK do python, seguindo os exemplos do github.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Detalhe que aí você não pode usar a lista de IPs da Gerencianet para filtrar acesso ao webhook, pois serão os IPs do pix.ae.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Ou usar o mtls.pix.ae, que é de graça.

Pra quem tem dificuldades de implementar os webhooks por falta de suporte em hospedagem compartilhada para configurar mTLS, o Pix.ae agora oferece proxy de callbacks com mTLS.

Pra usar é muito simples: é só prefixar o seu domínio com mtls.pix.ae/. Por exemplo:

Para: https://exemplo.com.br/webhookpix
Use: https://mtls.pix.ae/exemplo.com.br/webhookpix

Obs: no ambiente de homologação, prefixe com mtls-h.pix.ae/
O autor e mantenedor do pix.ae é o <@!440035527127990273>, que não está online no momento mas é habituê do canal.

Avatar discord do usuario caiopedreira

caiopedreira

<@!243069612877414405> também tinha essa dúvida até o momento em que descobri que existem dois endpoints para o webhook do pix: "/xyz/pix" que é usado pra recepção do webhook, e outro "/xyz" para configuração do webhook, sendo "xyz" qualquer nome desejável.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, pq aí ao invés de chamar /webhook/pix, vai chamar /webhook?ignorar=/pix . E aí isso vira parâmetro, não é mais parte do path.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Pode ser o nome do script tratando o webhook. Ou você pode ignorar o /pix colocando a URL como /webhook/?ignorar=

Avatar discord do usuario Julia Efí

Julia Efí

Boa noite <@!337383375289712651>. "webhook inválido" é uma resposta esperada dentro da nossa API, como a url respondeu com um código diferente de 200, quer dizer que algum requisito de cadastro do webhook ela não está cumprindo. Verifique na nossa documentação se você está seguindo os passos corretamente: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-configurar-o-webhook-pix
Sugerimos também que verifique a sessão de validação mTLS que é uma etapa importante do cadastro do webhook: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-entendendo-o-padr-o-mtls

Avatar discord do usuario rubenskuhl

rubenskuhl

Das rotas, você precisa tanto do webhook/ quanto do webhook/pix. O webhook/ é o que é testado pela GN na ativação, e o webhook/pix é o que é chamado na notificação de quitação.

Avatar discord do usuario monkyalan

monkyalan

Ver Respostas

a primeira e rapida
ao realizar a requisição PUT no /webhook:chave, a resposta que o gerencianet trará é útil? precisarei utilizar o conteudo dele pra alguma coisa ? poderia simplesmente dispensar ?

===segundo:===
num sistema, eu só teria que cadastrar o webhook apenas uma vez ? E se eu enviasse a requisição novamente, o webhook seria "sobescrito" ? Teria algum problema de sobrecarga na API de vocês? teria a possibilidade do meu servidor ser bloqueado?

=== terceiro: ===
Nas configurações do servidor para aceitar o webhook, como está no site (https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks)
meu sistema (feito em PHP) NÃO está utilizando o esquema de rotas

na seção:
// invés da rota /webhook, eu colocaria o caminho para o diretório simplesmente? (ex: {documentRoot}/.../.../webhook/)
SSLVerifyClient require
SSLVerifyDepth 3


na seção ALIAS seria basicamente a mesma coisa ?
Alias "/webhook/pix/" "/var/www/webhook/index.php" // Seria: {documentRoot}/../../webhook/pix/index.php (?) ou eu descartaria essa seção ?
Alias "/webhook/pix" "/var/www/webhook/index.php"

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Você pode receber notificações automaticamente via webhook referente às modificações de status de uma cobrança Pix. Para isso, será necessário a inserção de uma chave pública da Gerencianet em seu servidor para que a comunicação obedeça o padrão mTLS.
Veja mais detalhes em nossa documentação: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-webhooks

Ou seja, primeiramente para um servidor dedicado, você deve inserir uma chave pública da Gerencianet em seu servidor para que a comunicação obedeça o padrão mTLS (forma de autenticação mutua).
Veja um exemplo desta configuração em um servidor Apache ou Nginx: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-exemplos-de-configura-es-de-servidor

Então com seu servidor configurado com mTLS em seu domínio (ex: https://seudominio.com.br/webhook/" class="link-msg">https://seudominio.com.br/webhook/), você irá consumir a rota PUT /v2​/webhook/:chave uma única vez para registrar seu webhookUrl vinculado à sua chave Pix.
Acrescentando uma observação que é a adição do /pix no final da sua URL. Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:
{
"webhookUrl": "https://seudominio.com.br/webhook"
}

No entanto, a URL será registrada com o /pix no final, assim: https://seudominio.com.br/webhook/pix.
Ou seja, esta adição do /pix também dever ser tratada nas configurações de seu servidor para que na rota /webhook/pix de seu servidor exija o certificado CA da Gerencianet.
Veja mais detalhes sobre o endpoint: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-configurar-o-webhook-pix

Com isto, todo Pix gerado com sua chave Pix e que possua um txid, serão enviados as notificações para sua URL.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

No envio de Pix, você precisa passar uma chave Pix para que o webhook seja usado para notificar se o envio de Pix deu certo ou não. Minha sugestão para facilitar conciliação posterior é criar uma chave aleatória só para envio, cujo único objetivo é ter um cadastro de webhook possivelmente diferente do de recebimento.

Avatar discord do usuario rubenskuhl

rubenskuhl

O usuário no caso seria o gn-webhook-pix (Gerencianet).

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Configurar pelo NGINX mesmo. O NGINX é um servidor HTTPS muito sólido. E aí só chega no PHP se tiver passado na checagem de mTLS do NGINX, então nem precisa duplicar a checagem. A única coisa interessante de checar no webhook PHP é se a chave Pix é sua mesmo, por causa da possibilidade de uso indevido do seu webhook por outro usuário na GN (que o mTLS em si não mitiga, mas conferir a chave, sim)

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não, mas você pode gerar um QR-Code estático com txid. Isso também vai permitir notificação no webhook e pesquisa no /pix. Mas a GN não vai checar o valor, então você precisa decidir a regra de negócio de se o cliente depositar um valor fora da faixa que você esperaria.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Quando você fez a ativação, deu tudo certo ? GET /webhook mostra ele ativo para a chave Pix da cobrança teste ?

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Outra forma de visualizar os Pix recebidos se você não for utilizar o webhook é pelo GET v2/pix, esta rota retorna apenas Pix recebidos facilitando a sua verificação. Você pode informar como parâmetro um período que deseja verificar se teve recebimento ou não.

Avatar discord do usuario pedrohenriquebufulin

pedrohenriquebufulin

Ver Respostas

É tipo assim, o que eu preciso é verificar se um pix foi pago pra enviar um item pro usuário.
Só que sem o webhook, ou eu faço uma rota pra ver se o cara pagou aquele pix, ou eu faço um cronjob que daqui 5 minutos vai chamar e enviar o item pro sujeito.