Ir para conteúdo
Aureo Almeida

API PagSeguro não reconhece variável em tempo de execução convertida em STRING

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aureo Almeida

Veja que o exemplo que eu coloquei o resultado FINAL da variável que é a variável que você tem dentro de PAGSEGURO.PHP tem exatamente o conteudo que necessita.

 

//Variável ttBrasil é a soma de dois numericos, logo ela é do tipo INTEGER
$ttBrasil = 1 + 1400000;

//Exibe o TIPO da variável
echo gettype($ttBrasil);

//Exibe o conteudo da variável
echo $ttBrasil."<br>";

//Variável $_SESSION['valorTotal'] esta assumindo uma STRING porque estou concatenando com aspas simples o resultado dela, logo ela é do tipo STRING
$_SESSION['valorTotal'] = "'".number_format($ttBrasil, 2 , ',', '')."'";

//Exibe o TIPO da variável
echo gettype($_SESSION['valorTotal']);

//Exibe o conteudo da variável
echo $_SESSION['valorTotal']."<br>";

//Aqui estou passando para $data['itemDescription1'] o conteudo da variável $_SESSION['valorTotal'] que é uma STRING, logo ela é do tipo STRING também
$data['itemDescription1'] = $_SESSION['valorTotal'];

//Exibe o TIPO da variável
echo gettype($data['itemDescription1']);

//Exibe o conteudo da variável
echo $data['itemDescription1'];

Então o problema ai é outro e não o TIPO da STRING.

 

Tente entender o que está acontecendo nas suas movimentações, recomendo você a fazer os DISPLAY's do TIPO da VARIÁVEL e logo em seguida o DISPLAY's do CONTEÚDO da VARIÁVEL.

 

Se não funcionar o jeito vai se você colocar os códigos completos para que possamos fazer o próprio teste para uma melhor analise.

 

Mas na teoria TEM que FUNCIONAR.

 

Se a minha resposta for útil não esqueça de agradecer e votar positivo.

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por emmanuelsiqueira30
      Pessoal boa tarde.
      Estou precisando de um help na seguinte questão:
      Estou com um formulário em PHP, chamada cadastro.php que passa um POST para a página de transação chamada resumo-boleto.php, porém o arquivo que possui as configurações (config.php) de E-mail e Token, quando uso o do Sandbox funciona e gera o boleto normalmente mas ao colocar em produção não passa nenhum parametro.
       
       
    • Por emmanuelsiqueira30
      Pessoal boa tarde.
      Estou precisando de um help na seguinte questão:
      Estou com um formulário em PHP, chamada cadastro.php que passa um POST para a página de transação chamada resumo-boleto.php, porém o arquivo que possui as configurações (config.php) de E-mail e Token, quando uso o do Sandbox funciona e gera o boleto normalmente mas ao colocar em produção não passa nenhum parametro.
    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por tony_lu
      Ola pessoal, preciso de uma ajuda!
      Tenho uma loja virtual na brasil na web onde esta integrado uma conta do pagseguro. Acontece que a mesma empresa quer uma outra loja, porém na plataforma Tray e com pagamento via Pagseguro! Então estou na duvida, posso integrar a mesma conta pagseguro com o mesmo token para as duas lojas? Não pode dar conflito?
      A plataforma Brasil na Web eu coloco para configurar o token e o email de cadastro do Pagseguro, na loja Tray tem que colocar além do token, cadastrar uma url la dentro do pagseguro, acho que é uma url de retorno. Então meu receio é dar conflito! Qual seria a melhor solução? Aguardo obrigado
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.