Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Até realizamos uma teste para confirmação de como é enviado:

json
{
"pix": [
{
"endToEndId": "E004169682021091317585BI2Rnuoa1k",
"txid": "jhfdjhfdjh3djhfd4325f6mYM755",
"chave": "2c5c7441-a91e-4982-8c25-xxxxxxxxxxxx",
"valor": "0.01",
"horario": "2021-09-13T17:58:22.000Z"
}
]
}

Avatar discord do usuario andresisdanca

andresisdanca

Ver Respostas

Até tinha feito um servet para ouvir /pix porém ao cadastrar xxx.com.br/sistema nao aceitava. Fiz o cadastro de xxx.com.br/sistema/pix.jsp e aceito porém nao funcionou por que GN poe o /pix depois ... entao solucionei cadastrando: xxx.com.br/sistema/pix.jsp? assim o /pix é ignorado. Sucesso.

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Boa tarde <@!883000147938783272>! Utilizando o endpoint GET/v2/pix você consegue consultar todos os pix recebidos em um determinado período. E você terá como retorno um json que contém a chave pix. Então você pode consumir esse endpoint e em seguida percorrer esse json pegando somente os pix recebidos de uma determinada chave.
https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-consultar-pix-recebidos

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Já tentou ver como é o JSON que está sendo enviado para ver se tem algo errado ?

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá <@!883000147938783272> ! Boa noite. Tudo bem? Um location é a URL do tipo URL de capacidade que serve de endereço para uma cobrança. Em outras palavras é através de um location que se torna possível resgatar as informações relacionadas a uma cobrança e, assim, realizar as movimentações. Payload é o nome dado ao segundo fragmento do objeto JWS (JSON Web Signature) que contém um JSON com os dados referentes a uma cobrança.

Avatar discord do usuario matheus_efi

matheus_efi

Uma outra forma, caso você queira ter certeza de quem está recebendo, é fazer o envio via dados bancários, como neste exemplo:

json
{
"valor": "99.99",
"pagador": {
"chave": "19974764017",
"infoPagador": "Segue o pagamento da conta"
},
"favorecido": {
"contaBanco": {
"nome": "JOSE CARVALHO",
"cpf": "10519952057",
"codigoBanco": "09089356",
"agencia": "1",
"conta": "123453",
"tipoConta": "cacc"
}
}
}

Avatar discord do usuario andresisdanca

andresisdanca

Ver Respostas

java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)

Estou recendo este erro ao chamar o metodo: public void authorize() throws IOException, AuthorizationException, GerencianetException {

Para Auteticar

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Se tiver algo para montar e decodificar JSON você deve conseguir integrar...

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!806859749571821568>.
Tendo criado a cobrança com um txid, quando paga, será enviado o webhook referente a ele. Exemplo:

json
// Pix recebido
{
"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"
}
]
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Nesta variável value você terá algo semelhante ao seguinte json:

json
{
"code": 200, // retorno HTTP "200" informando que o pedido foi bem sucedido
"data": {
"barcode": "00000.00000 00000.000000 00000.000000 0 00000000000000", // linha digitável do boleto
"pix":{
"qrcode":"00020101021226990014BR.GOV.BCB.PIX2577qrcodes-pix.gerencianet.com.br/bolix/v2/cobv/0000000000000000000000000000GERENCIANET SA6010OURO PRETO6207050363047CB1", // BRCode ou copia e cola
"qrcode_image":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmc vMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NSA0NSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMCAwaDQ1djQ1SD..." // QR Code imagem
},
"link": "link_https_para_acesso_o_bolix", // link do Bolix gerado
"pdf": {
"charge": "link_https_do_pdf_da_cobranca" // link do PDF do Bolix
},
"expire_at": "2022-12-15", // data de vencimento do boleto no seguinte formato: 2022-12-15 (ou seja, equivale a 15/12/2022)
"charge_id": numero_charge_id, // número da ID referente à transação gerada
"status": "waiting", // forma de pagamento selecionada, aguardando a confirmação do pagamento ("waiting" equivale a "aguardando")
"total": 5990, // valor, em centavos. Por exemplo: 5990 (equivale a R$ 59,90)
"payment": "banking_billet" // forma de pagamento associada à esta transação ("banking_billet" equivale a "boleto bancário")
}
}
Neste json, você tem o parâmetro ["data"]["pdf"]["charge"] que é o link para o pdf da cobrança.
Ou no parâmetro ["data"]["link"] você obtêmum link que seu cliente também pode acessar e imprimir o boleto

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Certo, <@!711679136904511530>.
Na SDK, na função que gera o boleto, no then você tem o value que contém o json com as informações do boleto criado

js
gn.call("oneStep", body: body).then((value) {
setState(() => _loading = false);
_showMessage("Boleto Criado!", Theme.of(context).accentColor,
MediaQuery.of(context).size.height);
}).catchError((error) {
setState(() => _loading = false);
_showMessage(
error.toString(), Colors.red, MediaQuery.of(context).size.height);
});

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Outra dica seria você registrar seu URL de webhook com um query params para ignorar o /pix que é inserido no final.
Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

Então enviaremos a notificação para https://seudominio.com.br/webhook?ignorar=/pix
E você trata a notificação em /webhook ignorando o /pix

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

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.
Ou seja, esta adição do /pix também dever ser tratada nas configurações de seu servidor para que na rota /webhook/pix você receba as notificações

Avatar discord do usuario vitor.gt

vitor.gt

Ver Respostas

Bom dia, tudo bem?
Preciso de uma ajuda com o mTLS do webhook pix.
Estamos usando o Google Cloud App Engine para a nossa solução

A documentação oficial diz "SSL support for your App Engine app goes above and beyond basic SSL by offering globally-distributed SSL endpoints and built-in load balancing to serve your app securely, reliably, and quickly to a worldwide audience." (https://cloud.google.com/appengine/docs/standard/nodejs/securing-custom-domains-with-ssl)
E aqui diz "Google Cloud load balancers don't support client certificate-based authentication (mutual TLS, mTLS)." (https://cloud.google.com/load-balancing/docs/ssl-certificates#ssl-certificate-limits)

Voces já solucionaram algum caso parecido? Têm alguma ideia de alternativa? Alguma sugestão doq fazer?

Desde já, muito obrigado 🙂

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 SSL fullchain do dominio
key: fs.readFileSync("/"), // Chave privada SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet - baixe no link: 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})
);

Avatar discord do usuario Junior Miksza

Junior Miksza

Ver Respostas

Não, é uma api nodejs, só esta sendo usado a lib routing-controllers para tratar as rotas

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde, <@!676542738455330828>. Você está utilizando o next.js? Vou verificar na sua conta para qual rota o JSON do webhook está sendo enviado, mas aparentemente não está sendo reconhecido/tratado o JSON com as informações do webhook em seu framework.