Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Boa tarde, @huggler6815! Tudo bem?
A Gerencianet disponibiliza um endpoint que já monta e lhe entrega Pix Copia e Cola e a imagem do QrCode em base64.

Para isso, após ter criado a cobrança dinâmica, basta consumir o endpoint GET/v2/loc/:id/qrcode passando o id do loc como parâmetro (https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-gerar-qrcode-de-um-location) quer você terá o seguinte retorno:

json
{
"qrcode": "00020126001BR.GOV.BCB.PIX2566qrcodes-pix.ger...",
"imagemQrcode": "data:image/png;base64,iVBORw0KGgoAAQDS... "
}
Deste retorno, o parâmetro qrcode é o pix copia e cola que pode ser implementado em seus sites.

Avatar discord do usuario huggler6815

huggler6815

bom dia @joao_efi
como que eu apresento a imagem do qr-code gerado para o cliente final?
exmplo.... eu recebo esse JSON da resposta do pixCreateCharge
{"calendario":{"criacao":"2022-04-08T14:52:34.669Z","expiracao":3600},"txid":"5bd2ac95166f4d678ae137ba3d8271f3","revisao":0,"loc":{"id":3,"location":"qrcodes-pix.gerencianet.com.br/v2/7b1f92e5e06449088ec22fc019b4cdca","tipoCob":"cob","criacao":"2022-04-08T14:52:34.691Z"},"location":"qrcodes-pix.gerencianet.com.br/v2/7b1f92e5e06449088ec22fc019b4cdca","status":"ATIVA","devedor":{"cpf":"32604226847","nome":"felipe huggler luz"},"valor":{"original":"1.99"},"chave":"231240f6-7b8e-4b46-8a67-82997fd7eb22","solicitacaoPagador":"Informe o número ou identificador do pedido. - [email protected]"}
vi que tem o location, que vem uma url
qrcodes-pix.gerencianet.com.br/v2/7b1f92e5e06449088ec22fc019b4cdca
tem que ter algum tratamento?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

E mesmo se não tivesse o SDK, era só ir direto no JSON e HTTPS, no caso da GN.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

No nó de cima que contém o endToEndId não possui o parâmetro status.
Somente por constar o endToEndId significa que a transação foi efetuada, pois se o pagamento do pix não for efetuado, não irá acionar o webhook. Segue o 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"
}
]
}

