Histórico de mensagens sobre timeout

EXIBINDO CONVERSAS RECENTES:

Texto: timeout
# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Você só precisa consultar em caso de timeout para ver se não veio mesmo o pagamento e você consulta por desencargo de consciência.

# pix
Avatar discord do usuario diegohenrique1989

diegohenrique1989

Ver Respostas

curl_setopt_array($curl, array(
CURLOPT_URL => $_ENV["PIX_URL_AUTH"], // 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 =>"{\r\n \"grant_type\": \"client_credentials\"\r\n}",
CURLOPT_SSLCERT => $arq_certificado, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json",
),
));

# pix
Avatar discord do usuario Deleted User

Deleted User

Ver Respostas

api pix tá online galera? To recebendo timeout

# pix
Avatar discord do usuario guilherme_eyhe3189

guilherme_eyhe3189

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 => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

# sugestões
Avatar discord do usuario francisco.carvalho

francisco.carvalho

Ver Respostas

{
"pix": {
"recebimentoManual": "aceitar",
"chaves": [{
"valor": "[email protected]",
"webhook": {
"notificar": {
"envio": true,
"recebimento": true,
"devolucao": true,
"recusa": true
},
"incluir": {
"tarifa": true
}
},
"recebimento": {
"txidRegex": "^[a-zA-Z0-9]+$"
}
}, {
"valor": "[email protected]",
"webhook": {
"notificar": {
"envio": false,
"recusa": false
}
}
}]
}
}

Definições:

Por default:
- Todas as notificações nascem habilitadas;
- Não há match de regex: aceita-se qualquer txid;
- Tarifa não é retornada;
- Pix Manual é acatado sempre;

Default em JSON

{
"pix": {
"recebimentoManual": "aceitar",
"chaves": [{
"valor": "[email protected]",
"webhook": {
"notificar": {
"envio": true,
"recebimento": true,
"devolucao": true,
"recusa": true
},
"incluir": {
"tarifa": true
}
},
"recebimento": {
"txidRegex": "" // se vazio, desconsiderar
}
}]
}

Observação
Quando de um envio de Pix: a notificação de webhook, em caso de status NAO_REALIZADO , poderá trazer o motivo da falha (PSP deu timeout, recusou, etc..). Em outro momento falaremos disso.

# sugestões
Avatar discord do usuario francisco.carvalho

francisco.carvalho

Ver Respostas

<@!522899003663450113> acredito que podemos assumir que, se webhook.notificar.envio for habilitado, a notificação do envio de Pix será enviada com a informação se foi sucesso ou falha. Em caso de falha, irá constar o motivo, que pode ser uma recusa ou timeout do PSP recebedor.

# pix
Avatar discord do usuario teodoro.rafael

teodoro.rafael

function getAccessToken($pix_url_auth, $arq_certificado, $client_id, $client_secret)
{
/
# Esta rotina consome um endpoid POST da Gerencianet para realizar a geração do AccessToken
/

$curl = curl_init();

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

curl_setopt_array($curl, array(
CURLOPT_URL => $pix_url_auth, // 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"
),
));

$response = curl_exec($curl);

curl_close($curl);

return json_decode($response, true);
}

# pix
Avatar discord do usuario franciscorsobrinho

franciscorsobrinho

Como ainda não tenho o webhook operando, minha principal rota de baixa é pelo ajax de 10 em 10 segundos.
Sim, o final da análise de uma consulta aciona a consulta seguinte via setTimeout, caso o pagamento ainda não tenha sido feito.
Dificilmente uso o setInterval

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

se vc estiver consultando pelo GET /pix na GN, 10 segundos é interessante, conservador. mas se vc vai consultar no seu próprio banco de dados se o pedido/pix tá pago ou não, 2 ou 5 segundos é perfeitamente aceitável. e seja como for, é interessante encadear as consultas (acionar a primeira, e fazer a próxima ser enviada após o retorno da primeira + X segundos, por um setTimeout disparado). se fizer um setInterval pode emparelhar muitos requests e sobrecarregar seu sistema

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.gerencianet.com.br/v2/cob/6UXiZdHkyUVNeEI2',
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 eyJbjMhHA_EWlVs1w5SgPuqraEX5g7qjGLskA4bavtCas',
'x-client-cert-pem: {{X-Certificate-Pem}}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

