Histórico de mensagens sobre webhook

EXIBINDO CONVERSAS RECENTES:

Texto: webhook
# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@rian2965, atualmente não está sendo listado mesmo os registros de notificações no painel da aplicação. Neste caso, sugiro verificar nos logs do seu servidor HTTP.
Você registrou uma webhhok URL no endpoint PUT /v2/webhook/:chave?

# devs
Avatar discord do usuario jrrdsknd

jrrdsknd

Ver Respostas

bom dia, eu to com um codigo aqui que fiz, acredito que possa ajudar bastante algumas pessoas com problema em webhook, aqueles certificados ssl e etc, eu posso compartilhar aqui?

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @rian2965. Bom dia!
Você emitindo uma cobrança Pix em homologação com valor entre R$ 0.01 a R$ 10.00, é feita a confirmação automaticamente, e você receberá a informação via Webhook.
imagem enviada na mensagem pelo usuario guilherme_efi

# pix
Avatar discord do usuario rian2965

rian2965

Ver Respostas

opa, bom dia!
como faço para confirmar uma cob pix gerada no sandbox?
estou testando o envio de webhook, mas não sei como mudar o status da cobrança kk

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

webhook bem complicado esse

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

E na minha requisição pra criar o webhook, ainda estou recebendo essa mensagem de erro:
string(102) "{"nome":"webhook_invalido","mensagem":"A requisição na URL informada falhou com o erro: ECONNRESET"}"

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

No meu arquivo webhook.php eu coloquei pra criar um TXT do que é recebido e recebo isto:
{
"evento": "teste_webhook",
"data_criacao": "2024-05-09T15:13:32.178Z"
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

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 alissonmaciel_32335

alissonmaciel_32335

Ver Respostas

string(102) "{"nome":"webhook_invalido","mensagem":"A requisição na URL informada falhou com o erro: ECONNRESET"}"

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

esse requisição do webhook precisa do certificado?

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Meu Webhook: public function webhook() {
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php"
}';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->config['rotas'] . '/v2/webhook/' . $this->config['chave_pix']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_SSLCERT, $this->config["certificado"]);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '');
$headers = array();
$headers[] = 'Authorization: Basic ' . $this->access_token;
$headers[] = 'X-Skip-Mtls-Checking: true';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

echo '

';
var_dump($this->config['chave_pix'], $this->config['client_id'], $this->config['client_secret'], $result);
echo '
';

if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
} catch (Exception $e) {
echo '
';
var_dump($e->getCode(), $e->getFile(), $e->getMessage());
echo '
';
}
}

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

nao estou tendo exito nessa questao do webhook

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

E estou recebendo este erro:
Chave PIX: string(36) "5cd9a718-ce6d-4564-bc10-c5b03e7a998f"
Response do método webhook: string(172) "{"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"required","caminho":"","mensagem":"deve ter a propriedade obrigatória body"}]}"

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Ver Respostas

Estou executando este método:
public function webhook() {
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php"
}';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->config['rotas'] . '/v2/webhook/' . $this->config['chave_pix']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_SSLCERT, $this->config["certificado"]);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '');
$headers = array();
$headers[] = 'Authorization: Bearer ' . $this->access_token;
$headers[] = 'X-Skip-Mtls-Checking: true';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

echo '

';
var_dump($this->config['chave_pix'], $result);
echo '
';

if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
} catch (Exception $e) {
echo '
';
var_dump($e->getCode(), $e->getFile(), $e->getMessage());
echo '
';
}
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

A ideia é esta mesmo, @alissonmaciel_32335. Você irá utilizar este endpoint PUT/v2/webhook/:chave para associar sua URL de notificação a sua chave Pix. E então as cobranças Pix que tiverem um txid e sua chave Pix, nós iremos enviar a notificação para a URL registrada. Essa configuração pode ser feita uma única vez.

Pontuando que para registrar sua URL de notificação, é importante que seu servidor tenha algumas configurações para atender a comunicação com mTLS para segurança da sua aplicação. Você encontra mais detalhes em nossa documentação e nos vídeos a seguir: https://dev.gerencianet.com.br/docs/api-pix-endpoints#webhooks
https://youtu.be/hdyUHzNwVLY?list=PLRqvcUTH2VsWufBmzOdTVeLEOTGrPNoiu
https://youtu.be/XB9bcZFTV3M?list=PLRqvcUTH2VsWufBmzOdTVeLEOTGrPNoiu

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Ver Respostas

na requisição do webhook to fazendo assim, está correto? e eu chamo esse metodo no meu construct
imagem enviada na mensagem pelo usuario alissonmaciel_32335

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Depende da sua estratégia de descobrir que foi pago... webhook é a melhor alternativa, mas não a única.

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Ver Respostas

nesse caso terei que criar um arquivo webhook.php

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

poxa eu nao entendi muito sobre o webhook