Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario israelbarbara.

israelbarbara.

Ver Respostas

To com uma duvida, mas é mais de programação em si.
Como faço para passar uma variavel para o webhook do pix da gerencianet usando nodejs/express?
eu tentei utilizar a sessao (req.session.nomeVariavel = "abc"), setando o valor dela na rota que gera o qrcode para pegar ela no /webhook quando confirma o pagamento, mas ela chega como undefined no webhook.

Avatar discord do usuario koda05529

koda05529

<@!795645731385901076> Node JS, tudoo certo

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"
),
));

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá <@!360519039019122701> ! Boa noite. Dentro do seu arquivo config.json, você está inserindo o caminho do seu certificado(campo "pix_cert")?

Avatar discord do usuario javi3966

javi3966

define ('BASEPATH',__DIR__);
require __DIR__ . '/vendor/vendor/autoload.php';

use Gerencianet\Exception\GerencianetException;
use Gerencianet\Gerencianet;

$file = file_get_contents(__DIR__ . '/vendor/vendor/gerencianet/gerencianet-sdk-php/src/Gerencianet/config.json');
$options = json_decode($file, true);

require_once 'credentials.php';
estou iniciando o código assim para o "Cobrança imediata sem txid"

Avatar discord do usuario javi3966

javi3966

Ver Respostas

Boa noite pessoal, me deparei com um problema na hora de tentar requisitar qualquer coisa na api pix, peguei um exemplo dentro da sdk, fiz o codigo semelhante ao que tenho em emissão de boleto e etc apenas pra ver como se comporta, e estou tendo o retorno de nonexistent endpoint , ja segui uma recomendação de adicionar o caminho dentro de src/config.json mas mesmo assim ainda obtenho o retorno, alguma dica do que poderia ser? Estou usando php.

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

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá @Deleted User ! Boa tarde. Não sei se entendi ao certo sua dúvida mas quando uma cobrança Pix é paga enviamos uma requisição POST para a URL que você cadastrou como webhook. Cada requisição enviada possui um timeout de 60 segundos.
Vale lembrar que os callbacks são enviados para a url cadastrada acrescida de um '/pix', dessa forma: ​/pix.
Neste link da documentação detalhamos alguns exemplos do JSON enviado para a URL cadastrada: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-recebendo-callbacks

Avatar discord do usuario igor_efi

igor_efi

Lembrando que é necessário informar o ID do location retornado no json de quando a cobrança foi criada.

Avatar discord do usuario israelbarbara.

israelbarbara.

Ver Respostas

eu utilizo um servidor ubuntu com uma aplicação em nodejs, o nginx ja esta configurado, baixei o certificado .crt para o servidor com o nginx apontando para ele. O OpenSSl que esta intalado no servidor esta na versão mais recente, para suportar o TLS 1.2

Avatar discord do usuario matheus_efi

matheus_efi

Boa tarde, <@!817478695996489788>! Não veio nenhum json informando a falha junto ao código 400? Me informe o número da sua conta Gerencianet que verifico nos logs

Avatar discord do usuario matheus_efi

matheus_efi

No exemplo do nginx tem o location, segue:

json
server {
#
# ...
#
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate server_ssl.crt.pem;
ssl_certificate_key server_ssl.key.pem;
ssl_client_certificate /root/chain-pix-webhooks-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
#
# ...
#
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
rewrite ^(.)$ /webhook;
}
}
Já no exemplo de Flasky, é so inserir no @app.route o caminho de onde o certificado seria exigido, exemplo:
py

@app.route("/webhook", methods=["POST"])
def imprimir():
imprime = print(request.json)
data = request.json
with open('data.txt', 'a') as outfile:
outfile.write("\n")
json.dump(data, outfile)
return jsonify(imprime)

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Bom dia, Anderson! No momento não, o endpoint de envio de Pix necessita da assinatura do termo e contato com a equipe comercial, pois, permite a movimentação de valores via transferência de forma muito rápida em sua conta. Em ambiente de homologação ainda não está pronto o endpoint, mas a nossa equipe está atuando para o desenvolvimento do mesmo.

Em relação a chamada e retorno temos exemplos na documentação que seguem o padrão exato da API, segue os links:
Requisição: https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-requisitar-envio-de-pix
Callback Pix enviado:

json
{
"pix": [
{
"endToEndId": "E090893562021030PIf25a7868",
"chave": "9c3c7441-b91e-4982-3c25-6105581e18ae",
"tipo": "SOLICITACAO",
"status": "REALIZADO",
"valor": "0.01",
"horario": "2021-03-04T20:39:47.000Z"
}
]
}

Avatar discord do usuario caiopedreira

caiopedreira

Ver Respostas

no mais, basicamente, vc vai percorrendo o json usando as seguintes linhas:
key_exists("evento", $callbackArr);
$evento = $callbackArr["evento"];
?>

Avatar discord do usuario caiopedreira

caiopedreira

<@!818290769923670038>
eu faria assim:
$rawCallback = file_get_contents('php://input');
file_put_contents("output.txt", "$rawCallback");
// pra percorrer o json depois que salvar:
$callbackArr = json_decode($rawCallback, true);
exit();
?>

Avatar discord do usuario lucapwn

lucapwn

Ver Respostas

Falaaa, Caio! Tranquilo? Sim simm, mano! Eu recebo a notificação normalmente no meu webhook quando cadastro um novo link. Exemplo da resposta em JSON:

{
"evento": "teste_webhook",
"data_criacao": "2022-01-20T02:15:38.465Z"
}

Mas quando faço o pagamento via Pix, eu não recebo a notificação de pagamento ☹️

Avatar discord do usuario lucapwn

lucapwn

Ver Respostas

Olá, boa noite! Tudo bem? 😀
Estou tentando criar meu próprio webhook em PHP (no meu servidor dedicado) para receber as notificações de pagamentos realizados via Pix, e há algum problema, pois não recebo as notificações de pagamentos. Segue o código em PHP abaixo:

header("Content-Type: application/json");
$request = file_get_contents("php://input");
file_put_contents("webhook.json", print_r($request, true));
print_r($request);
?>

Recebo a notificação de configuração do link do webhook normalmente:

{
"webhookUrl": "https://exemplo-pix/webhook"
}

Mas não recebo a notificação quando realizo o pagamento:

{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}

Tentei utilizar o exemplo de configuração de servidor em Python desenvolvido em Flask (https://dev.gerencianet.com.br/v1/docs/api-pix#section-exemplos-de-uma-configura-o-de-servidor-), mas não consegui seguir esse exemplo. ☹️

Já testei em sites de terceiros (como o https://webhook.site), e funciona normalmente (recebi a notificação do pagamento).

O meu servidor possui certificado SSL e a versão do TLS é 1.2.

Preciso receber essas notificações e armazená-las em algum lugar para verificar se o pagamento foi realizado. Vocês podem me ajudar? Irei ficar muito grato! Muito obrigado! 😀

Avatar discord do usuario brunodelara

brunodelara

Ver Respostas

Nao da pra pagar em homologação. Eu pago um pix de 1 centavo. Salvo a o json, e fico reenviando pra testar kk