Histórico de mensagens sobre Client_ID em pix

EXIBINDO CONVERSAS RECENTES:

Texto: Client_ID
Canal: pix
Avatar discord do usuario cx10zn

cx10zn

Olá, boa noite a minha aplicação esta apresentando o erro abaixo

php
Array ( [nome] => chave_invalida [mensagem] => A chave informada não faz referência à conta Gerencianet autenticada )

Eu ja utilizava o gateway mais porem troquei de conta, e começou apresentar esse erro ja verifiquei certificado e as chave como client id e secret

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Me informa por favor no privado o número da conta Gerencianet e o client_id que você está utilizando.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Essa chave é mesmo da conta PJ, mas será que client_id e client_secret são ?

Avatar discord do usuario lucsa.dev

lucsa.dev

client id e client secret também são da conta pj

Avatar discord do usuario rubenskuhl

rubenskuhl

Tem também o client_id, client_secret e certificado... que identificam conta e aplicação.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Boa noite, @catalunha!
O certificado a ser utilizado deve ser da mesma conta em que se encontra a aplicação. Lembrando também que tem distinção de ambiente, ou seja, se você utilizar credenciais (client_id e cliente_secret) de produção, o certificado também deve ser de produção

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O exemplo que tem na doc é assim:

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

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Esse OAuth é do ambiente de produção, o client_id, client_secret e certificado também são de porudção ?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você precisa mandar client_id, client_secret e apresentar o certificado.

Avatar discord do usuario daniel.8964

daniel.8964

Ver Respostas

@Deleted User client_id e client_secret ficam na sua aplicação criada na gerencianet e o certificado é o certificado também gerado no site da gerencianet

Avatar discord do usuario vzt

vzt

Ver Respostas

O que seria o client_id, client_secret e pix_cert?
imagem enviada na mensagem pelo usuario vzt

Avatar discord do usuario daniel.8964

daniel.8964

Ver Respostas

a solução então seria criar um passo a passo para o cliente ensinando como preencher com o client_id, client_secret e certificado na nossa plataforma ? ou é meio anti prático?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Ele precisa gerar client_id, client_secret e certificado, e te passar, por causa do modelo Credentials Flow. O que você sugere se chama Auth Code Flow, e este issue no GitHub do BACEN discute como isso seria:
https://github.com/bacen/pix-api/issues/83

Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Boa noite @schinnick tudo bem? 🙂
Caso siga na linha de implementar diretamente no RN + axios, seria necessário implementar dentro do app o consumo das rotas da nossa API.
Vale lembrar que para o consumo dos endpoints PIX é necessário seu par de credenciais (Client_id e Client_Secret) + o certificado Pix emitido dentro da sua própria conta Gerencianet.
Tentar, de alguma forma, embutir essas informações no app pode ser perigoso caso alguém mal intencionado venha executar engenharia reversa no app após lançado. Onde uma vez com acesso a essas credenciais + certificado o intruso consegue realizar ações na sua conta, e até transferências (caso tenha o envio de pix habilitado)
Com isso em vista, acredito que não seja a melhor abordagem de integração.

Quando a implementação do backend, no nosso github você encontra SDKs em diversas linguagens para facilitar o desenvolvimento!
Segue o link da nossa SDK em node: https://github.com/gerencianet/gn-api-sdk-node

Avatar discord do usuario huggler6815

huggler6815

var certificado = await fs.readFileSync("./certs/producao-xxxx-odete.pem");
console.log(certificado);

var options = {
sandbox: false,
client_id: 'xxxx',
client_secret: 'xxxx',
pix_cert: certificado,
};

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

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 paz_do_senhor

paz_do_senhor

Ver Respostas

Sim...observei que já estão disponíveis tanto o Client_ID como o Client_Secret que ambas as abas no site. Grato por seu esclarecimento meu amigo!!!

Avatar discord do usuario hubner7903

hubner7903

const certificado = await this.movimentoService.certificado_gn();
const client_id = await this.movimentoService.client_id_gn();
const client_secret = await this.movimentoService.client_secret_gn();
const base64 = Buffer.from(${client_id}:${client_secret}).toString("base64");

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

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

Avatar discord do usuario guilhermesr7105

guilhermesr7105

Ver Respostas

Credenciais no caso client_id, e secret?