Histórico

EXIBINDO CONVERSAS RECENTES:

Texto: webhook 400
# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver RespostasVer no Discord

Ok, no $body insira o ?ignorar=
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php?ignorar="
}';

E no arquivo "/webhook.php" inseira o exemplo de código abaixo:

php

function resposta($status, $mensagem, $dados)
{
$resposta['status'] = $status;
$resposta['mensagem'] = $mensagem;
$resposta['dados'] = $dados;
$json_resposta = '
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

header("HTTP/1.1 " . $status);
echo $json_resposta;
}

function salvar($dados)
{
// Crie um arquivo .;json para salvar as informações
$nomeArquivo = './dados.json';
$dadosGravados = json_decode(file_get_contents($nomeArquivo), true);
$arquivo = fopen($nomeArquivo, 'w');

// Incrementa as informações enviadas com o que já havia gravado
array_push($dadosGravados, $dados);

if (fwrite($arquivo, json_encode($dadosGravados))) {
resposta(200, "Requisição realizada com sucesso!", $dados);
} else {
resposta(300, "Falha ao salvar os dados da requisição.", $dados);
}

fclose($arquivo);
}

function requisicao($metodo, $body, $parametros)
{
switch ($metodo) {
case 'POST':
salvar($body);
break;
case 'GET':
resposta(200, "Requisição realizada com sucesso!", $body);
break;
}
}

// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);

try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
resposta(400, $e->getMessage(), $e);
}

A fim de teste, neste exemplo está salvando o json recebido em um arquivo dados.json. Então na mesma raiz crie-o com permissão de leitura e escrita. E escreva dentro do arquivo dados.json assim: [] para iniciar o json. Então simule um pagamento para receber a notificação.
Depois dos testes, pode manipular o json e gravar em um banco de dados.

# pix
Avatar discord do usuario .thomasjackson

.thomasjackson

Ver RespostasVer no Discord

resposta
"{\"nome\":\"webhook_invalido\",\"mensagem\":\"A URL informada respondeu com o código HTTP 400\"}"

# pix
Avatar discord do usuario walysonpatric

walysonpatric

Ver RespostasVer no Discord

Oi, pra confirmar se o pix foi pago seria algo assim? (não sei muito sobre isso, to aprendendo e usei o GPT pra criar o código.)

app.post('/webhook(/pix)?', async (req, res) => {

try {
// Consultar a cobrança usando o txid
const response = await axios.get(/v2/cob/:txid, {
headers: {
Authorization: 'Bearer' + process.env.GN_CLIENT_ID // Substitua pelo token de autorização correto
}
});

// Verificar o status da cobrança na resposta
if (response.status === 200 && response.data.status === 'CONCLUIDA') {

// Enviar o código de ativação para o Supabase
const { data: insertedData, error } = await supabaseClient
.from('dominios_permitidos')
.insert([{ code: generatedCode }]); // Acesse o código gerado na rota '/api/key'

// Enviar o código de ativação junto com a resposta
return res.status(200).json({ message: 'Webhook recebido com sucesso.', code: generatedCode });
} else {
// Se a cobrança não estiver concluída, retorne uma mensagem de erro
return res.status(400).json({ error: 'Cobrança não concluída.' });
}
} catch (error) {
console.error('Erro ao consultar a cobrança:', error.message);
return res.status(500).json({ error: 'Erro ao consultar a cobrança.' });
}

});

# pix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver no Discord

´´´
{
"message": "Erro interno do servidor",
"erro": {
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 400"
}
}
´´´

# pix
Avatar discord do usuario hspatz

hspatz

Ver RespostasVer no Discord

Eu estou utilizando o SDK-PHP de voces.
Cadastrei o webhook como "https://meudominio.com.br/pixefi"
Recebo os eventos da criação no endereço acima

( [{"evento":"teste_webhook","data_criacao":"2024-03-30T11:20:39.415Z"}] ).

O "index.php" nesta pasta é o mesmo do site.

Abaixo deste diretório existe uma pasta "pix" onde o mesmo "index.php"rdt's lá. ( "meusite.com.br/pixefi/pix" )
AO criar um pagamento PIX em produção e o mesmo pago, não recebo nenhuma informação de retorno da EFI.
Foi colocadouma função que salva qualquer acesso a pasta, como exemplo fiz um acesso pelo Chrome "https://meudominio.com.br/pixefi/pix" e o resultado salvo foi.


Metodo: GET
Parametros: a:2:{i:0;s:6:"pixefi";i:1;s:3:"pix";}
Body: null


Segue o parte do script "index.php" onde salva qualquer acesso a pasta

===============================================================
// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);


