Histórico de mensagens sobre timeout em pix

EXIBINDO CONVERSAS RECENTES:

Texto: timeout
Canal: pix
Avatar discord do usuario bernardocollet_36741

bernardocollet_36741

Ver Respostas

$config = [
"certificado" => __DIR__."/arquivo.pem",
"client_id" => "CLIENTEID",
"client_secret" => "CLIENTESECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.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"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
print_r($response);

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@conexao_cefet, agora está incluindo outros parâmetros. A variável options deve conter os seguintes parâmetros, e depois é acrescentado o headers com o parâmetro x-skip-mtls-checking.
$options = [
"client_id" => "Client_Id",
"client_secret" => "Client_Secret",
"certificate" => realpath(__DIR__ . "/productionCertificate.p12"), // Absolute path to the certificate in .pem or .p12 format
"sandbox" => false,
"debug" => false,
"timeout" => 30
];
https://github.com/gerencianet/gn-api-sdk-php/blob/master/examples/credentials/options.php

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não, timeout de Pix é 40 segundos.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Seria melhor usar... mas você disse que a API não retorna ? De dar timeout na requisição ?

Avatar discord do usuario huggler6815

huggler6815

eu vou consultar o saldo antes de enviar... talvez essa timeout ja resolva, sei la

Avatar discord do usuario huggler6815

huggler6815

se eu receber um pagamento e quiser fazer um repasse... é preciso usar algum timeout para o dinheiro do recebimento bater efetivamente na conta?

Avatar discord do usuario znuuxx

znuuxx

Sim... mas o problema ta sendo ainda na hora de rodar o /webhook... de acordo com a doc, ao acessar esse endpoint ele devolve um 200, mas no meu caso ele fica pingando varias vezes no endpoint e depois da timeout

Avatar discord do usuario aureomoraes

aureomoraes

alguma dica de como dar refresh no token qnd ele expira, obs: tentei com a lib date-fns e tbm com setTimeout e ambas abordagens falharam

Avatar discord do usuario henryq_

henryq_

const GNRequest = async (credentials) => {
const authResponse = await authenticate(credentials);
const accessToken = authResponse.data?.access_token;

setTimeout(async () => {
GNRequest(credentials);
console.log(accessToken);
}, 3600000);

return axios.create({
baseURL: process.env.GN_ENDPOINT,
httpsAgent: agent,
headers: {
Authorization: Bearer ${accessToken},
"Content-Type": "application/json",
},
});
};

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @deivson7351.
Segue um exemplo cURL para consultar um Pix a partir de seu txid.

php
$access_token = 'resultado da autenticação';
$certificado = 'caminho do certificado'
$txid = 'identificador do pix';

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.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 => 'GET',
CURLOPT_SSLCERT => $certificado,
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
'authorization: Bearer ' . $access_token
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde! Segue o exemplo:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.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 => 'GET',
CURLOPT_HTTPHEADER => array(
'authorization: Bearer $access_token',
'x-client-cert-pem: {{X-Certificate-Pem}}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Avatar discord do usuario claudiohenriquedev

claudiohenriquedev

Ver Respostas

Coloquei 4 processos com timeout de 15 segundos.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Primeiro você deve autenticar na API e obter o access_token.

php
$curl = curl_init();

$authorization = base64_encode("$client_id:$client_secret");

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

$auth = json_decode(curl_exec($curl), true);

curl_close($curl);

$tokenType = $auth['token_type'];
$accessToken = $auth['access_token'];

Depois emitir o pix
php
$curl = curl_init();

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 => $arq_certificado, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS => '{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "02279112312",
"nome": "Maria apareciada monteiro"
},
"valor": {
"original": "10.21"
},
"chave": "",
"solicitacaoPagador": "Mensaldiade Monteiro Sistemas"
}',
CURLOPT_HTTPHEADER => array(
"authorization: $tokenType $accessToken",
"Content-Type: application/json"
),
));

$dadosPix = json_decode(curl_exec($curl), true);
curl_close($curl);

return $dadosPix;

Avatar discord do usuario deivson7351

deivson7351

Ver Respostas

seria isso:
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob/$id",
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 =>'{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "02279112312",
"nome": "Maria apareciada monteiro"
},
"valor": {
"original": "10.21"
},
"chave": "",
"solicitacaoPagador": "Mensaldiade Monteiro Sistemas"
}',
CURLOPT_HTTPHEADER => array(
"authorization: {{$autorizacao}}",
"x-client-cert-pem: {{$config["certificado"]}}"
),
));

echo $curl;

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Avatar discord do usuario isecchin

isecchin

Ver Respostas

Cada hora uma coisa diferente...
Já recebemos erro de timeout na autenticação (mais de 30 segundos sem resposta):

cURL error 28: Operation timed out after 30001 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api-pix.gerencianet.com.br/oauth/token
Erro de comunicação com o endpoint:
Network error communicating with endpoint
Erro de servidor:
Erro interno do servidor: Erro interno do servidor

Avatar discord do usuario joao_efi

joao_efi

No caso você precisa informar o caminho dentro do sistema de arquivos, não via http.
Por exemplo, se a estrutura do seu projeto é:

MeuProjeto
|- gn-api-sdk-php
| |- productionCertificate.pem
|- config.json
No seu arquivo de config deve ser informado nesse tipo:
json
{
"client_id": "SEU_client_id",
"client_secret": "SEU_client_secret",
"pix_cert": "./gn-api-sdk-php/productionCertificate.pem",
"sandbox": false,
"debug": false,
"timeout": 30
}

Avatar discord do usuario NadsonKT

NadsonKT

Nao sei se está relacionado ao timeout da requisiçao que o GerenciaNet faz em meu webhook para verificar o MTLS... talvez

Avatar discord do usuario NadsonKT

NadsonKT

Por incrivel que pareça, não tem nada haver com timeout da minha requisição.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Está em ambiente de homologação, certo? A solução para esta questão é aumentar o tempo de timeout na requisição, você pode colocar uma valor maior que 30 segundos.
Se estiver utilizando nossa SDK de Laravel, você pode alterar no parâmetro timeout
imagem enviada na mensagem pelo usuario guilherme_efi

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;