Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# pix
Avatar discord do usuario Prof Zoidberg

Prof Zoidberg

$config = [
"certificado" => "./gerenciamento.pem",
"client_id" => "XXXXX",
"client_secret" => "XXXXX"
];
$autorizacao = $chaveiro["access_token"];

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.gerencianet.com.br/v2/webhook/XXXXX',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => $chaveiro["access_token"],
CURLOPT_POSTFIELDS =>'{
"webhookUrl": "https://XXXXX/webhook.php"
}',
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $autorizacao",
'x-client-cert-pem: ./gerenciamento.pem',
'x-skip-mtls-checking: false'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

# pix
Avatar discord do usuario henriquefelipe.

henriquefelipe.

var clientCob = new RestSharp.RestClient(URL_BASE + "v2/cob");
var requestCob = new RestRequest(Method.POST);
clientCob.ClientCertificates = new X509CertificateCollection() { uidCert };

requestCob.AddHeader("Authorization", "Bearer " + oath.access_token);
requestCob.AddHeader("Content-Type", "application/json");
requestCob.AddParameter("application/json", JsonConvert.SerializeObject(dados), ParameterType.RequestBody);

IRestResponse restResponseCob = clientCob.Execute(requestCob);
string responseCob = restResponseCob.Content;

# 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

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 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 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 inbox5372

inbox5372

Ver Respostas

Bom dia. Tudo bem com vocês?
Estou buscando uma solução alternativa para o mTLS de um backend hospedado no Heroku.
Uso o AdonisJS.
Um prefixo na webhookUrl => https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix
Mas não sei qual o fluxo nesse cenário. Eu imaginava que fosse assim:
1- O GN envia o primeiro request para a webhookUrl cadastrado pelo Postman, retorna com 403;
2- Faz um novo request em https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix junto com o certificado;
3- Ao bater no webhookUrl com o prefixo mtps.pix.ae é direcionado para a url respondida pelo meu backend;
4- Lá encontra a rota https://cardapioo-api.herokuapp.com/webhookpix POST já pronta;
5- Eu apresento ao GN a minha parte do certificado e pronto.

Mas o que acontece na verdade é => "nome": "webhook_invalido", "mensagem": "A requisição na URL informada falhou com o erro: HPE_INVALID_CONSTANT"

Alguém pode me ajudar por favor?

# pix
Avatar discord do usuario b1n._

b1n._

to testando pelo curl e sdk
no curl coloquei isso

$response = curl_exec($curl);
if($method == 'PUT')
echo "resposta webhook: ".json_encode($response);
$err_status = curl_error($curl);
curl_close($curl);
ai apareceu
resposta webhook: "HTTP header is larger than 10240 bytes."

# pix
Avatar discord do usuario b1n._

b1n._

Ver Respostas

ainda não cheguei na parte de atualizar se foi pago, mas pelo que entendi, como é sempre feito nas APIs, vc cria uma url de notificação, dai o GERENCIANET vai te mandar um post toda hora que houver uma alteração, mas sem dados, a sua url de notificação tem que detectar isso e solicitar os dados da transação e ver se alterou lendo o último array inserido

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Calcular a data + expiração. Acessar a URL não tem ainda uma forma padronizada de resposta entre PSPs.

# pix
Avatar discord do usuario matwbug

matwbug

Alguém consegue me ajudar aqui com a api pix? por algum motivo minha requisição curl nao está dando response no site da gerencianet, até baixei os proprios códigos da doc e mesmo assim não foi, é como se a requisição não fosse feita, estou utilizando php


