Problemas na Integração com API Pix em PHP

EXIBINDO RESPOSTAS:

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Bom dia pessoal, dei inicio na integração hoje em PHP com API Pix e API de pagamentos de contas.
Segui todos os passos, criei aplicação, gerei e converti o certificado e não retorna o access_token.
Retorna vazio e no Postman dá um erro.
Alguém poderia me ajudar nesse início?

Avatar discord do usuario rodrigo_90439

rodrigo_90439

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 guilherme_efi

guilherme_efi

Entendido. Sem problemas.
O erro provavelmente está no certificado. O CURL não reconhece o caminho do certificado sendo uma URL como havia colocado. Você deve colocar o caminho para o certificado no local do servidor.
Exemplo:

php
$config = [
"certificado" => "../certificado.pem",
"clientid" => "Client_Id???",
"client_secret" => "Client_Secret???"
];

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Entendi...

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Guilherme, nesse caso eu utilizo o .pem mesmo?

Avatar discord do usuario guilherme_efi

guilherme_efi

Sim. utilizando o cURL deve usar o certificado convertido em .pem

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Vou tentar aqui, o estranho que deu erro no Postman também.

Avatar discord do usuario guilherme_efi

guilherme_efi

No Postman se usa o certifica em .p12 mesmo.

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Ah, entendi...
Vou testar e te aviso, obrigado.

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Guilherme, o que é client_credentials?

Avatar discord do usuario guilherme_efi

guilherme_efi

Onde está essa informação?

Avatar discord do usuario rodrigo_90439

rodrigo_90439

{
"nome": "erro_autorizacao",
"mensagem": "O grant_type deve ser informado"
}

Avatar discord do usuario rodrigo_90439

rodrigo_90439

{
"grant_type": "client_credentials"
}

Avatar discord do usuario rodrigo_90439

rodrigo_90439

eu enviaria as credenciais novamente?
CURLOPT_POSTFIELDS =>'{
"grant_type": "client_credentials",
"client_id": "' . CLIENT_ID . '",
"client_secret": "' . CLIENT_SECRET . '"
}',

Avatar discord do usuario guilherme_efi

guilherme_efi

É o body da requisição que deve ser enviada para indicar o padrão de autenticação.

Avatar discord do usuario guilherme_efi

guilherme_efi

Esse mensagem você obteve na requisição com cURL ou no Postman?

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Postman, deu certo agora.
Vou testar no CURL.