Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Boa tarde, <@!628240063389761540>! Como vai?
Está utilizando a última versão 4.0.1 da SDK? Qual sua versão do PHP?
Verifique se em seu arquivo composer.json está requerindo "guzzlehttp/guzzle": "^7.0" e execute o comando composer install

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Beleza, <@!456823494790086669>
Até o momento, não é possível verificar um log de notificação como é feito para API das demais cobranças.
Mas realizando uma consulta com o exemplo /examples/pix/pix/pixListReceived.php (Consultar Pix recebidos) da SDK, passando como parâmetros data inicio, fim e o txid da cobrança.

Será retornado algo parecido com o exemplo abaixo, então saberemos que o Pix foi realizado e a notificação foi enviada.

json
"pix": [
{
"endToEndId": "E60746948202104010023A1863ecTgpG",
"valor": "00.01",
"chave": "[email protected]",
"horario": "2021-04-01T00:30:20.000Z"
},
];

Sendo assim, bastaria seu sistema tratar o recebimento desta notificação e gravar um um banco de dados, por exemplo.

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

JQuery com Ajax não, mas temos em node

js
//Desenvolvido pela Consultoria Técnica da Gerencianet

"use strict";
const https = require("https");
var axios = require("axios");
var fs = require("fs");

//Insira o caminho de seu certificado .p12 dentro de seu projeto
var certificado = fs.readFileSync("./certificado.p12");

//Insira os valores de suas credenciais em desenvolvimento do pix
var credenciais = {
client_id: "YOUR-CLIENT-ID",
client_secret: "YOUR-CLIENT-SECRET",
};

var data = JSON.stringify({ grant_type: "client_credentials" });
var data_credentials = credenciais.client_id + ":" + credenciais.client_secret;

// Codificando as credenciais em base64
var auth = Buffer.from(data_credentials).toString("base64");

const agent = new https.Agent({
pfx: certificado,
passphrase: "",
});
//Consumo em desenvolvimento da rota post oauth/token
var config = {
method: "POST",
url: "https://api-pix-h.gerencianet.com.br/oauth/token",
headers: {
Authorization: "Basic " + auth,
"Content-Type": "application/json",
},
httpsAgent: agent,
data: data,
};

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
Mas o Postman tem um exemplo com jQuery:
js
var settings = {
"url": "https://api-pix.gerencianet.com.br/oauth/token",
"method": "POST",
"timeout": 0,
"headers": {
"x-client-cert-pem": "{{X-Certificate-Pem}}",
"Authorization": "Basic Q2xpZW50X0lkXDM4ZjJhY2M1M2QyMGRmOTJhNDIxMWE3NjhjMTBjMzkyZjk2YWM6Q2xpZW50JhZWQwMGRlZjYzNWRlY2E5YTE5Y2Y2ZTI0YjEwMTBjNzIx",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"grant_type": "client_credentials"
}),
};

$.ajax(settings).done(function (response) {
console.log(response);
});

Avatar discord do usuario Deleted User

Deleted User

Boa tarde, a api pix de vocês está disponivel para Node js?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Pode ser qualquer nome.
Acrescentando uma observação que é a adição do /pix no final da sua URL. Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

json
{
"webhookUrl": "https://seudominio.com.br/webhook"
}
No entanto, a URL será registrada com o /pix no final, assim: https://seudominio.com.br/webhook/pix. Então esta adição do /pix também dever ser tratada nas configurações de seu servidor para que na rota /webhook/pix de seu servidor exija o certificado CA da Gerencianet.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não, tem vários outros. Mas são filtros no body JSON, não no path.

Avatar discord do usuario winkcler

winkcler

inclusive to recebendo o json no meu servidor {"evento":"teste_webhook","data_criacao":"2021-03-27T20:39:30.371Z"}

Avatar discord do usuario roguitar88

roguitar88

Como vcs viram, mudei a url para https://olimppi.us/webhook/pix, onde /webhook é a nova rota que criei no MVC e /pix é um método que faz parte do controller, e aí dentro desse método que coloco o código que faz o recebimento e manipulação dos dados JSON, como vcs podem ver na figura

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Verifique por gentileza no /examples/config.json se no parâmetro "pix_cert" está o mesmo nome que salvou seu certificado, e se está no diretório "certs"

Avatar discord do usuario uaca

uaca

Ver Respostas

