Aplicação blank não retorna a variável

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.

Porque não cria classes PHP e só consome elas no SC?

Não tinha pensado nisso. Obrigado Haroldo, vou fazer isso. Ai eu posto aqui.

1 Curtida

Olá Ederson, bom dia!
Também estoiu começando a implementar o consumo da API do Itaú para geração do QRCode dinâmico do PIX, ainda estou na fase de obtenção do token, no meu caso está retornando uma série de informações e o token é uma delas, ao tentar extrair o token com o seguinte comando
if (!is_array($response)){
$resposta_array = json_decode ( $response, true );
} else {
$resposta_array = $response;
}

$token = $resposta_array [ “access_token” ];

ele me traz o $token vazio!

Você teve esse problema?