API PagSeguro não reconhece variável em tempo de execução convertida em STRING
O Felipe Guedes Coutinho ajudou na resolução de um problema quanto a como passar valores de variáveis de uma página com um carrinho para um arquivo com a API do PagSeguro. Consegui fazer isso através de sessões, e a passagem ocorre normalmente. O problema que surgiu dessa solução, que para o meu contexto é a melhor, é que a API do PagSeguro Lightbox não está reconhecendo variáveis em tempo de execução. Mesmo que convertidas em STRING. O tópico que abri e que creio que se esgotou o problema original em que o Felipe Guedes Coutinho ajudou a resolver foi este:
Colocando o problema. Possuo duas variáveis, uma que contém um nome de produto que quero passar como parâmetro para um pagamento no PagSeguro lightbox, e outra com o valor. Ambas são oriundas de um processo em tempo de execução, e não há problema com ele, pois elas são preenchidas normalmente e os valores são impressos no display. A variável $produto_nome e a $ttBrasil. Elas são repassadas para duas variáveis SESSION:
$_SESSION['descricao'] = $produto_nome;
$_SESSION['valorTotal'] = $ttBrasil;
Na página em que se encontra o script da API do PagSeguro, chamada pagseguro.php, esses valores são recebidos sem problemas (numa condição que explicitarei), de duas formas:
$data['itemDescription1'] = $_SESSION['descricao'];
$data['itemAmount1'] = $_SESSION['valorTotal'];
Ou
$data['itemDescription1'] = "'".$_SESSION['descricao']."'";
$data['itemAmount1'] = "'".$_SESSION['valorTotal']."'";
O problema é que este processo funciona normalmente e a variável é reconhecida quando o valor é declarado estaticamente e entre aspas simples. Em tempo de execução não.
Funciona quando:
$ttBrasil = '50.00';
$produto_nome = 'Nome de Teste';
Se as variáveis vierem em tempo de execução, mesmo existindo (eu as imprimo no display normalmente), a API do PagSeguro não reconhece. Quando falo em tempo de execução, é as SESSION recebendo diretamente as variáveis:
$_SESSION['descricao'] = $produto_nome;
$_SESSION['valorTotal'] = $ttBrasil;
A variável $ttBrasil é DECIMAL no BD, reconhecida como DOUBLE pelo PHP. Eu converti ela para STRING de várias formas, sempre mantendo o problema, mas achei mais adequado usar a função STRING, que converte FLOAT em STRING:
$ttBrasil = (string) $ttBrasil;
Verifiquei após a conversão e ela retorna como do tipo STRING. Uso esses comandos para verificar o tipo de variável e o valor.
echo gettype($ttBrasil);
echo $_SESSION['valorTotal'];
Este é o problema que não consegui resolver.Discussão (1)
Carregando comentários...