Olá a todos!
Caros colegas, Estou implementando a API pix do itaú. Já consegui fazer funcionar , porém tudo por fora do scriptcase, num servidor web. Agora quero implementar esse código no scriptcase. Eu criei uma aplicação blank para a chamada do Token de autenticação. Essa, ele devolve o token perfeitamente pelo SC. Porém, criei outro blank, com o código para o consumo passando o token para ela. E essa não retorna valor algum. E é o mesmo código que usei no servidor web e funciona perfeitamente.
Blank_token:
$sts_url = “https://sts.itau.com.br/api/oauth/token”;
$sts_rota = “/api/oauth/token”;
$grant_type = “client_credentials”;
$content_type = “application/x-www-form-urlencoded”;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sts_url . $sts_rota);
curl_setopt($ch, CURLOPT_PORT , 443);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSLCERT, DIR . “/itau/certificado.crt”);
curl_setopt($ch, CURLOPT_SSLKEY, DIR . “/itau/ARQUIVO_CHAVE_PRIVADA.key”);
curl_setopt($ch, CURLOPT_CAINFO, DIR . “/itau/certificado.crt”);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, “grant_type=”.$grant_type."&client_id={cliente_id}&client_secret={client_secret}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: ".$content_type,
“x-itau-correlationID: 2”,
“x-itau-flowID: 1”
));
$response = curl_exec($ch);
$info =curl_errno($ch)>0 ? array(“curl_error_”.curl_errno($ch)=>curl_error($ch)) : curl_getinfo($ch);
//Aqui eu trato o retorno para separar somente o token.
echo $response;
curl_close($ch);
Esse código acima funciona perfeitamente pelo SC. (Troquei as credenciais por segurança.)
Agora o outro blank que busca o json:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => ‘https://secure.api.itau/pix_recebimentos/v2/cob’,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => ‘’,
CURLOPT_SSLCERT => DIR . “/itau/certificado.crt”,
CURLOPT_SSLKEY => DIR . “/itau/ARQUIVO_CHAVE_PRIVADA.key”,
CURLOPT_CAINFO => DIR . “/itau/cacert.pem”,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => ‘POST’,
CURLOPT_POSTFIELDS =>’{
“valor”: {
“original”: “1.00”
},
“chave”: “04062764000162”
}’,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ’ . $token, //Aqui, mesmo inserindo o token manualmente, não funciona tb.
‘Content-Type: application/json’,
‘x-itau-apikey: ecabfb8d-7627-488f-86ab-2488df5f6f30’,
‘x-itau-correlationID: a1e64241-7fdb-4d05-a7f6-c44febcdd8d9’,
‘x-itau-flowID: 1’
),
));
$response = curl_exec($curl);
$info =curl_errno($curl)>0 ? array(“curl_error_”.curl_errno($curl)=>curl_error($curl)) : curl_getinfo($curl);
//print_r($info);
curl_close($curl);
echo $response;
Ele funciona perfeitamente no servidor web, fora do scriptcase. Mas no scriptcase, ele não retorna o json. O estranho é uma chamada retornar, mas a outra não.
Alguem já passou por isso? Podem me ajudar por gentileza, acredito que muita gente que implementa essas API’s, tem essa dificuldade no scriptcase.
Agradeço desde já;
Ederson.