pix-api icon indicating copy to clipboard operation
pix-api copied to clipboard

PIX Itau API's de produção - cURL PHP informando certificado.crt e private key

Open EduardoDosSantosPereira opened this issue 3 years ago • 19 comments

Boa tarde.

Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob).

Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized:

{ "message" : "Falha ao Extrair TokenInfo filter failed" }

Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso?

Obrigado!

EduardoDosSantosPereira avatar Oct 24 '22 15:10 EduardoDosSantosPereira

Boa tarde.

Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob).

Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized:

{ "message" : "Falha ao Extrair TokenInfo filter failed" }

Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso?

Obrigado!

Como voce esta iniciando curl e enviando sua requisição?

Converte a sua requisicao curl em um comando curl para ver se os headers estao sendo enviados corretamente https://stackoverflow.com/questions/42671535/how-to-convert-php-curl-request-to-command-line-curl

daniloab avatar Oct 24 '22 16:10 daniloab

Vou fazer isso, converter a requisição.

Mas segue o bloco do codigo onde inicio o curl e envio a requisiçãoÇ

$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_PORT , 443); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); curl_setopt($ch, CURLOPT_CERTINFO, true); curl_setopt($ch, CURLOPT_SSLCERT, $path_certificado); curl_setopt($ch, CURLOPT_SSLKEY, $path_private_key); curl_setopt($ch, CURLOPT_CAINFO, $path_certificado); curl_setopt($ch, CURLOPT_KEYPASSWD, $pass_certificado);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$response = curl_exec($ch);

echo '

';
$info =curl_errno($ch)>0 ? array("curl_error".curl_errno($ch)=>curl_error($ch)) : curl_getinfo($ch);
print_r($info);

curl_close($ch);

EduardoDosSantosPereira avatar Oct 24 '22 16:10 EduardoDosSantosPereira

Boa tarde.

Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob).

Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized:

{ "message" : "Falha ao Extrair TokenInfo filter failed" }

Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso?

Obrigado!

Encontrou uma solução? Estou passando pelo mesmo problema.

alexanderrbr avatar Feb 09 '23 18:02 alexanderrbr

Boa tarde. Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob). Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized: { "message" : "Falha ao Extrair TokenInfo filter failed" } Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso? Obrigado!

Encontrou uma solução? Estou passando pelo mesmo problema.

Olá pessoal. Estava com este problema ontem realizando a implementação, funcionando no postman e no código não. O que percebi é que estava passando o "Content-Type" e o "encType" como application/json e para pegar o access token precisa passar o formato 'application/x-www-form-urlencoded'. No meu caso resolveu o problema

Diegobecker07 avatar Apr 28 '23 16:04 Diegobecker07

Ola pessoal, como resolveram ?

Estou fazendo com guzzle

public function authentication() { $client = new Client(); $apiUrl = env('URL_TOKEN_AUTENTICACAO');

    try {
        $data = [
            'client_id' => env('CLIENT_ID'),
            'client_secret' => env('CLIENT_SECRET'),
        ];

         $jsonData = json_encode($data);

        // Caminhos para o certificado e chave privada
        $certPath = storage_path('/cert/CERTIFICADO.crt');
        $privateKeyPath = storage_path('/cert/ARQUIVO_CHAVE_PRIVADA.key');

         $response = $client->request('POST', $apiUrl, [
             'headers' => [
                 'Content-Type' => 'application/json',
             ],
             'cert' => [$certPath, ''],
             'ssl_key' => [$privateKeyPath, ''],
             'body' => $jsonData,
         ]);

         if ($response->getStatusCode() == 200) {
             return json_decode($response->getBody()->getContents());

         } else {
             echo 'Erro: Código de status ' . $response->getStatusCode();
         }

    } catch (\Exception $e) {
        dd($e);
        echo 'Exceção: ' . $e->getMessage();
    }

}



E estou obtendo o mesmo erro

WilliamKoerichQua4ttro avatar Oct 23 '23 19:10 WilliamKoerichQua4ttro

Boa tarde.

Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob).

Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized:

{ "message" : "Falha ao Extrair TokenInfo filter failed" }

Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso?

Obrigado!

Alguém conseguiu resolver? estou com o mesmo problema

JohnnySantosPHP avatar Dec 06 '23 14:12 JohnnySantosPHP

Boa tarde. Estou realizando a integração Recebimentos PIX no Itau. Já possuo o client_id e o client_secret e estou realizando a chamada das API's de produção (api/oauth/token e pix_recebimentos/v2/cob). Ao consumir a api/oauth/token via POSTMAN informando os arquivos certificado.crt e private key eu obtenho sucesso. Porém ao realizar via cURL no PHP eu obtenho o seguinte retorno de HTTP/1.1 401 Unauthorized: { "message" : "Falha ao Extrair TokenInfo filter failed" } Alguem que realizou essa integração junto ao Itau sabe como posso resolver isso? Obrigado!

Alguém conseguiu resolver? estou com o mesmo problema

São necessárias 2 requisições, uma para obter o bearer token, e a transação propriamente dita.

Na primeira, como comentado acima, deve-se usar Content-Type: application/x-www-form-urlencoded.

Após obter o token, deve repassar na transação propriamente dita como um header HTTP Authorization:

Authorization: Bearer {token}

O Itau ainda pode requerer um header HTTP proprietário. No caso da api de cobranças/boletos, precisei passar

x-itau-apikey: {client_id}

dev-gto avatar Jan 24 '24 14:01 dev-gto

Boas! Também estou com o mesmo problema, qual a solução?

rabraga avatar Mar 03 '24 09:03 rabraga

@EduardoDosSantosPereira , Conseguiu solução para isso ? Eu estou usando o arquivo .PEM e estou recebendo o mesmo erro.

rabraga avatar Mar 03 '24 12:03 rabraga

Olá @alexanderrbr e @JohnnySantosPHP e @WilliamKoerichQua4ttro , Conseguiram resolver essa questão?

rabraga avatar Mar 04 '24 13:03 rabraga

Consegui sim, se quiser pode me chamar no whatsapp que te passo um código em PHP de como eu fiz 37991251032

On Mon, Mar 4, 2024 at 10:06 AM Ramon Loureiro @.***> wrote:

Olá @alexanderrbr https://github.com/alexanderrbr e @JohnnySantosPHP https://github.com/JohnnySantosPHP e @WilliamKoerichQua4ttro https://github.com/WilliamKoerichQua4ttro , Conseguiram resolver essa questão?

— Reply to this email directly, view it on GitHub https://github.com/bacen/pix-api/issues/531#issuecomment-1976542347, or unsubscribe https://github.com/notifications/unsubscribe-auth/A5ZFKAJ2CWJJRNQRCMFBPK3YWRWVBAVCNFSM6AAAAAARNDWQVCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZWGU2DEMZUG4 . You are receiving this because you were mentioned.Message ID: @.***>

JohnnySantosPHP avatar Mar 04 '24 13:03 JohnnySantosPHP

@JohnnySantosPHP valew! Consegui aqui! Tinha que fazer o "Content-Type: application/x-www-form-urlencoded" e enviar o POST com os dados de client_id e client_secret como string no CURLOPT_POSTFIELDS.

Agora estou com um erro ao tentar fazer o GET em /boletos. A query passa pela URL? Exemplo: https://api.itau.com.br/cash_management/v2/boletos?id_beneficiario=445000244944

rabraga avatar Mar 04 '24 19:03 rabraga