Boa noite. Estou começando com a API do PIX. No exemplo "Criar cobrança.", ali no json tem que uma campo "chave", o que devo colocar nele?

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde <@!564882405794775060>, temos um exemplo que atualizamos hoje na documentação em Node

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 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(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 msxvdp

msxvdp

Boa tarde, sabem informar como configuro o TLS em um servidor Ubuntu, rodando com node.js 12.16.1 (express)?
não estamos usando nginx no servidor, só o express (com helmet)

Avatar discord do usuario roguitar88

roguitar88

//Webhook update
$options['headers'] = array(
'x-skip-mtls-checking' => 'false',
);

try {
$api = Gerencianet::getInstance($options);

$params = ['chave' => '34646106000189'];
$body = ['webhookUrl' => 'https://olimppi.us/src/Includes/index.php?ignorar='];
// https://olimppi.us/webhook/pix.php?ignorar=
// https://olimppi.us/webhook/pix.php?ignorar=/pix

$pix = $api->pixConfigWebhook($params, $body);
echo json_encode($pix);

} catch (GerencianetException $e) {
print_r($e->code);
print_r($e->error);
print_r($e->errorDescription);

throw new \Error($e->error);
} catch (\Exception $e) {
throw new \Error($e->getMessage());
}

Avatar discord do usuario m4rc0nd35.

m4rc0nd35.

<@!775350441965649951> Bom dia, eu estou usando nodejs no ubuntu

Avatar discord do usuario Ayrton Teshima

Ayrton Teshima

Fala galera! Fiz um vídeo para o meu canal integrando a API Pix utilizando Node/JS!
Projeto está incrível pois vamos desde o absolutamente zero até criar uma instância EC2 na AWS, configurar IP, domínio, NGINX e certificado HTTPS!
Depois de tudo pronto, realizo pagamento via Pix que cai na conta no mesmo momento e nossa aplicação é notificada sobre cada pagamento! Está incrível demais!
https://youtu.be/bo1THXaohU0

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Exatamente, Rubens.
Se informar o nome, é obrigatório o CPF ou CNPJ. Ou seja, basta retirar o array "devedor"

json
{
"calendario": {
"expiracao": 3600
},
"valor": {
"original": "0.01"
},
"chave": "fae53297-fd67-0000-0000-2f69ef7c38ca",
"solicitacaoPagador": "Informe o número ou identificador do pedido."
}

Avatar discord do usuario grinderrobot0164

grinderrobot0164

Ver Respostas

Bom dia pessoal, fica uma sugestão para a documentação no exemplo em node.js na parte de webhooks: em vez de fazer uma api com rejectUnauthorized: true, colocar rejectUnauthorized: false e numa rota de /webhooks por exemplo você pode verificar se o request foi autorizado acessando request.socket.authorized. Dessa forma não precisa fazer uma api separada para o gerencianet pois dá pra verificar o uso do certificado apenas nessa rota de acesso dos webhooks

Avatar discord do usuario grinderrobot0164

grinderrobot0164

uso nginx e node.js

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$config = [
"certificado" => $this->pixCert,
// "certificado" => DIRPAGE."src/Includes/olimppiuspix.crt.pem",
// "certificado" => "",
"client_id" => $this->clientId,
"client_secret" => $this->clientSecret
];
$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/v2/webhook/',
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 =>'{
"webhookUrl": "https://olimppi.us/webhook/index.php"
}',
CURLOPT_HTTPHEADER => array(
// "authorization: {{Authorization}}",
"Authorization: Basic $autorizacao",
"Content-Type: application/json",
"x-client-cert-pem: {{X-Certificate-Pem}}",
"x-skip-mtls-checking: false"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$options['headers'] = array(
'x-skip-mtls-checking' => 'true',
);

try {
$api = Gerencianet::getInstance($options);

$params = ['chave' => '34646106000189'];
$body = ['webhookUrl' => 'https://olimppi.us/webhook'];
// https://olimppi.us/webhook/pix.php?ignorar=
// https://olimppi.us/webhook/pix.php?ignorar=/pix

$pix = $api->pixConfigWebhook($params, $body);
echo json_encode($pix);

} catch (GerencianetException $e) {
print_r($e->code);
print_r($e->error);
print_r($e->errorDescription);

throw new \Error($e->error);
} catch (\Exception $e) {
throw new \Error($e->getMessage());
}