$config = [
"certificado" => BASE.'data/certif/gerencianet.pem',
"client_id" => "xx",
"client_secret" => "xx"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token", // 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 => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "
";
echo $response;
echo "
";
?>

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, <@!257617133595262977>. Bom dia!
Você consegue acompanhar todos os registros de requisições que você realizar da integração de boleto através do painel da Gerencianet.
Para isso acesse o menu API > Minhas Aplicações > Nome da sua aplicação, na aba Histórico de Requisições, clique no ícone de um “olho” presente no registro da requisição, então abrirá uma janela com os detalhes da requisição da emissão, e descrição do erro, caso houver.

Ou na aba Histórico de Notificações, você encontra todos os registros de notificações que enviamos para URL de seu servidor, e clicando no ícone de um “olho” presente no registro da notificação, abrirá uma janela com os detalhes da notificação e a resposta do seu servidor.

# pix
Avatar discord do usuario fernandogomes2667

fernandogomes2667

O cadastro do endpoint para webhook possui uma pegadinha, durante o processo cadastro ele testa a URL cadastrada. Porem ele consome um endpoint diferente do que é consumido para o envio das notificações. Precisei cadastrar o end-point (GET) https://xxx/gerencianet/ porem o endpoint que é consumido é o (POST) https://xxx/gerencianet/pix

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Boa tarde, <@!844918217529229332>! Como vai?
Você poderá definir uma URL que receberá as notificações durante a criação da cobrança. Desta forma a Gerencianet dispara automaticamente um POST para esta URL a cada mudança no status das cobranças.
Veja mais detalhes em: https://dev.gerencianet.com.br/docs/notificacoes-recebendo

# bolix
Avatar discord do usuario christianosilveira4948

christianosilveira4948

Ver Respostas

Olá
Onde está o erro? Usando curl.exe

curl --location --request POST 'https://sandbox.gerencianet.com.br/v1/charge' \--header 'Authorization: {{'Client_Id','Client_Secret'}}' \--header 'Content-Type: application/json' \--data-raw '{ "items": [ { "name": "item", "value": 500, "amount": 1 } ]}'

# pix
Avatar discord do usuario joao_efi

joao_efi

No caso, é necessário ler os dados da resposta do servidor para que possa disponibilizar o Copia e Cola para seu cliente final.
Sobre o retorno 400, verifique se o id informado na URL condiz com o ID retornado pelo endpoint POST/v2​/loc
Conforme o exemplo:

json
{
"id": 66,
"location": "qrcodes-pix.gerencianet.com.br/v2/7796e273b8e447c2b2c0ac2c58fe1a13",
"tipoCob": "cob",
"criacao": "2021-01-15T20:13:39.462Z"
}

# pix
Avatar discord do usuario joaoc7439

joaoc7439

Ver Respostas

É verdade, não estava testando para o cc para .../webhook/pix. Mas isso, por sí só, não explicaria o POST vazio. Agora coloquei o teste, o cURL retornou 403, e o POST de notificação pelo webhook segue vazio.

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

aquele qrcode do @rafaelvolpato não tem erro (quer dizer.. tem).

ele é um qr code estático do Pix (e por isso a cobrança não foi baixada, ele não é dinâmico) e um campo EMV 80 foi utilizado (fora da spec, ignorado no Pix) e a URL de location foi posta nele. tá dentro do previsto o comportamento. a forma como ele foi montado que tá fora do que se esperava alcançar.

# pix
Avatar discord do usuario destemido9466

destemido9466

$config = [
"certificate" => realpath("certs/producao/certificado.pem")
];

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix.gerencianet.com.br/v2/webhook/".$chave_pix,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_SSLCERT => $config["certificate"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS =>'{
"webhookUrl": "https://webhook.com/webhook"
}',
CURLOPT_HTTPHEADER => array(
'authorization: Bearer '.$access_token,
'x-skip-mtls-checking: false',
'Content-Type: application/json'
),
));

$response = curl_exec($curl);
$options = json_decode($response, true);


if ($response === FALSE){
$curl_error = curl_error($curl);
}

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario diegohenrique1989

diegohenrique1989

Ver Respostas

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix-h.gerencianet.com.br/v2/webhook/[email protected]',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_SSLCERT => OPTIONS["pix_cert"],
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS =>'{
"webhookUrl": "' . WEBHOOK_URL . '"
}',
CURLOPT_HTTPHEADER => array(
"authorization: $tokenType $token",
'x-client-cert-pem: {{X-Certificate-Pem}}',
'x-skip-mtls-checking: true'
),
));