Histórico de mensagens sobre credentials em pix

EXIBINDO CONVERSAS RECENTES:

Texto: credentials
Canal: pix
Avatar discord do usuario leandrocostaoliveira

leandrocostaoliveira

Ver Respostas

opa Guilherme, corrigindo, eu fiz as requests usando o axios, não estou utilizando a API, está dando erro na hora de logar no endpoint, como te falei, não houve alteração aqui do meu lado, o código está em produção desde novembro de 2020. Estou fazendo um post na url de oauth ( https://api-pix.gerencianet.com.br/oauth/token ) , solicitando o as credentials e passando o header authorization... daí o gerencianet me retorna com status de erro 400, e o seguinte no data: {
nome: 'erro_interno_servidor',
mensagem: 'Erro interno do servidor'
}
imagem enviada na mensagem pelo usuario leandrocostaoliveira

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Neste caso você tem que verificar se o certificado está sendo referenciado corretamente, também é bom olhar se o
{
"grant_type": "client_credentials"
}

está indo na requisição

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Então é isso, o body deve conter "grant_type": "client_credentials"

Avatar discord do usuario felcampelo

felcampelo

Ver Respostas

Bom dia pessoal. Estou com o seguinte erro na hora de gerar o token de autenticação do pix (https://api-pix.gerencianet.com.br/oauth/token):
"The SSL connection could not be established, see inner exception. The credentials supplied to the package were not recognized."
Rodando local, funciona. Somente quando publico no meu servidor (IIS 10), é que ocorre o erro. Engraçado que a geração de token para cartão de crédito e boleto funciona perfeitamente. Somente pix está dando problema. Pensei que poderia ser algo no meu servidor mas solicitei via postman de dentro do servidor o token e funcionou também. Tem alguma implementação específica para referenciar o certificado quando é pix? A priori faço:

var client = new RestClient("https://api-pix.gerencianet.com.br/oauth/token");
X509Certificate2 uidCert = new X509Certificate2(certificateName);
client.ClientCertificates = new X509CertificateCollection() { uidCert };

Avatar discord do usuario uaca

uaca

alguem mais está com problemas com a collection do após o ultimo update postman ? tive que importar a collection novamente e agora "error_description": "Invalid or inactive credentials"

Avatar discord do usuario oclopes

oclopes

Ver Respostas

Oi <@!800721458875727872> , bom dia!! Tudo bem? Estou tentando encontrar o erro. Me diga: Eu preciso instalar algum certificado do Gerencianet em meu Servidor? Os erros que tenho são: The credentials supplied to the package were not recognized
One or more errors occurred. (The SSL connection could not be established, see inner exception.)

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, <@!330055572483473409>. Como vai?
Você está utilizando o arquivo credentials.json que possui nos exemplos da SDK?
Como está passando o parâmetro pix_cert, com o caminho para seu certificado .p12?

Avatar discord do usuario wesleykovalski

wesleykovalski

Segue o código:

// ENDPOINT COMPLETO
$endpoint = $this->baseUrl . '/oauth/token';

// HEADERS
$headers = [
'Content-type: application/json',
'x-skip-mtls-checking: true'
];

// CORPO DA REQUISIÇÃO
$request = [
'grant_type' => 'client_credentials',
'webhookUrl' => 'https://www.dominio.com.br/endpointdowebhook'
];


// CONFIGURAÇÃO DO CURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $endpoint,
CURLOPT_USERPWD => $this->clientId . ':' . $this->clientSecret,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($request),
CURLOPT_SSLCERT => $this->certificate,
CURLOPT_SSLCERTPASSWD => '',
CURLOPT_HTTPHEADER => $headers
]);

Avatar discord do usuario jessica_efi

jessica_efi

Tem como você inserir esse certificado no mesmo diretório que esta esse arquivo credentials e nesse caminho passar so o nome do certificado?

Avatar discord do usuario matwbug

matwbug

