Histórico de mensagens sobre Client_ID

EXIBINDO CONVERSAS RECENTES:

Texto: Client_ID
# pix
Avatar discord do usuario roguitar88

roguitar88

$options = [
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'pix_cert' => '/etc/certs-gerencianet/olimppiuspixprod.pem',
// 'debug' => false,
// 'timeout' => 30,
'sandbox' => false
];

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

A chave utilizada é a da mesma conta do client_id, client_secret e certificado que está utilizando?

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Conforme o Matheus exemplificou a forma como é feito o settleCharge()
Ou seja, este trecho que ele lhe passou, você irá implementar em seu _QUITAR_boletocliente.php

E nele você irá pegar o id que foi passado via POST no data : "_method=id_transacao="+id,, da seguinte forma:

php
'use strict';

var Gerencianet = require('gn-api-sdk-node');

var id_transacao = $_POST['id_transacao']; // Id vindo da request Ajax
var clientId = 'your_client_id';
var clientSecret = 'your_client_secret';

var options = {
client_id: clientId,
client_secret: clientSecret,
sandbox: true
}

var params = {
id: id_transacao
}

var gerencianet = new Gerencianet(options);

gerencianet
.settleCharge(params)
.then(console.log)
.catch(console.log)
.done();

# bolix
Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde <@!824696840153726987>, o método é PUT mesmo, especificamente PUT /v1/charge/:id/settle. Como você está utilizando JS seria assim:

js
'use strict';

var Gerencianet = require('gn-api-sdk-node');

var clientId = 'your_client_id';
var clientSecret = 'your_client_secret';

var options = {
client_id: clientId,
client_secret: clientSecret,
sandbox: true
}

var params = {
id: 1000 // no lugar do 1000 coloque o charge_id desejado
}

var gerencianet = new Gerencianet(options);

gerencianet
.settleCharge(params)
.then(console.log)
.catch(console.log)
.done();

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Esses escopos tem permissão específica no painel da GN. Eles estão incluídos na aplicação que tem o client_id/client_secret que você está usando ?
Isso é homologação ou produção ? Há alguns (poucos) escopos só disponíveis em produção, e esses me parecem estar entre eles.

# pix
Avatar discord do usuario amunhoz

amunhoz

Ver Respostas

Pergunta, estou pegando esse erro na geração do QRcode:
error:"insufficient_scope"
error_description:"Access token has insufficient scope"
Já verifiquei os client_id e client_secret, a chave está correta...
Url homologação correta.
PS. no ambiente de homologação

# bolix
Avatar discord do usuario matheus_efi

matheus_efi

Seria a configuração de consultar as notificações?

json
// supposing that this is a post route
public void NotificationRoute(notification) {
var param = new {
token = notification
};

dynamic endpoints = new Endpoints("client_id", "client_secret", true);
response = endpoints.GetNotification(param);
}

# pix
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 "
";

# pix
Avatar discord do usuario roguitar88

roguitar88

$options = [
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'pix_cert' => $this->pixCert,
'headers' => array(
'x-skip-mtls-checking' => 'true'
),
// 'debug' => false,
// 'timeout' => 30,
'sandbox' => $this->sandboxBoolean // (true = development e false = production)
];

# pix
Avatar discord do usuario roguitar88

roguitar88

$options = [
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'pix_cert' => $this->pixCert,
// 'debug' => false,
// 'timeout' => 30,
'sandbox' => $this->sandboxBoolean // (true = development e false = production)
];

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

No arquivo /exemples/config.json da SDK, altere suas credenciais client_id, client_secret e o nome do certificado

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

client_id e client_secret são da aplicação que você criou, não CPF/CNPJ e senha da conta.

# pix
Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

E nesse config.json eu tenho mesmo que colocar o client_id e o client_secret?

# pix
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";

# pix
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 "
";

# pix
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"
}
}

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

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Além da conta, precisa criar uma aplicação... e cada aplicação tem um par client_id/client_secret.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Que eu lembre é com o par client_id/client_secret da aplicação criada no app da Gerencianet, e não com cpf ou senha do app.

# sugestões
Avatar discord do usuario sady_efi

sady_efi

Como citado pelo Christan, aos que tiverem interesse de explorar o serviço basta me encaminhar o Client_Id, vamos atualizar a collection neste momento