Histórico de mensagens sobre url

EXIBINDO CONVERSAS RECENTES:

Texto: url
# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

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

# pix
Avatar discord do usuario wesleykovalski

wesleykovalski

private function send(string $method, string $resource, array $request = [])
{
// ENDPOINT COMPLETO
$endpoint = $this->baseUrl . $resource;

// HEADERS
$headers = [
'Cache-Control: no-cache',
'Content-type: application/json',
'Authorization: Bearer ' . $this->getAccessToken()
];

// CONFIGURAÇÃO DO CURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_SSLCERT => $this->certificate,
CURLOPT_SSLCERTPASSWD => '',
CURLOPT_HTTPHEADER => $headers
]);

switch ($method) {
case 'POST':
case 'PUT':
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request));
break;
}

// EXECUTA O CURL
$response = curl_exec($curl);
curl_close($curl);

// RETORNA O ARRAY DA RESPOSTA
return json_decode($response, true);
}

# pix
Avatar discord do usuario wesleykovalski

wesleykovalski

Debuguei o retorno do curl e o token está aqui

# pix
Avatar discord do usuario wesleykovalski

wesleykovalski

Ver Respostas

É que depois de fechar o curl eu faço isso:

$response = curl_exec($curl);
curl_close($curl);

// RESPONSE EM ARRAY
$responseArray = json_decode($response, true);

// RETORNA O ACCESS TOKEN
return $responseArray['access_token'] ?? '';

# pix
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

# pix
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

# pix
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
]);

# pix
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"]);

# pix
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})
);

# pix
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

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

O problema do <@!535222756837556244> foi resolvido adicionando uma string "200" no corpo da resposta da requisição de teste de cadastramento do webhookUrl.

# pix
Avatar discord do usuario inbox5372

inbox5372

Mas o erro => A requisição na URL informada falhou com o erro: HPE_INVALID_CONSTANT é exibido na msg

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Então eles querem se certificar desde já que você tem controle sobre a validação nos requests que chegam sem o /pix, também, já que isso sinaliza que você poderia receber requests em outros endpois baseados na webhookUrl ( webhookhUrl/pix, webhookUrl/novo-recurso, etc).

# pix
Avatar discord do usuario anoni_mato

anoni_mato

<@!535222756837556244> peço desculpas. Revisei a documentação e a GN adiciona o /pix somente nas notificações de transação de fato. No teste de cadastramento vai sem o /pix. Isso porque o BACEN sinalizou que o intuito de adicionar o /pix no fim da URL é permitir outros tipos de notificações/recursos no futuro usando outros endpoints baseados na webhookUrl principal.

# pix
Avatar discord do usuario anoni_mato

anoni_mato

qual a URL absoluta que vc tá enviando?

# pix
Avatar discord do usuario inbox5372

inbox5372

<@!440035527127990273> Ao tentar cadastrar o webhookUrl pelo Postman, eu recebo um request sem o append /pix e o erro HPE_INVALID_CONSTANT é exibido na mensagem

# pix
Avatar discord do usuario anoni_mato

anoni_mato

o serviço de gerar qrcodes do site pix.ae só tem 1 action POST e é "self-documented", envia o curl pra pix.ae que ele responde com instruções