//
/
$nomeArquivo = 'dados/dados_recebidos.json';
$dadosJson = "\n Metodo: " .$metodo ."\n Parametros: " .serialize($parametros) ."\n" ."Body: " .json_encode($body) ."\n";
$arquivo = fopen($nomeArquivo, 'a');
fwrite($arquivo, $dadosJson);
fclose($arquivo);
//
/


try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
salvar ( $xdados);
resposta(400, $e->getMessage(), $e);
}
=================================================================

Estou tentando gerar cobranças no modo homologação de R$ 0,01 e não recebo notificação no modo de homologação também.

# pix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver RespostasVer no Discord

so temnho o log de acesso

34.193.116.226 - - [28/Mar/2024:17:00:01 -0300] "POST /webhook/pix HTTP/1.1" 400 224 "-" "API Pix Efi (homologacao)"

# pix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver no Discord

{
"message": "Erro interno do servidor",
"erro": {
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 400"
}
}

# pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver RespostasVer no Discord

Bom dia @zekramfn é possível sim.

Você precisa consumir o endpoint [PUT /v2/gn/config](https://dev.efipay.com.br/docs/api-pix/endpoints-exclusivos-efi/#criarmodificar-configura%C3%A7%C3%B5es-da-conta) passando o atributo pix.chaves.suaChave.webhook.notificacao.pagador = true, segue um exemplo onde essa configuração é aplicada:

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

# pix
Avatar discord do usuario martins.dev

martins.dev

Ver RespostasVer no Discord

Olá, estou de volta aqui, estou enfrentando um problema sobre a resposta que é enviado para o webhook. estou recendo esses seguinte status code

"POST /webhook//pix HTTP/1.1" 400 6595 "-" "Gerencianet"
"POST /webhook//pix HTTP/1.1" 300 6692 "-" "Gerencianet"
"POST /webhook//pix HTTP/1.1" 400 6594 "-" "Gerencianet"

assim que eu recebo os dados eu não sei como ele vem exatamente, eu fiz uma verificação isset($data["pix"]) tem o index pix para conseguir o txid para verificar quem pagou

# devs
Avatar discord do usuario igor06248

igor06248

Ver RespostasVer no Discord

Fala pessoal, já tive esse problema e não lembro como resolvi.
Estou com dificuldade em registrar meu webhook.
O erro que recebo é este:
> {
> "nome": "webhook_invalido",
> "mensagem": "A URL informada respondeu com o código HTTP 400"
> }.

A configuração do meu Nginx:

location /rifas/gerencianet/webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
proxy_pass http://127.0.0.1:3333" class="link-msg" >http://127.0.0.1:3333;
}

location / {
proxy_pass http://127.0.0.1:3333;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api.cacaubox.shop/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.cacaubox.shop/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

ssl_client_certificate /home/app/luck-back/src/modules/clients/certs/chain-pix-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
}
server {
if ($host = api.cacaubox.shop) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
listen [::]:80;


Alguém poderia me ajuda? Preciso entender pq que dá isso, não aguento mais passar por esse erro direto 😅 .

# pix
Avatar discord do usuario loopbackk

loopbackk

Ver RespostasVer no Discord

Boa noite galera, fiz os testes do webhook (pix) em homolog, tudo funciona corretamente. Mas quando eu mudo o CRT para o de PRD (chain-pix-prod.crt) no servidor e troco as chaves do client e secret e tento fazer um cadastro de webhook recebo o erro: "A URL informada respondeu com o código HTTP 400"

# pix
Avatar discord do usuario arthursisprov

arthursisprov

Ver RespostasVer no Discord

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

# pix
Avatar discord do usuario _josemax

_josemax

Ver RespostasVer no Discord

400
webhook_invalido
A URL informada respondeu com o código HTTP 400Efi\Exception\EfiException Object ( [message:protected] => A URL informada respondeu com o código HTTP 400 [string:Exception:private] => [code:protected] => 400 [file:protected] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Request.php [line:protected] => 241 [trace:Exception:private] => Array ( [0] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Request.php [line] => 166 [function] => handleClientException [class] => Efi\Request [type] => -> ) [1] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/ApiRequest.php [line] => 54 [function] => send [class] => Efi\Request [type] => -> ) [2] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Endpoints.php [line] => 120 [function] => send [class] => Efi\ApiRequest [type] => -> ) [3] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Endpoints.php [line] => 56 [function] => Efi\{closure} [class] => Efi\Endpoints [type] => -> ) [4] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/aplication/pix/webhooks/pixConfigWebhook.php [line] => 36 [function] => __call [class] => Efi\Endpoints [type] => -> ) ) [previous:Exception:private] => [error:Efi\Exception\EfiException:private] => webhook_invalido [errorDescription:Efi\Exception\EfiException:private] => A URL informada respondeu com o código HTTP 400 )

# pix
Avatar discord do usuario jlmendessilva

jlmendessilva

Ver no Discord

