Histórico de mensagens sobre url em pix

EXIBINDO CONVERSAS RECENTES:

Texto: url
Canal: pix
Avatar discord do usuario yasmin_efi

yasmin_efi

Ver Respostas

Boa tarde @vitor.oliveira94! Tudo bem? Apos o PUT do cadastro com sucesso, as notificações serão encaminhadas para a URL cadastrada

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

boa tarde. Não consegui ter um retorno sobre o pagamento pix ainda. Pelo que entendi fazemos um PUT para apontar qual será a URL de retorno de uma determinada chave. Apos isso como fazemos para receber as notificações? Estou utilizando PHP

Avatar discord do usuario allanmello

allanmello

Ver Respostas

João, fiz a alteração p/ usar "hmac", e estou recebendo o status 400:
{
"nome": "webhook_invalido",
"mensagem": "A autenticação de TLS mútuo não está configurada na URL informada"
}

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @vitor.oliveira94, tudo bem?
A sua URL só irá aparecer registrada ao consultar essa rota uma vez que o PUT /v2/webhook/:chave responda com sucesso.

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 _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 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 jaimepremy

jaimepremy

Ver Respostas

Oi Rubens, obrigado por responder. Então, o mesmo código roda com sucesso no loclahost. Só no servidor que dá este problema. Consigo baixar o cerificado digitando o url do servidor, então não há problema de perimissões no diret´rio

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 vitor.oliveira94

vitor.oliveira94

to mandando assim: curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/v2/cob", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $token",
"Content-Type: application/json"
),
));

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Boa tarde! Tudo bem? Estou fazendo a integração com a API pix PHP e tudo certo ao gerar o token. Porém quando vou fazer a requisição para 'https://pix-h.api.efipay.com.br/v2/cob' recebo error : client invalid. Teria algum exemplo com curl?

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

Curl em shell script e Curl em PHP tem número similar de linhas de código para conexão do que as outras alternativas de implementação. Não tem nada de chato. 😉

Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

Opa @alissonmaciel_32335, tudo bem?
Para o cadatro de um webhook ou para simular o recebimento de uma callback? Cadastrar um webhook por CURL me parece bem chato, você teria que autenticar, receber o token e só então usar esse token pra configurar o webhook. E além disso teria que transformar o certificado PKCS 12 em arquivos PEM pro CURL aceitar.

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Eu não vi um exemplo de webhook via curl

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Boa tarde! Alguém pode me passar um script curl para webhook?

Avatar discord do usuario alexandrerod50

alexandrerod50

ao executar o pixConfigWebhook.php para cadatrar o webhook me retornou isso: 400webhook_invalidoA autenticação de TLS mútuo não está configurada na URL informada.
Alguém sabe o que esta errado?

Avatar discord do usuario alexandrerod50

alexandrerod50

Ver Respostas

é possível usar URL de retorno na criação do pix?