Histórico de mensagens sobre js

EXIBINDO CONVERSAS RECENTES:

Texto: js
# pix
Avatar discord do usuario fabio.goncalves

fabio.goncalves

Ver Respostas

Vi seu post falando do mTLS no Google Cloud Functions (Firebase), para criar o webhook do Pix. Parece que estou na mesma situação em que você estava um mês atrás... Já estou aprovando pagamento com Pix em produção, mas estou travado na criação do webhook mTLS com NodeJS no Functions. Como você resolveu? Agradeço se puder compartilhar alguma dica...

# pix
Avatar discord do usuario garcialuigi

garcialuigi

Ver Respostas

(node:8360) UnhandledPromiseRejectionWarning: Error: Request failed with status code 403
at createError (C:\TRUFA SHOP\poc\node_modules\axios\lib\core\createError.js:16:15)
at settle (C:\TRUFA SHOP\poc\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (C:\TRUFA SHOP\poc\node_modules\axios\lib\adapters\http.js:260:11)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1220:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:8360) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:8360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

# bolix
Avatar discord do usuario jessica_efi

jessica_efi

Esse é um exemplo de retorno:

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
"link": "link_https_para_acesso_ao_boleto", // link do boleto gerado
"pdf": {
"charge": "link_https_do_pdf_da_cobranca" // link do PDF da cobrança
},
"expire_at": "2018-12-30", // data de vencimento do boleto no seguinte formato: 2018-12-30 (ou seja, equivale a 30/12/2018)
"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": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)
"payment": "banking_billet" // forma de pagamento associada à esta transação ("banking_billet" equivale a "boleto bancário")
}
}

# bolix
Avatar discord do usuario jessica_efi

jessica_efi

Bom dia ! Ao gerar uma cobrança, é retornado um json com o link do boleto e o link do pdf

# pix
Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Bom dia <@!810530260915453983>, na geração da cobrança você pode utilizar o atributo infoAdicionais para inserir informações extras para o cliente que for paga-la.
Exemplo:

json
"infoAdicionais": [
{
"nome": "Mensalidade Intenet 150 Mb",
"valor": "Referente ao mês de novembro"
}
]

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!250270640173613056>!
Como está enviando a URL no body? Nela deve conter o https, segue um exemplo:

json
{
"webhookUrl": "https://seudominio.com.br"
}

# pix
Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde garcialuige, pelo nome TRUFA SHOP acredito que você esteja seguindo os vídeos do DevPleno, no entanto essas falhas retornadas não são referentes da API-Pix e sim relacionadas a promises. DE qualquer forma temos um exemplo de autenticação pronte em node que você pode se baser/utilizar caso queira:

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

# pix
Avatar discord do usuario garcialuigi

garcialuigi

C:\TRUFA SHOP\poc>node pix-auth.js
homologacao
getToken homologacao
(node:3896) UnhandledPromiseRejectionWarning: Error: Request failed with status code 401
at createError (C:\TRUFA SHOP\poc\node_modules\axios\lib\core\createError.js:16:15)
at settle (C:\TRUFA SHOP\poc\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (C:\TRUFA SHOP\poc\node_modules\axios\lib\adapters\http.js:260:11)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1220:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:3896) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:3896) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, <@!499000549870403594>!
No arquivo /examples/config.json você alterou o parâmetro sandbox para false?

# pix
Avatar discord do usuario maransatto

maransatto

Fala pessoal.

Segue uma sequencia de 3 vídeos que estou publicando de hoje até quinta para dar uma visão geral da API Pix da Gerencianet + Webhook + Node.js

Aproveitem para se inscrever no canal e ajudem a compartilhar pra essa comunidade crescer.

https://www.youtube.com/watch?v=Z9mfcvNMFeI

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113

qual json que a gerencianet tá te retornando?

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Para quem não está conseguindo gerar o Token a partir do exemplo C# da Gerencianet.
No exemplo da Gerencianet tem uma variável "cities" contendo o client_id e client_secret, mas nunca é usada.
O Authorization está fixo, mas você deve substituí-lo pelo authorization base64 gerado a partir de seu client_id e client_secret.
O parameter "application/json" tem o grant_type=client_credentials, mas não tem as credenciais no body.
Certifique-se de estar usando .Net Framework 4.6.1 ou superior. Versões anteriores do .Net Framework não utilizam TLS por padrão.
Para versão anterior a 4.6.1 do .Net Framework, descomente as duas primeiras linhas do código

Atenção: atente-se ao ambiente de homologação/produção e faça a alteração necessária.
// modelo funcional
public void GerarTokenGN(string client_id, string client_secret)
{
// força o uso do protocolo TLS, caso o protocolo padrão seja SSL ou outro protocolo
//ServicePointManager.Expect100Continue = true;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

X509Certificate2 uidCert = new X509Certificate2("NOME_DO_CERTIFICADO.p12", "");
var client = new RestSharp.RestClient("https://api-pix-h.gerencianet.com.br/oauth/token");
client.ClientCertificates = new X509CertificateCollection() { uidCert };
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic " + System.Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", client_id, client_secret))));
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\"grant_type\":\"client_credentials\",\"client_id\":\"" + client_id + "\",\"client_secret\":\"" + client_secret + "\"}", ParameterType.RequestBody);
IRestResponse restResponse = client.Execute(request);
string response = restResponse.Content;

Console.WriteLine(response);
}

# sugestões
Avatar discord do usuario christianefi

christianefi

json
{
"pix": {
"receberSemChave": true,

"chaves": {
"[email protected]": {
"recebimento": {
"txidObrigatorio": true,

"qrCodeEstatico": {
"recusarTodos": true
}
}
},
"[email protected]": {...}
}
}
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Você pode criar uma request no Postman, com método POST para sua URL webhook, enviando o certificado para mTLS e body, um exemplo de um Pix pago:

json
{ "pix":
[ { "endToEndId": "E292361202020000041739s0349633KVD",
"txid": "4dsaa337897a4a479ef8005eea80e097",
"chave": "1a580600-0000-0000-0000-0008f87327f7",
"valor": "0.01",
"horario": "2021-03-04T17:39:50.000Z"
}
]
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Beleza. Verifique então se está correto no config.json

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Em relação ao caminho para seu certificado, verifique no arquivo config.json, em /examples/config.json

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113

Ver Respostas

{
"nome":"json_invalido",
"mensagem":"Valores ou tipos de campo inválidos",
"erros":[
{
"chave":"required",
"caminho":"",
"mensagem":"deve ter a propriedade obrigatória body"
}
]
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Neste exemplo, exibe um que contém esta informação. Segue um exemplo completo:

php
$curl = curl_init();

$txid = "seutxid";

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob/$txid",
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_SSLCERT => $config["certificate"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS =>'{
"calendario": {
"expiracao": 13600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.02"
},
"chave": "[email protected]",
"solicitacaoPagador": "Teste pix."
}',
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $accessToken",
'Content-Type: application/json'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113


curl_setopt_array($curlrequest, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob",
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_SSLCERTPASSWD => "",
CURLOPT_SSLCERT => $config["certificate"],
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Authorization: $accessToken",
"content-Type: application/json"
),
));