você está passando os dados do Body ?

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob/fc9a4366ff3d4964b5dbc6c91a8724d5",
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 =>"{\r\n \"calendario\": {\r\n \"expiracao\": 3600\r\n },\r\n \"devedor\": {\r\n \"cpf\": \"12345678909\",\r\n \"nome\": \"Francisco da Silva\"\r\n },\r\n \"valor\": {\r\n \"original\": \"124.45\"\r\n },\r\n \"chave\": \"\",\r\n \"solicitacaoPagador\": \"Cobrança dos serviços prestados.\"\r\n}",
CURLOPT_HTTPHEADER => array(
"authorization: {{Authorization}}",
"x-client-cert-pem: {{X-Certificate-Pem}}"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario felipoantonoff

felipoantonoff

Usei o Curl da Lib PHP, com pequena adição de logs, segue o Curl usado:

php
$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => $pix_url_cob,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 8,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_SSLCERT => $arq_certificado,
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => [
"authorization: $tokenType $accessToken",
"Content-Type: application/json",
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);
if ($err) {
$this->log->write('emitePix() - Error Curl' . print_r($err, true));
return false;
}

$this->log->write('emitePix() - Error Curl' . print_r($err, true));

$this->log->write('emitePix() - Response ' . print_r($response, true));"

Curioso, que parece ocorrer só nesta chamada, a autorização não ocorre isso.
Uso o PHP 7.2 no servidor e com HTTPS.

# pix
Avatar discord do usuario felipoantonoff

felipoantonoff

Ver Respostas

Pessoal é normal o getPayload dar timeout?
Aqui está levando um minuto e pouco e acaba dando Timeout

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Exemplo para testar a sua url do webook em modo desenvolvimento com php .


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://sua_url_aqui/webhook.php',
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 =>'{
"pix": [
{
"endToEndId": "E12345678202009091221syhgfgufg",
"txid": "c3e0e7a4e7f1469a9f782d3d4999343c",
"valor": "110.00",
"horario": "2020-09-09T20:15:00.358Z",
"infoPagador": "0123456789",
"devolucoes": {
"id": "123ABC",
"rtrId": "D12345678202009091221abcdf098765",
"valor": "10.00",
"horario": {
"solicitacao": "2020-09-09T20:15:00.358Z"
},
"status": "EM_PROCESSAMENTO"
}
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: text/plain'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario ezequielsp

ezequielsp

Rodando o ping na minha máquina:

ping qrcodes-pix-h.gerencianet.com.br
PING qrcodes-pix-h-gerencianet-1256127902.us-east-1.elb.amazonaws.com (54.84.126.253): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

Rodando do servidor de testes:

ping qrcodes-pix-h.gerencianet.com.br
PING qrcodes-pix-h-gerencianet-1256127902.us-east-1.elb.amazonaws.com (54.157.134.53) 56(84) bytes of data.
^C
--- qrcodes-pix-h-gerencianet-1256127902.us-east-1.elb.amazonaws.com ping statistics ---
146 packets transmitted, 0 received, 100% packet loss, time 144999ms

# pix
Avatar discord do usuario oleoessencial

oleoessencial


$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 =>"{\r\n \"grant_type\": \"client_credentials\"\r\n}",
CURLOPT_HTTPHEADER => array(
"x-client-cert-pem: {{X-Certificate-Pem}}",
"Authorization: Basic Q3334f34f34f3g5355gh56hg5w6h457wg457w54w56h7w56f5f6wNzVmZGQxNGU2MDMxMjlhNTMw",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario lorenacastro

lorenacastro

Ver Respostas

$file = file_get_contents("./config.json");
$config = json_decode($file, true);
$environment = ($config["sandbox"] === true) ? "development" : "production";
$certfile = $config[$environment]["certificate_name"];

$curl = curl_init();

curl_setopt_array($curl, array (
CURLOPT_URL => $location,
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 => $certfile,
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array (
"Authorization: Bearer " . $access_token,
"Content-Type: application/json"
),
));

$response = curl_exec($curl);
echo $response;

# pix
Avatar discord do usuario sady_efi

sady_efi


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qrcodes-pix-h.gerencianet.com.br/v2/68de0255e8b44136a7698b0b5903dd3d',
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',
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario lorenacastro

lorenacastro

Ver Respostas

function auth() {
$file = file_get_contents("./config.json");
$config = json_decode($file, true);
$environment = ($config["sandbox"] === true) ? "development" : "production";

$certfile = $config[$environment]["certificate_name"];

$curl = curl_init();

$authorization = base64_encode($config[$environment]["client_id"] . ":" . $config[$environment]["client_secret"]);

curl_setopt_array($curl, array(
CURLOPT_URL => $config[$environment]["pix_auth_url"], // 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 => $certfile, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";
}

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

Estou tentando usar este exemplo , aonde eu pego o {"grant_type": "client_credentials"} ?
$file = file_get_contents("./config.json");
$config = json_decode($file, true);
$environment = ($config["sandbox"] === true) ? "development" : "production";

$certfile = "./certificate/" . $config[$environment]["certificate_name"];

$curl = curl_init();

$authorization = base64_encode($config[$environment]["client_id"] . ":" . $config[$environment]["client_secret"]);

curl_setopt_array($curl, array(
CURLOPT_URL => $config[$environment]["pix_auth_url"], // 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 => json_encode("{"grant_type": "client_credentials"}"),
CURLOPT_SSLCERT => $certfile, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";