Histórico de mensagens sobre Secret id em pix

EXIBINDO CONVERSAS RECENTES:

Texto: Secret id
Canal: pix
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

const credenciais = {
clientIdProducao: process.env.GN_CLIENT_ID,
clientSecretProducao: process.env.GN_CLIENT_SECRET,
pathCertProducao: process.env.GM_CAMINHO_CERT,

clientIdHomologacao: process.env.GN_CLIENT_ID_HOMOLOGACAO,
clientSecretHomologacao: process.env.GN_CLIENT_SECRET_HOMOLOGACAO,
pathCertHomologacao: process.env.GM_CAMINHO_CERT_HOMOLOGACAO,

sandbox: process.env.GN_SANDBOX,
validateMtls: process.env.GN_VALIDATE_MTLS
}

Avatar discord do usuario fernandogomes2667

fernandogomes2667

Ver Respostas

Bom dia! Estou com o seguinte erro br.com.gerencianet.gnsdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong, minha dúvida é a seguinte, caso fosse problema de certificado a mensagem de erro seria outra?

Avatar discord do usuario joao_efi

joao_efi

Oi <@!839243604266319872> tudo bem? 😄
Para realizar a integração você vai precisar das suas credenciais Client_ID e Client_Secret.
Para visualizar suas credenciais basta fazer login em sua conta Gerencianet ( https://gerencianet.com.br/#login )
Acesse o menu API > Minhas Aplicações, selecione então a aplicação desejada.
Você visualizará as credenciais Client_Id e Client_Secret de Produção e Desenvolvimento.
Vale lembrar que as chaves de Desenvolvimento são utilizadas para simular cobranças e efetuar testes na plataforma. Já as chaves de Produção devem ser utilizadas quando for emitir cobranças reais.

Abaixo seguem alguns links úteis para consulta:
Temos uma tabela resumindo os tipos de integrações e formas de uso disponíveis, acesse e escolha a que melhor atende suas necessidades. https://dev.gerencianet.com.br/docs/tipos-integracoes
Possuímos um curso online que poderá lhe ajudar a ter uma visão geral do funcionamento da nossa API de boletos, cartão, marketplace e assinaturas. https://www.udemy.com/course/eadgerencianet/
Para você implementar os serviços de pagamento desejados, em nossa documentação temos exemplos e explicação da utilização em diversas linguagens!
https://dev.gerencianet.com.br/docs/gerar-boleto-bancario
Além disso, nosso GitHub temos também algumas SDKs com exemplos prontos para facilitar sua integração. https://github.com/gerencianet/

Avatar discord do usuario Julia Efí

Julia Efí

Ver Respostas

Primeiramente, para iniciar a integração nossa API, você recebedor, deverá criar uma conta conosco, que é totalmente gratuita.

Após sua conta criada, acesse nosso site, no menu API > Minhas aplicações você criará uma aplicação e deve ativar a API Pix na aplicação. Nessa aplicação são gerados 2 pares de chaves Client_Id e Client_Secret, sendo um par para utilização em ambiente de Produção e outro para o de Homologação. Estas que são necessárias para autenticação das requisições para o arranjo Pix e demais integrações de boleto, carnê, cartão de crédito.

Para utilizar a API Pix você precisará dessas chaves e de um certificado gerado em sua própria conta. Para isso, temos um tutorial para que você gere com sucesso seu certificado, disponível em https://comunidade.gerencianet.com.br/post/geracao-de-certificado-p12-603522dc3a48978c9a309516. Além disso, você deve criar uma chave Pix pelo seu aplicativo da Gerencianet ou através da própria API e deve vinculá-la a todas as cobranças Pix que você emitir, para poder receber o valor em sua conta. Ressaltamos que a chave deve ser exclusivamente da Gerencianet, ou seja, ela não pode estar vinculada a outro banco.

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

JQuery com Ajax não, mas temos em node

js
//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);
});
Mas o Postman tem um exemplo com jQuery:
js
var settings = {
"url": "https://api-pix.gerencianet.com.br/oauth/token",
"method": "POST",
"timeout": 0,
"headers": {
"x-client-cert-pem": "{{X-Certificate-Pem}}",
"Authorization": "Basic Q2xpZW50X0lkXDM4ZjJhY2M1M2QyMGRmOTJhNDIxMWE3NjhjMTBjMzkyZjk2YWM6Q2xpZW50JhZWQwMGRlZjYzNWRlY2E5YTE5Y2Y2ZTI0YjEwMTBjNzIx",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"grant_type": "client_credentials"
}),
};

