PIX Itau API's de produção - cURL PHP informando certificado.crt e private key
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!
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
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);
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.
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
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
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
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}
Boas! Também estou com o mesmo problema, qual a solução?
@EduardoDosSantosPereira , Conseguiu solução para isso ? Eu estou usando o arquivo .PEM e estou recebendo o mesmo erro.
Olá @alexanderrbr e @JohnnySantosPHP e @WilliamKoerichQua4ttro , Conseguiram resolver essa questão?
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 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