Histórico de mensagens em dúvidas

EXIBINDO CONVERSAS RECENTES:

Data: 27/08/2024
Canal: dúvidas
Avatar discord do usuario thiagorc85

thiagorc85

Ver Respostas

Ok... Obrigado @joaolucas_efi

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Qualquer coisa é só nos chamar por aqui.

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Boa tarde, @thiagorc85, tudo bem?
O tempo de resposta de nossa API Pix é na casa das centenas de milissegundos, portanto sugerimos que você entre em contato com o suporte do seu sistema integrado para que verifiquem possíveis causas da demora percebida por você.

Avatar discord do usuario thiagorc85

thiagorc85

Ver Respostas

Boa tarde... Sou usuário do ION Pay, que utiliza a API da EFI. Estamos testando a modalidade de pagamento via PIX e o qrcode está demorando muito para gerar. Com quem eu posso ver essa situação?

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal vou abrir um atendimento para podermos verificar algumas informações junto à você.

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

e passa certinho

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

eu faço essa verificação:
if (!file_exists($certificado) || !is_readable($certificado)) {
throw new \Exception("O arquivo de certificado não foi encontrado: " . $certificado);
}

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal uma coisa que pode estar ocasionando a falha é o caso o caminho do certificado esteja incorreto, verifique se o arquivo esta de fato sendo encontrado.

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

Eu tenho um código em php que faz isso, e também já testei utilizando o conversor de vocês, mas o mesmo erro é retornado

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal verifiquei aqui e o arquivo é .pem mesmo. Como você fez a conversão do arquivo para .pem?

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

recebi esse erro com o arquivo .p12:
Exception: could not load PEM client certificate from /projeto_maquina_api/storage/app/Certificados/certificate12.p12, OpenSSL error error:0480006C:PEM routines::no start line, (no key found, wrong pass phrase, in file /projeto_maquina_api/app/Services/Efi/AuthService.php on line 62

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal tente fazer com o arquivo .p12, por favor.

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

Agora o erro retornado é esse:
Exception: unable to set private key file: '/projeto_maquina_api/storage/app/Certificados/certificate12.pem' type PEM in file /projeto_maquina_api/app/Services/Efi/AuthService.php on line 59

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal existem algumas falha em como você montou a requisição, segue um exemplo de como fazer a autenticação:

php
//Desenvolvido pela Consultoria Técnica da Efí
$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://pix-h.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"], // 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 luizfeleal

luizfeleal

Converti o certificado de .p12 para .pem, e envio na requisição.

Avatar discord do usuario luizfeleal

luizfeleal

Estou fazendo dessa forma

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

$credenciaisBase64 = base64_encode($cliente_id . ":" . $client_secret);

$url = env('URL_EFI') . "/oauth/token";

// Inicializa a sessão cURL
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // Verifica o certificado do servidor
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // Verifica o host do certificado
curl_setopt($ch, CURLOPT_SSLCERT, $certificado); // Define o certificado a ser usado


// Adiciona os dados do cliente como autenticação básica
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
"Authorization: Basic " . $credenciaisBase64

]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'grant_type' => 'client_credentials',
]));

// Executa a requisição e obtém a resposta
$resposta = curl_exec($ch);

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @luizfeleal, tudo bem?
Como você esta fazendo a requisição?

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

Olá, bom dia! Estou tendo um erro ao tentar enviar uma requisição para me autenticar com a API. O erro é o seguinte:
Exception: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 in file.
Conseguem me ajudar?