Histórico de mensagens sobre webhook em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook
Canal: pix
Avatar discord do usuario francinaldo0632

francinaldo0632

sem sucesso, o webhook esta configurado mas nao consigo capturar a resposta

Avatar discord do usuario francinaldo0632

francinaldo0632

ALGUEM JA CONSEGUI RECEBER O RETORNO WEBHOOK EM PHP

Avatar discord do usuario perrot.

perrot.

Ver Respostas

<@!671763456487325717> Bom dia! Estou criando os certificados para criar o webhook. No Azure, estou usando certificados gratuitos, que não podem ser importados. Vc consegue me orientar como devo proceder para usar esses certificados no webhook?

Avatar discord do usuario wesleykovalski

wesleykovalski

Verifiquei aqui, agora não retornou mais o erro, apenas o webhookUrl

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

isso. a URL onde você quer receber as notificações (e que vc está enviando como webhookUrl da sua chave)

Avatar discord do usuario wesleykovalski

wesleykovalski

Ver Respostas

Essa url seria o webhookUrl ?

Avatar discord do usuario wesleykovalski

wesleykovalski

Ver Respostas

Não tem o /v2/ antes do /webhook ?

Avatar discord do usuario anoni_mato

anoni_mato

e suaurl pela URL do seu webhook

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

nesse caso a chamada ficaria assim:
send('PUT', '/webhook/:chave', ['webhookUrl'=>'suaurl']);

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

mas você está enviando o token na hora de enviar o PUT pra URL de webhook? não tem nada relativo a isso no código que vc mandou acima

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

o primeiro passo é enviar o request pro endpoint "/oauth/token" e obter o token. o segundo é enviar o request PUT para /v2/webhook/:chave com a url de webhook

Avatar discord do usuario wesleykovalski

wesleykovalski

Segue o código:

// ENDPOINT COMPLETO
$endpoint = $this->baseUrl . '/oauth/token';

// HEADERS
$headers = [
'Content-type: application/json',
'x-skip-mtls-checking: true'
];

// CORPO DA REQUISIÇÃO
$request = [
'grant_type' => 'client_credentials',
'webhookUrl' => 'https://www.dominio.com.br/endpointdowebhook'
];


// CONFIGURAÇÃO DO CURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $endpoint,
CURLOPT_USERPWD => $this->clientId . ':' . $this->clientSecret,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($request),
CURLOPT_SSLCERT => $this->certificate,
CURLOPT_SSLCERTPASSWD => '',
CURLOPT_HTTPHEADER => $headers
]);

Avatar discord do usuario anoni_mato

anoni_mato

a me basear pela formatação da msg de erro acima, parece que vc está usando PHP. então vc deve enviar no corpo do request algo como json_encode(["webhookUrl"=>"suaurl"]);

Avatar discord do usuario anoni_mato

anoni_mato

/v2/webhook/:chave ? tá usando PUT ?

Avatar discord do usuario wesleykovalski

wesleykovalski

O webhook.write está ativado

Avatar discord do usuario wesleykovalski

wesleykovalski

Ver Respostas

Estou mandando /v2/webhook/
:chave

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

js
const express = require("express");
const fs = require("fs");
const https = require("https");
const bodyParser = require("body-parser");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do SSL do dominio
key: fs.readFileSync("/"), // Chave privada do SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet. Baixe aqui: https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS
};

const app = express();
const httpsServer = https.createServer(httpsOptions, app);
const PORT = 443;

app.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook
app.post("/webhook", (request, response) => {
// Verifica se a requisição que chegou nesse endpoint foi autorizada
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});

// Endpoind para recepção do webhook tratando o /pix
app.post("/webhook/pix", (request, response) => {
if (request.socket.authorized){
//Seu código tratando a callback
/ EXEMPLO:
var body = request.body;
filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
response.status(200).end();
}
})
/
response.status(200).end();
}else{
response.status(401).end();
}
});

httpsServer.listen(PORT, () =>
console.log(Express server currently running on port ${PORT})
);

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Beleza, <@!756521010387484702>. Que bom que conseguiu mais um passo.
Sim. Para realizar o envio direto de Pix, além das liberações do comercial que já realizou para você, na parte técnica, é necessário também que você tenha uma URL webhook registrada

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Algo que não é obrigatório mas eu acho recomendável é criar uma chave só para o envio de Pix. Aí você não confunde os webhooks de recebimento de cobrança com os de confirmação de envio.