Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# assinaturas
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Boa noite, Felipe! Qual falha aparece ao realizar a autenticação? Quando uma transação possui uma URL de notificação cadastrada (atributo notification_url), a Gerencianet dispara um POST para esta URL a cada mudança no status da cobrança. Você não está recebendo este token?

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O exemplo que tem na documentação da GN é assim:

const express = require("express");
const fs = require("fs");
const https = require("https");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do dominio
key: fs.readFileSync("/"), // Chave privada do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet
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(express.json());
app.use(express.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})
);
#Desenvolvido pela Consultoria Técnica da Gerencianet

# pix
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Segue o exemplo:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix-h.gerencianet.com.br/oauth/token',
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_HTTPHEADER => array(
'x-client-cert-pem: {{X-Certificate-Pem}}',
'Authorization: Basic (client id e secret em base64)',
'Content-Type: application/json'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario rozer9580

rozer9580

function gerenciaPay(){

$url = "https://api-pix-h.gerencianet.com.br/oauth/token";
try{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, base64_encode("Client_Id_" . ":" . "Client_Secret_") );
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json,application/octet-stream'));
curl_setopt($curl, CURLOPT_SSLCERTTYPE, "P12");
curl_setopt($curl, CURLOPT_SSLCERT, 'homologacao-
');
// curl_setopt($curl, CURLOPT_SSLCERTPASSWD, 'senha do certificado');
// curl_setopt($curl, CURLOPT_SSLKEYPASSWD, 'senha do certificado');

$resp = curl_exec($curl);

# cartões
Avatar discord do usuario naoquerosaber.

naoquerosaber.

Ver Respostas

aconteceu algo com a API? a cobrança é feita e registrada mas recebo um cURL error 28 Operation timed out after 30006 milliseconds e a resposta retorna vazia

# pix
Avatar discord do usuario jocileudosousa

jocileudosousa

$client = new Client();

$endpoint = $baseUrl."/oauth/token";
$response = $client->request('POST', $endpoint, [
'debug' => true,
'header' => [
'Content-type' => 'application-json',
],
'auth' => [$clientId, $clientSecret],
'form_params' => ['gran_type' => 'client_credentials'],
'cert' => $certificate
]);

# cartões
Avatar discord do usuario naoquerosaber.

naoquerosaber.

Bom dia

Estou desenvolvendo a area de pagamento via cartão de crédito de uma loja utilizando o lightbox da gerencianet, porém me deparei com um problema.
ao receber o POST com os dados para efetuar a cobrança na minha url, retorna erro 419 | page expired

acredito que seja por conta da verificação do csrf token que o laravel executa

existe alguma forma de incluir o CSRF token no cabeçalho do POST enviado para a URL? ou esse erro pode ser por algum outro motivo?

estou utilizando o SDK para php.

# pix
Avatar discord do usuario schoeps2724

schoeps2724

Ver Respostas

ustilizo curl_setopt_array($curl, array(
CURLOPT_URL => $vrota,
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'],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

requestCert tem que ser true, rejectUnauthorized false.

const express = require("express");
const fs = require("fs");
const https = require("https");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do dominio
key: fs.readFileSync("/"), // Chave privada do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet
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(express.json());
app.use(express.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})
);

# cartões
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá <@!176140065729282048> ! Boa noite. O fluxo para recebimento das notificações na API de Emissões é um pouco diferente. Basicamente, a Gerencianet fará um POST para a URL cadastrada a cada mudança no status da cobrança. Essa notificação possui um token específico, que será o mesmo durante todo o "ciclo de alterações" da transação. Seu sistema deve então consultar essa notificação através da rota GET /notification/:token, passando o token enviado no POST. Para visualizar os detalhes completos deste fluxo, acesse: https://dev.gerencianet.com.br/docs/notificacoes-recebendo

# assinaturas
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá, <@!358620323249389569> ! Boa noite.
Para enviar as notificações, a Gerencianet dispara um POST para a URL cadastrada a cada mudança no status da cobrança.
Essa notificação possui um token específico, que será o mesmo durante todo o "ciclo de alterações" da transação. Seu sistema deve então consultar essa notificação através da rota GET /notification/:token, passando o token enviado no POST anterior.
Para visualizar os detalhes de cada requisição da API de Cobranças, acesse: https://documenter.getpostman.com/view/13574984/TW71kRme

# bolix
Avatar discord do usuario ailtonsantos

ailtonsantos

Ver Respostas

E aê galera, bom dia! preciso de uma ajudinha... sou novo por aqui, estou tentando utilizar a API de boletos (bolix) e a do link de pagamento, poderiam me informar onde encontro/ como faço para criar o Authorization (Bearer code), como neste exemplo? Ps.: Estou utilizando o URL Sandbox e as chaves Secret e Client diretamente no meu código, sem Postman...
imagem enviada na mensagem pelo usuario ailtonsantos

# bolix
Avatar discord do usuario thigas8242

thigas8242

Ver Respostas

Boa tarde! quanto as notification, estou recebendo-as em uma url post normalmente, e está sendo exibido no console.log "Em Node", a minha dúvida é: como extrair esses dados para salvar no banco de dados apartir do token recebido?

# pix
Avatar discord do usuario reidoscoins

reidoscoins

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix.gerencianet.com.br/v2/webhook/" . $chave, // 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 => "PUT",
CURLOPT_POSTFIELDS => $json,
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"authorization: Bearer " . $access_token,
"x-skip-mtls-checking: false"
),
));