$.ajax(settings).done(function (response) {
console.log(response);
});

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$config = [
"certificado" => $this->pixCert,
// "certificado" => DIRPAGE."src/Includes/olimppiuspix.crt.pem",
// "certificado" => "",
"client_id" => $this->clientId,
"client_secret" => $this->clientSecret
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix-h.gerencianet.com.br/v2/webhook/',
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_POSTFIELDS =>'{
"webhookUrl": "https://olimppi.us/webhook/index.php"
}',
CURLOPT_HTTPHEADER => array(
// "authorization: {{Authorization}}",
"Authorization: Basic $autorizacao",
"Content-Type: application/json",
"x-client-cert-pem: {{X-Certificate-Pem}}",
"x-skip-mtls-checking: false"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$config = [
"certificado" => "/etc/certs-gerencianet/olimppiuspix.crt.pem",
"client_id" => $this->clientId,
"client_secret" => $this->clientSecret
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token", // Rota base, homologação ou produção
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"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response; //print_r($response);
echo "
";
// echo "Que que está acontecendo";

Avatar discord do usuario elsonlima0580

elsonlima0580

esse modelo então não é suficiente?
$config = [
"certificado" => "./certificado.pem",
"client_id" => "YOUR-CLIENT-ID",
"client_secret" => "YOUR-CLIENT-SECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token", // Rota base, homologação ou produção
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"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";

Avatar discord do usuario elsonlima0580

elsonlima0580

no modelo citado nem pede chave, pede somente certificado , client_secret e id

Avatar discord do usuario elsonlima0580

elsonlima0580

{
"sandbox": false,
"chave": "27920008182",
"recebedor": "suainscricao.com",
"homologacao": {
"nome_certificado": "certificado.pem",
"client_id": "Client_Id...",
"client_secret": "Client_Secret...",
"pix_url_auth": "https://api-pix-h.gerencianet.com.br/oauth/token",
"pix_url_cob": "https://api-pix-h.gerencianet.com.br/v2/cob",
"pix_url": "https://api-pix-h.gerencianet.com.br/v2/pix"
},
"producao": {
"nome_certificado": "certificado.pem",
"client_id": "id aqui",
"client_secret": "Client_Secret_aqui",
"pix_url_auth": "https://api-pix.gerencianet.com.br/oauth/token",
"pix_url_cob": "https://api-pix.gerencianet.com.br/v2/cob",
"pix_url": "https://api-pix.gerencianet.com.br/v2/pix"
}
}

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Também do <@!781928420757864468> :
// 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);
}

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

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

Avatar discord do usuario marcosfilho8113

marcosfilho8113

$config = [
"certificate" => realpath("classes/gerencianet/certificate_homolog.pem"),
"client_id" => "Client_Id_2bc65d226f54d47bec113654a214a1e3e1b1baea",
"client_secret" => "Client_Secret_948041017d8adadea5eaa303fd744db14da94742"
];

$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curlauth = curl_init();

console_log($data);

curl_setopt_array($curlauth, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token", // Rota base, homologação ou produção
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["certificate"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

Avatar discord do usuario fabricioad5169

fabricioad5169

Ver Respostas

Passos que fiz: Criei minha conta na Gerencianet. Criei minha aplicação. Obtive ID_CLIENT e ID_SECRET. Mandei gerar meu certificado .p12. Usei o comando para gerar o arquivo .pem . Baixei os arquivos da pasta API_V2 e API_V1 com a pasta VENDOR e as respectivas subpastas. Fiz as alterações no arquivo config.json da pasta EXAMPLES existente na API_V2 e API_V1. E estou tentando chamar qualquer exemplo desta pasta com extensão php no meu servidor na locaweb. Recebo sempre o erro 500.... pulei alguma etapa? Alguam sugestão para fazer rodar algum teste simples no meu domínio de gerar um QR CODE para fazer o pix ou algum procedimento básico com o pix?

Avatar discord do usuario wevertondumont

wevertondumont

Já chequei, cliente secret, client id estão conforme os dados lá da minha area restrita do gerenciant.

Avatar discord do usuario luizcristino

luizcristino

Boa tarde, eu estou tendo um problema na hora da intregação com o pix na hora de adicionar o certificado. Eu estou utilizando o código de exemplo que existe na página de documentação

java
String client_id = "YOUR-CLIENT-ID";
String client_secret = "YOUR-CLIENT-SECRET";;
String basicAuth = Base64.getEncoder().encodeToString(((client_id+':'+client_secret).getBytes()));

//Diretório em que seu certificado em formato .p12 deve ser inserido
System.setProperty("javax.net.ssl.keyStore", "certificado.p12");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

URL url = new URL ("https://api-pix-h.gerencianet.com.br/oauth/token"); //Para ambiente de Desenvolvimento
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Basic "+ basicAuth);
conn.setSSLSocketFactory(sslsocketfactory);
String input = "{\"grant_type\": \"client_credentials\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();

InputStreamReader reader = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(reader);

String response;
while ((response = br.readLine()) != null) {
System.out.println(response);
}
conn.disconnect();

E sempre me retorna Connection Reset até pelo postman

Avatar discord do usuario cleversonmenur

cleversonmenur

Ver Respostas

E só completando aqui a ideia do secret. Não há 2 pessoas envolvidas como você citou. Existe só 1 pessoa. A pessoa cria o secret e ela mesma cadastra o webhook no serviço do PSP. Por isso que o conceito é secret mesmo. Se entrarmos no mérito que alguém do PSP pode acessar a base de dados de cadastro de webhooks aí o negócio começa a ficar extremo, pois da mesma forma poderia ter acesso a outras informações pessoais que teriam muito mais valor que um secret de um webhook. E quem garante que a geração das chaves privadas na CA do PSP, que provavelmente não tem certificação oficial de CA, é mais segura que o acesso às informações privadas de uma base de dados de produção? Comentando aqui só para destrinchar mais o assunto... indo além do tabu.

Avatar discord do usuario luismarques9110

luismarques9110

Ver Respostas

Estou iniciando a implementação da api pix, promeiro passo executar o metodo oauth, estou utilizando o clienteid e client secret de desenvolvimeto e o certificado gerado pela gn , porem estou recebendo um erro {"message":"Forbidden"}

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Crie uma aplicação no painel da GN, lá terá o client_id/secret.
Só quem implementa a API Pix são os PSPs como a GN, nem o Banco Central tem isso, ele apenas provê a camada de interconexão e liquidação entre os PSPs.