"code": 400,
"error": "webhook_invalido",
"description": "A URL informada respondeu com o código HTTP 400"

# pix
Avatar discord do usuario _josemax

_josemax

Ver no Discord

400
webhook_invalido Uma URL informada respondeu com o código HTTP 400Efi\Exception\EfiException Object ( [message:protected] => Uma URL informada respondeu com o código HTTP 400 [string:Exception:private] => [code:protected] => 400 [arquivo: protegido] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Request.php [linha: protegido] => 241 [trace:Exception:private] => Array ( [0] => Array ( [arquivo] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Request.php [line] => 166 [função] => handleClientException [classe] => Efi\Request [tipo] => -> ) [1] => Array ( [arquivo] => /home/tract/htdocs/tract.digital/Controller/sdk-php -apis-efi/src/Efi/ApiRequest.php [linha] => 54 [função] => enviar [classe] => Efi\Request [tipo] => -> ) [2] => Array ( [arquivo] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Endpoints.php [linha] => 120 [função] => enviar [classe] => Efi\ApiRequest [type] => -> ) [3] => Array ( [file] => /home/tract/htdocs/tract.digital/Controller/sdk-php-apis-efi/src/Efi/Endpoints.php [linha ] => 56 [função] => Efi\{closure} [classe] => Efi\Endpoints [tipo] => -> ) [4] => Array ( [arquivo] => /home/tract/htdocs/tract .digital/Controller/sdk-php-apis-efi/aplication/pix/webhooks/pixConfigWebhook.php [linha] => 36 [função] => __call [classe] => Efi\Endpoints [tipo] => -> ) ) [anterior:Exception:private] => [error:Efi\Exception\EfiException:private] => webhook_invalido [errorDescription:Efi\Exception\EfiException:private] => A URL informada respondeu com o código HTTP 400 )

# pix
Avatar discord do usuario _josemax

_josemax

Ver RespostasVer no Discord

Tentando 54.242.231.66:443... Conectado ao pix-h.api.efipay.com.br (54.242.231.66) porta 443 (#0) ALPN, oferecendo http/1.1 CAfile: /etc/ssl/ certs/ca-certificates.crt CApath: /etc/ssl/certs Conexão SSL usando TLSv1.3 / TLS_AES_256_GCM_SHA384 ALPN, servidor aceito para usar http/1.1 Certificado do servidor: subject: C=BR; ST=MINAS GERAIS; L=OURO PRETO; O=EFI SA - INSTITUIÇÃO DE PAGAMENTO; CN=.api.efipay.com.br data de início: 17 de maio 19:31:27 2023 GMT data de expiração: 17 de junho 19:31:26 2024 GMT subjectAltName: host "pix-h.api.efipay. com.br" certificado correspondente ".api.efipay.com.br" emissor: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018 Certificado SSL verificado ok. > PUT /v2/webhook/9f86e12a-370d-44dd-bd47-4b6a0b17bae5 HTTP/1.1 Host: pix-h.api.efipay.com.br User-Agent: GuzzleHttp/7 Content-Type: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ..VrAQ4hHRYVRvl9dzWsvX79j_VvtOcz-fSvo0LxuaQgY api-sdk: efi-php-1.6.1 x-skip-mtls-checking: false Content-Length: 51 ID de sessão SSL antigo está obsoleto, removendo Marcar pacote como não compatível com multiuso < HTTP/1.1 400 Solicitação incorreta Conexão #0 ao host pix-h.api.efipay.com.br deixada intacta 400
webhook_invalido Uma URL informada respondeu com o código HTTP 400

# pix
Avatar discord do usuario _josemax

_josemax

Ver RespostasVer no Discord

400
webhook_invalido
A URL informada respondeu com o código HTTP 400

# devs
Avatar discord do usuario meliodas7010

meliodas7010

Ver no Discord

quando eu tento cadastrar meu webhook sempre retorna 400, mas não cheo a retornar o codigo 400 do catch. Se eu apenas mandar retornar codigo 200, continua sempre retornando o 400. Alguem pode me auxiliar nisso?

imagem enviada na mensagem pelo usuario meliodas7010
imagem enviada na mensagem pelo usuario meliodas7010

# dúvidas
Avatar discord do usuario adilalima

adilalima

Ver RespostasVer no Discord

Bom dia, estou recebendo a seguinte resposta ao tentar configurar um webhook:

"webhook": {
"success": false,
"error": "webhook_invalido",
"code": 400,
"message": "A autenticação de TLS mútuo não está configurada na URL informada",
"errorDescription": "A autenticação de TLS mútuo não está configurada na URL informada"
}

Apesar de enviar a opção 'x-skip-mtls-checking' => true na instância de EfiPay em uma API PHP8.

Entendi algo errado? A utilização do mTLS não é uma opção, infelizmente.

Agradeço 🙂