Já no array devolucoes possui o status pois ele pode retornar "DEVOLVIDO" ou "NAO_REALIZADO"

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Boa tarde, <@!368831711750127616>!
Será enviado para seu webhook um JSON com a informação do Pix que foi pago juntamente com do array devolucoes. Salientando que pode haver uma única devolução integral, ou várias parciais até completar 100% do valor (https://dev.gerencianet.com.br/docs/api-pix-endpoints#section-recebendo-callbacks). Segue um exemplo:

json
// Devolução
{
"pix": [
{
"endToEndId": "E12345678202009091221syhgfgufg",
"txid": "c3e0e7a4e7f1469a9f782d3d4999343c",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "110.00",
"horario": "2020-09-09T20:15:00.358Z",
"infoPagador": "0123456789",
"devolucoes":[
{
"id": "IdentificadorDevolucao001",
"rtrId": "D12345678202009091221abcdf098765",
"valor": "110.00",
"horario": {
"solicitacao": "2020-09-09T20:15:00.358Z"
},
"status": "DEVOLVIDO"
}
]
}
]
}

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;

Avatar discord do usuario rozer9580

rozer9580

x-amzn-requestid: 9367a7d9-a47b-4002-a7d2-9f5344a21e93
content-length: 70
x-amzn-remapped-content-length: 70
x-amzn-remapped-connection: keep-alive
x-request-id: ab5e47a4-28f2-4e94-84d0-9e7a8a1c456b
x-amz-apigw-id: P59iyGQhoAMFxFw=
vary: Origin
etag: W/"46-XAD/Fng+Qq6nuJUwSmDmoLFq8bc"
x-amzn-remapped-date: Fri, 01 Apr 2022 14:43:55 GMT
access-control-allow-credentials: true
content-type: application/json; charset=utf-8
date: Fri, 01 Apr 2022 14:43:55 GMT

{"nome":"erro_interno_servidor","mensagem":"Erro interno do servidor"}ArrayCurl info:

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

Avatar discord do usuario marcelo_efi

marcelo_efi

Bom dia <@!749415525175656458> , tudo bem ? Sim é possível criar QrCodes dinâmicos através da API, com valores a partir de R$0,01. Com relação ao consumo através do nodejs, não só é possível, como nós também já possuímos uma SDK desenvolvida para ele, segue o link:https://github.com/gerencianet/gn-api-sdk-node.
Nossa documentação:https://dev.gerencianet.com.br/docs.

Avatar discord do usuario 54694

54694

Essa api fornece QR Code com X valor? E com ela tem como utilizar na linguagem nodejs? Quero criar um bot de pagamentos.

Avatar discord do usuario _brunofelipe

_brunofelipe

Ver Respostas

Boa noite pessoal
Estou com problemas ao gerar pix em produção, quando publico em meu servidor retorna a seguinte mensagem, quando gero o pix :
Error reading JObject from JsonReader. Path ''''
Executando exatamente o mesmo código localmente funciona normalmente, alguém pode me ajudar?!
Estou usando o SDK em .Net.Core

Avatar discord do usuario rubenskuhl

rubenskuhl

Pessoal, um adendo a uma sugestão que já dei neste canal: mesmo colocando um hostname aleatório para receber o webhook, como dajsdasjkda.exemplo.com.br, o requisito de Certificate Transparency que as CAs tem que obedecer acaba fazendo vazar esse hostname quando se usa um proxy reverso como Cloudflare. Assim, o melhor mesmo é registrar outro domínio não correlacionável com o domínio principal (CPF/CNPJ diferente, e-mail diferente, ID diferente etc.) e esse domínio ser usado para o webhook.

Avatar discord do usuario rubenskuhl

rubenskuhl

E para completar, você pode comparar o IP da conexão com os IPs divulgados pela GN em https://gerencianet.com.br/artigo/quais-enderecos-de-ip-gerencianet-utiliza/ , e você deve comparar a chave Pix que vem no JSON com as suas chaves Pix. Com essas 5 comparações, você alcança o máximo de segurança nessa sinalização.

Avatar discord do usuario hubner7903

hubner7903

Ver Respostas

parseJwt(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));

return JSON.parse(jsonPayload);
}

Avatar discord do usuario hubner7903

hubner7903

let https = require('https');
let agent = new https.Agent({
pfx: certificado,
passphrase: ''
})

var axios = require('axios');
var data = JSON.stringify({ grant_type: 'client_credentials'});

var config = {
method: 'post',
url: 'https://api-pix-h.gerencianet.com.br/oauth/token',
headers: {
'Authorization':
Basic ${base64},
'Content-Type': 'application/json',

},
httpsAgent: agent,
data: data
};

try {
const response = await axios.request(config);
return response.data
} catch (error) {
console.error(error);
}

Avatar discord do usuario joao_efi

joao_efi

Com o axios, tente algo nessa linha..

ts
const requisicao = {
method: 'POST',
url: 'https://api-pix-h.gerencianet.com.br/oauth/token',
headers: {
Authorization: Basic ${base64},
'Content-Type': 'application/json',
},
httpsAgent: config.agent,
data: JSON.stringify({ grant_type: 'client_credentials' }),
};

let userToken = axios(requisicao)
.then((response) => {
console.log(response);
return response.data.access_token;
})
.catch((error) => {
console.error(error);
});

return userToken;

Avatar discord do usuario hubner7903

hubner7903

O nodejs tem um limite para o header, mas o limite é 16k para versoes acima de 10

Avatar discord do usuario hubner7903

hubner7903

app.use(json({ limit: '50mb' }));
app.use(urlencoded({ extended: true, limit: '50mb' }));