Histórico de mensagens sobre webhook em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook
Canal: pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @allanmello, tudo bem?
Uma solução que talvez atenda seu caso seja a adição de um hmac para acessar sua URL.
Você pode dar um olhada nisso em https://dev.efipay.com.br/docs/api-pix/webhooks/#entendendo-o-padr%C3%A3o-mtls

Avatar discord do usuario allanmello

allanmello

Ver Respostas

Bom dia, minha API possui uma ApiKey de segurança, ou seja para acesso externo a minha API o Header tem que enviar a ApiKey, tem como registrar essa ApiKey no cadastro da minha webhook para a Efí enviar no header?
Eu li um tempo atrás que tem como fazer isso, mas procurei e não encontrei na doc na hora de registrar o webhook.

Avatar discord do usuario _ganimedes

_ganimedes

Ver Respostas

Bom dia,
Estou com problema na hora de enviar a URL de configuracao do pix
estou recebendo o seguinte erro
error {
nome: 'webhook_invalido',
mensagem: 'A URL informada respondeu com o código HTTP 403'
}

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Então, como você já você viu, a Efí aciona o webhook se o valor em homologação for de até R$10. Então a forma de testar é essa.

Avatar discord do usuario vinicius_cs

vinicius_cs

Ver Respostas

É que eu queria alterar o status para pago pra poder testar o webhook, gerei um Pix com qrcode no meu site, gostaria de "pagar" ele e ver se o webhook está funcionando corretamente

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Além do webhook, o que você quer dizer como simulação de pagamento ? Se for aparecer o objeto pix no /cob, a Efí ainda não faz isso em homologação.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

É que os dois cenários de webhook são esses... ou o cliente vai pagar, ou o cliente não vai pagar. O valor é só para escolher qual cenário você vai testar.

Agora, mais de 1 quatrilhão de Reais eu não sei se funciona, só recebi Pix de 1 quatrilhão... só o Tio Patinhas para fazer Pix de 1 quaquilhão.

Avatar discord do usuario vinicius_cs

vinicius_cs

Ver Respostas

Bom dia, pagamentos acima de R$10,00 o Webhook não funciona? 😕

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

É possível sim. O /webhook faz os mesmos testes que produção, mas se referindo à CA de homologação.
Em Laravel, erro HTTP 419 indica que você está exigindo token, quando não deveria.

Avatar discord do usuario vinicius_cs

vinicius_cs

Ver Respostas

É possível testar Webhook em homolog?

Estou desenvolvendo em Laravel, fiz a rota com o /webhook, no entanto ao executar:
https://pix-h.api.efipay.com.br/v2/webhook/:chave

É retornado:
{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 419"
}

No WebhookController eu coloquei apenas isso para testar:

php
public function handle(Request $request)
{
$payload = $request->all();

return response()->json(['status' => 200]);
}

Nas rotas coloquei assim:
php
Route::prefix('webhook')->group(function () {
Route::get('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::post('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::put('/', [WebhookController::class, 'handle'])->name('webhook.handle');
});

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Isso. O que você pode fazer em homologação é criar cobranças de até R$10, que aí você recebe o acionamento de webhook.

Avatar discord do usuario peterfritz

peterfritz

E verifica o IP e o segredo passado na sua URL do webhook antes de processar o callback!
imagem enviada na mensagem pelo usuario peterfritz

Avatar discord do usuario peterfritz

peterfritz

Algo assim funcionaria:

js
import axios from "axios";
import https from "https";

const subdomain = process.env.NODE_ENV === "production" ? "pix" : "pix-h";

const clientCreds = clientId + ":" + clientSecret;
const authorization = Basic ${Buffer.from(clientCreds).toString("base64")};

const certificate = Buffer.from(certificateBase64Encoded, "base64");

const httpsAgent = new https.Agent({
pfx: certificate,
passphrase: "",
});

const oAuthResponse = await axios.post(
https://${subdomain}.api.efipay.com.br/oauth/token,
{
grant_type: "client_credentials",
},
{
headers: {
Authorization: authorization,
"Content-Type": "application/json",
},
httpsAgent,
}
);

const token = oAuthResponse.data.access_token;

const efiApi = axios.create({
baseURL: https://${subdomain}.api.efipay.com.br,
headers: {
Authorization: Bearer ${token},
"Content-Type": "application/json",
},
httpsAgent,
});

await efiApi.put(
/v2/webhook/${process.env.PIX_KEY},
{
webhookUrl:
${process.env.WEBHOOK_BASE_URL}/api/webhook/efi?secret=${process.env.WEBHOOK_SECRET}&ignore=.replace(
"//api",
"/api"
),
},
{
headers: {
"x-skip-mtls-checking": "true",
},
}
);

Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

Fala @blini_10032, tem sim, uso serverless e edge para receber os callbacks, então pra mim também não foi possível usar mTLS. Mas a Efí suporta um cabeçado x-skip-mtls-checking na criação do webhook que, se tiver como valor true, irá pular a validação do mTLS.
https://dev.efipay.com.br/docs/api-pix/webhooks/#:~:text=Certbot%20por%20exemplo.-,Skip%2DmTLS,-Para%20hospedagem%20em>">Documentação do Skip-mTLS.

> Só lembre-se de verificar se o IP que envia a requisição https://sejaefi.com.br/central-de-ajuda/api/quais-enderecos-de-ip-gerencianet-utiliza#conteudo>">pertence à Efí e enviar um segredo conhecido apenas pelo seu servidor na URL quando criar o seu webhook como recomendado na documentação.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, faz. Segue o texto do autor do pix.ae:

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/

Avatar discord do usuario blini_10032

blini_10032

"..fazer apenas essa parte nessas soluções, não precisa portar tudo pra AWS/OCI."
sim @rubenskuhl eu só preciso de um lugar pra processar o webhook, o resto tá td pronto, só falta isso pra eu lançar

Avatar discord do usuario blini_10032

blini_10032

Ver Respostas

tem algum jeito de usar o webhook sem certificado?

Avatar discord do usuario rubenskuhl

rubenskuhl

O pix.chaves.{chave}.webhook.notificacao.pagador precisa ser true.

Avatar discord do usuario rubenskuhl

rubenskuhl

{
"pix": {
"receberSemChave": true,
"chaves": {
"355e4568-e89b-1243-a456-006655440001": {
"recebimento": {
"txidObrigatorio": false,
"recusarTipoPessoa": "PF",
"qrCodeEstatico": {
"recusarTodos": false
},
"webhook": {
"notificacao": {
"tarifa": true,
"pagador": true
}
}
}
}
}
}
}

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Tem que configurar para recebedor o pagador no webhook. Mas além do webhook, ele fica disponível também no extrato de conciliação.

E não é pq tem algo no app que tenha na API... o BACEN tem restrições específicas para API devido a possível processamento em massa de dados pessoais.