Histórico de mensagens sobre timeout em pix

EXIBINDO CONVERSAS RECENTES:

Texto: timeout
Canal: pix
Avatar discord do usuario reuelfreitas

reuelfreitas

Configurei um certificado na AWS para meus domínios e estou usando o DNS da Cloudflare. Criei um custom domain para minha API Gateway na AWS, configurei o truststore.pem e o mapeamento do endpoint. No entanto, mesmo depois de autorizar o custom domain na Cloudflare, o mapeamento não está funcionando e estou recebendo um timeout ao tentar acessar o custom domain.

Alguem conseguiria me ajudar?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @vinicio254! Tudo bem?

Você pode usar o exemplo abaixo para registrar o webhook. Sobre a configuração do mTLS, você pode conferir este vídeo que ensina a configuração em servidor Apache.

php

$homolog = true; // false para produção

$config = [
"certificado" => realpath(__DIR__ . "/certificado.pem"), // certificado em .pem de produção ou homologação
"client_id" => "Client_Id",
"client_secret" => "Client_Secret"
];

$chavePix = "suachavepix";

$webhookUrl = "https://seudominio.com.br/webhook/hash=hashdeseguranca&ignorar="

$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/oauth/token" : "https://pix.api.efipay.com.br/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 8,
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"
),
));
var_dump(curl_exec($curl));
$returnAuth = json_decode(curl_exec($curl), true);
$access_token = $returnAuth['access_token'];
curl_close($curl);


//Criação da cobrança
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/v2/webhook/$chavePix" : "https://pix.api.efipay.com.br/v2/webhook/$chavePix"
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": $webhookUrl
}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"x-skip-mtls-checking: true",
"Content-Type: application/json"
),
));
$responsePix = json_decode(curl_exec($curl), true);
curl_close($curl);

echo '
' . json_encode($responsePix, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @roxzin! Como vai?
Aqui está um código que funciona:

php

$homolog = true; // false para produção

$config = [
"certificado" => realpath(__DIR__ . "/certificado.pem"), // certificado em .pem de produção ou homologação
"client_id" => "Client_Id",
"client_secret" => "Client_Secret"
];


$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/oauth/token" : "https://pix.api.efipay.com.br/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 8,
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"
),
));
var_dump(curl_exec($curl));
$returnAuth = json_decode(curl_exec($curl), true);
$access_token = $returnAuth['access_token'];
curl_close($curl);


//Criação da cobrança
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? 'https://pix-h.api.efipay.com.br/v2/cob/' : 'https://pix.api.efipay.com.br/v2/cob/',
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 => '{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.45"
},
"chave": "[email protected]"
}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));
$responsePix = json_decode(curl_exec($curl), true);
curl_close($curl);

echo '
' . json_encode($responsePix, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

if ($responsePix['loc']['id']) {
$idlocationPix = $responsePix['loc']['id'];

// Obtêm o Pix Copia e Cola e QR Code
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? 'https://pix-h.api.efipay.com.br/v2/loc/' . $idlocationPix . '/qrcode' : 'https://pix.api.efipay.com.br/v2/loc/' . $idlocationPix . '/qrcode',
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 => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
),
));

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

curl_close($curl);


$PixCopiaCola = $response['qrcode'];
$imagemQrcode = $response['imagemQrcode'];


echo 'QR Code:';
echo '
' . json_encode($PixCopiaCola, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

echo 'Imagem:
';
echo '';
}
Também temos nossa SDK de PHP (https://github.com/efipay/sdk-php-apis-efi), que usa o Guzzle.

Avatar discord do usuario curtinaz

curtinaz

mas dá timeout

Avatar discord do usuario navossoc

navossoc

vai dar 301 ou timeout se tentar seguir o redirect

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Ver Respostas

$config = [
"certificado" => "./certificados/homologacao-certificado_cert.pem",
"client_id" => "???",
"client_secret" => "???"
];

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

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://pix-h.api.efipay.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_SSLCERT => $config["certificado"],
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

if(curl_errno($curl)) {
echo 'Erro no cURL: ' . curl_error($curl);
} else {
echo $response;
}

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Ver Respostas

Tudo bem Guilherme.
Eu gostaria de utilizar o CURL mesmo, não quero utilizar o SDK em minha aplicação, tem como me ajudar?
$config = [
"certificado" => "certificado.pem",
"client_id" => "Client_Id???",
"client_secret" => "Client_Secret_???"
];

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

$curl = curl_init();

curl_setopt_array($curl, array(
//CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token",
CURLOPT_URL => "https://pagarcontas.api.efipay.com.br/v1/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_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 _acb09

_acb09

Ver Respostas

{
"certificate": "CAMINHO_ABSOLUTO/web\\certificates\\efipay\\homologacao-544374-cert.pem",
"clientId": "Client_Id_????",
"clientSecret": "Client_Secret_???",
"debug": false,
"pwdCertificate": "",
"responseHeaders": true,
"sandbox": true,
"timeout": 30,
"headers": {
"x-skip-mtls-checking": true
}
}