Alguém consegue me ajudar aqui com a api pix? por algum motivo minha requisição curl nao está dando response no site da gerencianet, até baixei os proprios códigos da doc e mesmo assim não foi, é como se a requisição não fosse feita, estou utilizando php


$config = [
"certificado" => BASE.'data/certif/gerencianet.pem',
"client_id" => "xx",
"client_secret" => "xx"
];
$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 palloma_efi

palloma_efi

Ver Respostas

Você inseriu suas credenciais no arquivo credentials.js?

Avatar discord do usuario joaoc7439

joaoc7439

Ver Respostas

Bom dia, pessoal. Estou obtendo um erro quando tento consultar um determinado pix recebido:

{
"nome": "json_invalido",
"mensagem": "Valores ou tipos de campo inválidos",
"erros": [
{
"chave": "additionalProperties",
"caminho": ".query",
"mensagem": "não são permitidas propriedades adicionais"
}
]
}

Estou usando o SDK Python:

gn = Gerencianet(CREDENTIALS)
now = datetime.utcnow()
params = {
'inicio': '2021-04-01T00:00:00Z',
'fim': '2021-05-18T10:00:00Z',
'txid': '8XjAnkrRmsgG0xXhVTuiYPOmKZ'
}
resp = gn.pix_received_list(params=params)

O pix_received_list faz um GET em /v2/pix:

"pix_received_list": {
"route": "/v2/pix",
"method": "get"
},

Quando informo apenas os campos 'inicio' e 'fim', sem o 'txid', a API retorna a lista de todos os pix recebidos no período, tal como esperado.
Não consigo enxergar o que estou fazendo de errado.

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Esse comando você vai conter o certificado .p12 que você gerou em sua conta Gerencianet em um .pem. Depois, na SDK de node você no arquivo credentials.js você vai inserir o caminho do certificado em pathCertProducao ou pathCertHomologacao

Avatar discord do usuario luizgerencianet

luizgerencianet

Ver Respostas

Bom dia <@!400344063846645760> !
Temos um exemplo da requisição de autenticação feita pelo Delphi!
Segue a Função

Delphi
///////////
Const
Body = '{"grant_type": "client_credentials"}';
var
sResponse : String;
HttpClient: TIdHTTP;
JsonToSend: TMemoryStream;
AccessToken : iSuperObject;
begin

HttpClient := TIdHTTP.Create( nil );
HttpClient.ConnectTimeout := 20000;
HttpClient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

with TIdSSLIOHandlerSocketOpenSSL(HttpClient.IOHandler).SSLOptions do
begin
CertFile := //Caminho do Certificado do tipo .PEM
KeyFile := //Caminho da chave do Certificado do tipo .PEM
Mode := sslmUnassigned;
SSLVersions := [sslvTLSv1_2];
end;

with HttpClient do
begin
Request.CustomHeaders.Values['Content-Type'] := 'application/json; application/x-www-form-urlencoded;';
Request.ContentType := 'application/json';
Request.CharSet := 'utf-8';
Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
HandleRedirects := True;
HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth];
end;


HttpClient.Request.Username := //Seu ClientId;
HttpClient.Request.Password := //Seu ClientSecret
HttpClient.Request.BasicAuthentication := True;

JsonToSend := TMemoryStream.Create;
WriteStringToStream(JsonToSend, Body, IndyTextEncoding_UTF8);
JsonToSend.Position := 0;

sResponse := HttpClient.Post({A URL Produção/Homologação}+'/oauth/token',JsonToSend);
AccessToken := SO(sResponse);
ShowMessage(AccessToken.S['access_token']);
end;

Avatar discord do usuario wcarlos

wcarlos

Ver Respostas

coloquei content-type e agora deu {
"error": "invalid_client",
"error_description": "Invalid or inactive credentials"
}

Avatar discord do usuario matheus_efi

matheus_efi

O Body está com

json
{
"grant_type": "client_credentials"
}
?

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