$response = curl_exec($curl);

# bolix
Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Bom dia, <@!617773421241040982>! Essa falha de curl ocorre quando retornamos o JSON com a resposta da requisição mas a sua aplicação já não está mais "esperando" e corta a conexão. Geralmente é devido ao link de internet que demora para entregar a resposta da API. Uma coisa que você pode fazer é aumentar o tempo de timeout como por exemplo: timeout => 60

# bolix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

É o body que você recebe ao consultar o token de uma notificação.
Quando uma transação possui uma URL de notificação cadastrada (atributo notification_url), a Gerencianet dispara um POST para esta URL a cada mudança no status da cobrança. Essa notificação possui um token específico, que será o mesmo durante todo o "ciclo de alterações" da transação.
Seguindo o fluxo da imagem abaixo:
imagem enviada na mensagem pelo usuario joao_efi

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

Boa noite. Não requer cadastro. É só prefixar a sua URL com mtls.pix.ae.

Exemplo: https://seudominio.com/seuendpoint
Vira: https://mtls.pix.ae/seudominio.com/seuendpoint

Meu sistema faz a validação mTLS da GN, repassa o request para o seu endpoint, lê a sua resposta e responde a GN de acordo com sua resposta. Se a validação da GN não passar, meu sistema nem te repassa o request, responde 400 direto, de forma que a GN entenda que o seu sistema está preparado e realizando a validação (mesmo que isso esteja acontecendo, de fato, no próprio servidor do pix.ae).

# cartões
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

O POST que enviamos para a URL informada vai conter apenas uma informação: um token de notificação. A partir desse token, você consegue consultar as informações de uma cobrança. Para isso, você precisa consumir a rota GET /notification/:token, em que :token é o token de notificação contido no POST enviado. A resposta será todos os dados informativos sobre a alteração sofrida pela cobrança, como por exemplo, o status anterior e atual da cobrança.

# pix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Fala <@!728929518344994836> ! tudo ótimo por aqui!
Verifiquei aqui e essa falha pode estar acontecendo por conta de algum módulo de um repositório com um certificado SSL incompatível com os demais.
Atualizei nossa documentação também pois notei que o body-parser está "depreciado" e as funções foram incorporadas ao express, dessa forma pode remover a linha
const bodyParser = require("body-parser");
E substituir o trecho:

js
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Por:
js
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
E veja se funciona para você!

Caso a falha persista, você pode contornar esse problema utilizando o comando:
npm config set strict-ssl false
Lembrando de defini-lo como true posteriormente, para que você não instale acidentalmente um módulo não confiável no qual você realmente não confia.

# pix
Avatar discord do usuario leonardo_apereira

leonardo_apereira

Ver Respostas

Beleza! Tudo bem? <@!795645731385901076>

Obrigado pela ajuda, segue:

const express = require("express");
const app = express();
const { WebhookClient } = require("dialogflow-fulfillment");
const bodyParser = require("body-parser");
const mysql = require ('mysql');
var logger = require('morgan');

////////////////// HTTPS
const fs = require("fs");
const https = require("https");
const options = {
key: fs.readFileSync("key.pem"),
cert: fs.readFileSync("cert.crt"),
ca: fs.readFileSync("chain-pix-prod.crt"),
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false
};
///////////////// HTTPS (FIM)

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));


////////////////// GERENCIANET (PIX)
app.post("/gerencianet", (request, response) => {
console.log('Entrou gerencia-net');
response.status(200).end();
// 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("/gerencianet/pix", (request, response) => {
response.status(200).end();
console.log('Entrou gerencia-net');
if (request.socket.authorized){
var body = request.body;
console.log(body);
response.status(200).end();
}else{
response.status(401).end();
}
});
//////////////////GERENCIANET - FIM(PIX)

//////////////////////////// HTTPS
https.createServer(options, app).listen(8000);
console.log('Servido NODE (HTTPS) na Porta: 8000!');
/////////////////////////// HTTPS