Implementação de PIX com OAuth e QR Code

EXIBINDO RESPOSTAS:

Avatar discord do usuario _acb09

_acb09

Bom dia!
Obtive sucesso ao criar a API de boleto no sistema da empresa onde trabalho. Agora, preciso implementar via PIX.
Considerando que estou implementando para a empresa e já possuo Client_secret, Client_id e chave pix aleatória (gerada no painel da Efi). Em todos os cenários via PIX, eu preciso de OAuth para apenas gerar o QR Code para o cliente efetuar o pagamento, assim como via boleto (que não necessita de OAuth)?

Avatar discord do usuario palloma_efi

palloma_efi

Bom dia @_acb09 ! Em todas as requisições você precisa informar o access_token, gerado na autenticação. Lembrando que na API Pix, este token tem duração de 1 hora.

Avatar discord do usuario _acb09

_acb09

A linguagem é PHP

Avatar discord do usuario _acb09

_acb09

Estou utilizando o SDK, porém não encontrei autenticação nos modelos de exemplo no código. Então fiz a autorização seguindo o tutorial do site.

Avatar discord do usuario palloma_efi

palloma_efi

A SDK já implementa a autenticação nativamente. Caso a utilize, não precisa se preocupar com a autenticação.
Este erro que está obtendo se deve ao fato de não estar informando grant_type no momento da requisição. https://sejaefi.link/HkxJkfRPYR

Avatar discord do usuario _acb09

_acb09

O meu código está assim:

$config = [];
$config["certificado"] = config("services.efipay.certificate_path");
$config["client_id"] = config("services.efipay.client_id");
$config["client_secret"] = config("services.efipay.client_secret");

$headers = [];
$headers['Authorization'] = "Basic " . base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$headers['Content-Type'] = 'application/json';

$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 => 60,
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 => $headers
));

$response = curl_exec($curl);

if (curl_errno($curl)) {
dd('Error:' . curl_error($curl));
}

curl_close($curl);

dd($response);

Avatar discord do usuario palloma_efi

palloma_efi

Certo! Vou iniciar um atendimento para validarmos as credenciais.