Histórico de mensagens sobre webhook pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook pix
# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Comparando a sua configuração de Apache com a do exemplo da Efí (abaixo), o que é igual e o que é diferente ?


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

#Chave pública da Efí
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt

# mTLS Efí
SSLVerifyClient require
SSLVerifyDepth 3

# Tratando o /pix, redirecionando as requisições sempre para /webhook
Alias "/pix/" "/var/www/webhook/index.php"
Alias "/pix" "/var/www/webhook/index.php"

#
# ...
#



# dúvidas
Avatar discord do usuario juliodsgarcia

juliodsgarcia

Boa tarde, amigos, tudo bem? Alguém já implementou o webhook pix com next.js?

# dúvidas
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Boa tarde @andrealencar_14844 ! Aqui na Efí, é possível você emitir as cobranças, configurando um webhook e qualquer alteração de status dessa cobrança, será disparado uma notificação apra o seu sistema. Em nossa documentação, você encontra a descrição e exemplos de como essa notificação são disparadas.
Pix: https://dev.efipay.com.br/docs/api-pix/webhooks#recebendo-callbacks
Boleto/cartão/carnê/assinatura: https://dev.efipay.com.br/docs/api-cobrancas/notificacoes

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Então como você passou /api/pix/webhook, vai ficar /api/pix/webhook (cadastro) e /api/pix/webhook/pix (notificações)

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Detalhe: você configurando /api/pix/webhook, o teste vai ser feito em /api/pix/webhook, mas o efetivo envio do webhok em /api/pix/webhook/pix

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Uma alteração para checar também o common-name no exemplo da Efí:
if ($ssl_client_verify != SUCCESS) {
return 403;
}
if ($ssl_client_s_dn != 'gn-webhook-pix') {
return 403;

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim.

E além da certificação do exemplo, que é de ser a CA da Efí, você deve também validar se é sua chave Pix, e pode também validar:
- Se o CN (common-name) é gn-webhookpix
- Se o IP é o IP de webhook Pix da Efí.

# pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

No retorno do webhook você terá algo do formato:

// Pix recebido
{
"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"
}
]
}

# pix
Avatar discord do usuario gabriel_efi

gabriel_efi

Ver Respostas

A URL que você vai utilizar @sombra_madel é aquela que você fizer a configuração do webhook, sendo uma rota que você vai criar dentro do seu servidor. Recomendamos analisar nossa documentação para endenter o processo: https://dev.efipay.com.br/docs/api-pix/webhooks/

# pix
Avatar discord do usuario fathdev

fathdev

Ver Respostas

Olá, tem algum método que faz a Efí enviar um webhook a mim se um reembolso for emitido seja por parte do cliente que conseguiu abrir uma disputa (não sei se aqui tem med, por favor responder se tem tbm) ou se eu devolvi o pagamento a efi ja enviar um webhook a mim tambem do pix e eu conseguir identificar no meu backend qual foi

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Apesar do nome de arquivo igual, já tentou atualizar para este ?
https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O webhook só vai retornar se for pago... GET em /pix mostra que foi pago ?

# dúvidas
Avatar discord do usuario guilherme_efi

guilherme_efi

@adilalima, como vai?
Na SDK o parâmetro 'x-skip-mtls-checking' deve ser passado no array 'headers'. Assim:

php
$webhook = EfiPay::getInstance([
'client_id' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_CLIENT_ID : CONF_EFI_CLIENT_ID,
'client_secret' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_CLIENT_SECRET : CONF_EFI_CLIENT_SECRET,
'certificate' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_PIX_CERTIFICATE : CONF_EFI_PIX_CERTIFICATE,
'headers' => ['x-skip-mtls-checking' => "true"],
]);

# dúvidas
Avatar discord do usuario adilalima

adilalima

Opa, tudo ótimo e contigo?
Então, mesmo seguindo esse guia e fazendo (supostamente) igual acabo recebendo o mesmo erro de código 400 e de descrição "A autenticação de TLS mútuo não está configurada na URL informada":

public function config_webhook(array $data): void
{
$webhook = EfiPay::getInstance([
'client_id' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_CLIENT_ID : CONF_EFI_CLIENT_ID,
'client_secret' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_CLIENT_SECRET : CONF_EFI_CLIENT_SECRET,
'certificate' => CONF_EFI_SANDBOX ? CONF_EFI_DEV_PIX_CERTIFICATE : CONF_EFI_PIX_CERTIFICATE,
'x-skip-mtls-checking' => "true",
]);

$webhook = $webhook->pixConfigWebhook(
['chave' => CONF_EFI_PIX_KEY],
['webhookUrl' => CONF_EFI_PIX_WEBHOOK_URL]
);

$this->call(code: 200)->back(['data' => $data, 'headers' => $this->headers, 'webhook' => $webhook]);
}

É um comportamento esperado?

# dúvidas
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @adilalima, tudo bem?
Dê uma olhada em nosso exemplo da SDK que mostra como enviar o atributo "x-skip-mtls-checking" na instância da classe EfiPay.

# pix
Avatar discord do usuario bernardo_wtec

bernardo_wtec

Bom dia, pessoal. Estou tentando configurar o webhook Pix em meu servidor (com Nginx) seguindo a documentação e as vídeo-aulas disponíveis, porém ao fazer o teste executando o arquivo pixConfigWebhook.php da SDK, está retornando a mensagem "504 Endpoint request timed out". Já tentei revisar algumas vezes mas ainda não descobri o que posso estar fazendo de errado. Alguém poderia me dar alguma ideia?

# dúvidas
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você precisa lidar com eventuais repetições para garantir idempotência. Mas fora repetições fortuitas, um possível motivo para receber um webhook de um Pix depois do pagamento é você comandar devoluções. Mas ainda você pode anotar na tabela algo como "solicitei devolução", para então tratar o campo de devolução.

# dúvidas
Avatar discord do usuario meliodas7010

meliodas7010

Ver Respostas

ah! certo. Essa parte de webhook esta um pouco confusa pra mim pois não consigo testar localmente.
Na documentação mostra o corpo da requisição pix, mas ainda estou um pouco confuso. Gostaria de saber se estou tendo o approach correto:
Eu gero a cobrança pix pro meu cliente e salvo no meu banco aquela cobrança como pendente usando o txid como identificador. No meu webhook eu recebo a requisição:

// Pix recebido
{
"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"
}
]
}
O que quer dizer que o pix com txid fc9a43k6ff384ryP5f41719 foi pago no valor de 0.01, então verifico aquela transação salva no meu banco e continuo minha logica a partir desse ponto. Esta correto?
Minha duvida é se eu vou receber outras requisições no meu webhook com o mesmo txid podendo assim fazer minha logica ser executada mais de uma vez