Ir para conteúdo
Aureo Almeida

Passar valor para lightbox transparente do PagSeguro

Recommended Posts

Eu estou desenvolvendo um carrinho de compras num arquivo chamando carrinho.php e entre os scripts disponíveis da API para pagar através PagSeguro escolhi um que chama um arquivo com as informações da API (pagseguro.php), pega os dados presente nele e abre API do Checkout Transparente para o pagamento. Este é o script:

<script>
function enviaPagseguro(){
$.post('pagseguro.php','',function(data){
$('#code').val(data);
$('#comprar').submit();
})
}
</script>

O que eu não estou conseguindo fazer é passar o valor total das compras do carrinho para o arquivo com os parâmetros da APPI. Com valores fixos a API funciona bem, como posso exemplificar com os seguintes parâmetros:

$data['token'] =OCULTO';
$data['email'] = OCULTO';
$data['currency'] = 'BRL';
$data['itemId1'] = '1';
$data['itemQuantity1'] = '1';
$data['itemDescription1'] = 'Produto de Teste';
$data['itemAmount1'] = '299.00';

$url = 'https://ws.pagseguro.uol.com.br/v2/checkout';

O que eu desejo é fazer três coisas, que não estou sabendo fazer.

Primeira: passar como valor do parâmetro $data['itemAmount1'] a variável que possuo na página que faz a totalização da compra, chamada de $ttcompra;

Segunda: passar como valor do parâmetro $data['itemQuantity1'] a variável que mostra o total de itens, chamada $ttitems.

E a terceira é que desejaria que nas informações a serem enviadas para o PagSeguro estivesse um novo item, com o valor do código da compra.

É possível isso nesta API eu estou utilizando? Busquei na documentação dela no PagSeguro e não achei. Eles estão mudando a página e não se encontra muita coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aureo Almeida

Primeira: passar como valor do parâmetro $data['itemAmount1'] a variável que possuo na página que faz a totalização da compra, chamada de $ttcompra;

 

Resposta:

$data['itemAmount1'] = '".$ttcompra."';

Recomendo você a fazer um echo $ttcompra e ver se o formato corresponde ao solicitado X.XX (Numero PONTO NUMERO NUMERO).

Exemplo: '299.00'

Pode ser que você tenha formato de moeda ficando com ponto e virgula, o que pode dar erro.

 

Segunda: passar como valor do parâmetro $data['itemQuantity1'] a variável que mostra o total de itens, chamada $ttitems.

 

Resposta:

$data['itemQuantity1'] = '".$ttitems."';

Recomendo você a fazer um echo $ttitems e ver se o formato corresponde ao solicitado Numero Inteiro.

Exemplo: '1';

E a terceira é que desejaria que nas informações a serem enviadas para o PagSeguro estivesse um novo item, com o valor do código da compra.

 

Resposta:

Se o que você quer é enviar um ITEM diferente para cada venda, basta você criar uma lógica para controlar os ITENS que você já enviou com um banco de dados, ai o que eu recomendo é, sempre antes de você enviar a compra/venda para o PagSeguro você faz um SELECT a sua base de dados para obter o MAX(id_venda) e adicionar 1 antes de enviar.

 

Ficaria algo mais ou menos assim:

 

CREATE TABLE IF NOT EXISTS `tb_ordem_pedidos` (
  `id_venda` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Código de Registro de Venda',
  `dt_venda` date NOT NULL COMMENT 'Data de Atualização do Cliente',
  PRIMARY KEY (`id_venda`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Tabela de Registro de Vendas.' AUTO_INCREMENT=0;

 

//Deckara dentro da variavel SQL o comando para se obter o maior valor da tabela;

$sql = "select max(id_venda) from tb_ordem_pedidos";

 

//Executa o comando e associa a coluna ao array $id_max[nome da coluna];

$id_max = mysql_assoc_query(mysql_query($sql));

 

//Pega o resultado e adiciona mais 1.

$id_max['max(id_venda)'] = $id_max['max(id_venda)'] + 1;

 

Então você envia o novo ID para o PagSeguro;

$data['itemId1'] = '".$id_max['max(id_venda)']."';

Após concretizar o envio para o PagSeguro recomendo fazer um INSERT com o ID_VENDA novo enviado.

 

//Obtem a data do sistema (Data de Hoje por exemplo no formato da tabela 2019-07-29)

$date = date('Y-m-d');

 

//declara o comando de INSERT dentro da variável SQL

$sql = "INSERT INTO TB_ORDEM_PEDIDOS (id_venda, dt_venda) VALUE (NULL, ".$date.")";

 

//Realiza o comando ao banco de dados;

$insert = mysql_query($sql);

 

Espero ter ajudado de alguma forma.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajudou sim Felipe, com a sugestão de estrutura da tabela para controlar a ordem dos pedidos. Porém, olhando creio que eu não fui claro no pedido de informação, pois não mencionei que o que eu não estou conseguindo fazer é passar as referidas variaveis do PHP,  $ttcompra e $ttitens, da página onde está o carrinho, chamada carrinho.php, para a página onde está o script do PagSeguro, chamada pagseguro.php. 

O carrinho funciona, o script do Pag Seguro com valores estáticos e de teste funciona, mas não consigo fazer a passagem acima, de um arquivo para o outro. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode armazenar os valores utilizando
sessões, assim, poderá transitar entre as
requisições de páginas "sem perder" os
valores presentes nas mesmas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aureo Almeida

Se você quer transitar valores e variáveis de um arquivo para outro existe apenas 2 meios.

Ou via FORM usando os métodos POST e GET ou no PHP criando variáveis de SESSÃO.

 

Exemplo:

Vamos dizer que eu estou na página carrinho.php e eu tenho a variável abaixo que eu quero usar dentro do pagseguro.php.

 

//OBRIGATORIAMENTE eu tenho que ter o comando

SESSION_START(); //Este comando inicia a area de variável de sessão.

 

$_SESSION['VarQualquer'] = 'Conteudo'; //Aqui eu criei a variavel de sessão VARQUALQUER que eu quero usar na outra página.

//Pronto, variável atribuida,

 

Agora eu estou em pagseguro.php e quero usar aquela variável que declarei dentro de carrinho.php.

 

//Para que eu possa ler a variável acima neste arquivo, eu tenho OBRIGATORIAMENTE colocar o mesmo comando

SESSION_START(); //Este comando inicia a area de variável de sessão.

//Agora eu posso fazer o que quiser com aquela variável.

 

echo $_SESSION['VarQualquer'];

if (!empty($_SESSION['VarQualquer'])){

    echo "Variável com valor: ".$_SESSION['VarQualquer'];

} else {

    echo "Variável vazia.";

}

$_SESSION['VarQualquer'] = "Novo valor";

echo $_SESSION['VarQualquer'];

 

Então vamos ao que eu entendi do seu problema:

Você tem na sua página CARRINHO.PHP os seguintes campos com os seguintes conteúdos:

$data['token'] = 'OCULTO';
$data['email'] = 'OCULTO';
$data['currency'] = 'BRL';
$data['itemId1'] = '1';
$data['itemQuantity1'] = '1';
$data['itemDescription1'] = 'Produto de Teste';
$data['itemAmount1'] = '299.00';

Se estas variaveis estão sendo transitadas com os valores FIXOS como mostra acima de CARRINHO.PHP para PAGSEGURO.PHP eu acredito que desta forma não deve funcionar de nenhum jeito, mas se você diz que funcionar com os valores acima, então o exemplo abaixo TEM que funcionar:

//Experimente desta forma e altere os valores, mas tome cuidado para
//não colocar informações que a API não estão preparados para receber;

$var_do_php_token = 'OCULTO';
$var_do_php_email = 'OCULTO';
$var_do_php_tipo_moeda = 'BRL';
$var_do_php_iten = '1';
$var_do_php_qtd = '2';
$var_do_php_desc = 'Carrinho de controle remoto';
$var_do_php_montante = '2000.00';

$data['token'] = $var_do_php_token;
$data['email'] = $var_do_php_email;
$data['currency'] = $var_do_php_tipo_moeda;
$data['itemId1'] = $var_do_php_iten;
$data['itemQuantity1'] = $var_do_php_qtd;
$data['itemDescription1'] = $var_do_php_desc;
$data['itemAmount1'] = $var_do_php_montante;

Agora se não for isso, eu realmente não entendi o que você esta tentando fazer.

Mas recomendo você a usar no lugar de $data as variáveis de $_SESSION assim:

 

Página CARRINHO.PHP

//Experimente desta forma e altere os valores, mas tome cuidado para
//não colocar informações que a API não estão preparados para receber;

$var_do_php_token = 'OCULTO';
$var_do_php_email = 'OCULTO';
$var_do_php_tipo_moeda = 'BRL';
$var_do_php_iten = '1';
$var_do_php_qtd = '2';
$var_do_php_desc = 'Carrinho de controle remoto';
$var_do_php_montante = '2000.00';

SESSION_START();
$_SESSION['token'] = $var_do_php_token;
$_SESSION['email'] = $var_do_php_email;
$_SESSION['currency'] = $var_do_php_tipo_moeda;
$_SESSION['itemId1'] = $var_do_php_iten;
$_SESSION['itemQuantity1'] = $var_do_php_qtd;
$_SESSION['itemDescription1'] = $var_do_php_desc;
$_SESSION['itemAmount1'] = $var_do_php_montante;

E na sua pagina PAGSEGURO.PHP você faz assim:

SESSION_START();
echo $_SESSION['token'];
echo $_SESSION['email'];
echo $_SESSION['currency'];
echo $_SESSION['itemId1'];
echo $_SESSION['itemQuantity1'];
echo $_SESSION['itemDescription1']
echo $_SESSION['itemAmount1']

Espero ter ajudado de alguma forma

 

Att.

Felipe Guedes Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela orientação Felipe. O problema era um pouco diferente da compreensão que tiveste, mas tentei tua solução, pois poderia se aplicar, e infelizmente o lightbox do pag seguro não funcionou. Fica rodando.

Na verdade, é na página do PagSeguro que eu tenho as seguintes variáveis.

$data['token'] = 'Oculto';
$data['email'] = 'Oculto';
$data['currency'] = 'BRL';
$data['itemId1'] = '1';
$data['itemQuantity1'] = '1';
$data['itemDescription1'] = 'Produto de Teste';
$data['itemAmount1'] = '200.00';

Eu tenho uma sessão na página carrinho.php chamada provisoriamente de carrinho: $_SESSION['carrinho'] = array();. Ela funciona para armazenar os produtos.

O que eu gostaria de passar para a página pagseguro.php são duas variáveis: uma com o valor total da compra no carrinho, e outra com a descrição do produto. A primeira é a variável $produto_nome e a segunda é a $ttcomprabrasil, definidas na página carrinho.php.

$data['itemDescription1'] = $produto_nome;
$data['itemAmount1'] = $ttcomprabrasil;

Talvez fique mais claro o problema, que eu não tenha conseguido passar concretamente, pois trabalhei com o problema mais geral, e que eu ainda não consegui resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aureo Almeida

Acho que entendi.

Dentro de CARRINHO.PHP você tem 2 variáveis:

ESSA --> $produto_nome e ESSA --> $ttcomprabrasil

 

É isso? E você quer passar essas duas variáveis para dentro da página PAGSEGURO.PHP.

 

Dentro de CARRINHO.PHP você faz isso:

SESSION_START(); //Obrigatório colocar SESSION_START();

//Cria 2 variáveis de sessão para armazenar o conteudo e passar para PAGSEGURO.PHP

$_SESSION['descricao']$produto_nome;

$_SESSION['valorTotal']$ttcomprabrasil;

//Pronto, agora você tem duas variáveis de sessão que pode utilizar em outras páginas.

//Como por exemplo PAGSEGURO.PHP

 

Em PAGSEGURO.PHP você vai fazer o seguinte:

SESSION_START(); //Obrigatório colocar SESSION_START();
$data['itemDescription1'] = $_SESSION['descricao']; //Pegando a variável criada em CARRINHO.PHP
$data['itemAmount1'] = $_SESSION['valorTotal']; //Pegando a variável criada em CARRINHO.PHP

OBS.: Apenas tenha em mente que o CONTEUDO dessas duas variáveis de sessão que criamos em CARRINHO.PHP e estamos usando em PAGSEGURO.PHP precisam ser do TIPO STRING, o conteudo precisa estar entre aspas simples, se elas não tiverem entre aspas simples, na hora que você for fazer a movimentação acima você precisa colocar assim:

 

$data['itemDescription1'] " ' ".$_SESSION['descricao']." ' ";

$data['itemAmount1'] = " ' ".$_SESSION['valorTotal']." ' ";

 

Se você der um echo nas variáveis de sessão elas tem que aparecer assim:

 

echo $_SESSION['descricao']

Display:  'desc'

echo $_SESSION['valorTotal']

Display '299.00'

 

Sem espaço entre as aspas " e simples '.

 

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

Apesar de ter resolvida a forma de passar os dados, como informei após realizar um exemplo simples com a proposta que passaste, estou com um problema de concatenação de aspas nas variáveis em tempo de execução.

Fiz como sugeriste, criando as variáveis de sessão na página carrinho.php e passando para a página pagseguro.php. No exemplo simples ok, funcionou e passou os valores que atribui a ela de forma estática. Quando atribuo o valor a ela manualmente, entre aspas simples, ela funciona.

Porém, quando atribuo valor em tempo de execução, não.

EXEMPLIFICANDO

FUNCIONA CORRETAMENTE A DEFINIÇÃO NA PÁGINA CARRINHO.PHP

$ttcomprabrasil= ’50.00’;

$_SESSION['valorTotal'] = $ttcomprabrasil;

 

NÃO FUNCIONA NA PÁGINA CARRINHO.PHP

$_SESSION['valorTotal'] = $ttcomprabrasil;

 

A referida variável tem o valor da soma de outras duas:

$ttcomprabrasil = $frete + $valor_total_venda;

Testei e ela funciona e imprime corretamente os valores.

 

CÓDIGO  NA PÁGINA PAGSEGURO.PHP

session_start();

$data['itemDescription1'] = $_SESSION['descricao'];

$data['itemAmount1'] = $_SESSION['valorTotal'];

 

$data['token'] =;

$data['email'] =;

$data['currency'] = 'BRL';

$data['itemId1'] = '1';

$data['itemQuantity1'] = '1';

$data['itemDescription1'] = "'".$_SESSION['descricao']."'";

$data['itemAmount1'] = "'".$_SESSION['valorTotal']."'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aureo Almeida

Existem meios de você manipular a variável.

 

Se você faz a soma de 2 valores, você tera uma variável com conteudo Numérico.

 

Experimente usar algum comando do PHP que converta.

Vou deixar alguns aqui e você faz os testes para ver se funciona.

Faça assim:

$ttcomprabrasil_string = strval($ttcomprabrasil); //Isso deve converter o conteudo numérico para STRING.
$_SESSION['valorTotal'] = $ttcomprabrasil_string;

Existem outros comandos.
$ttcomprabrasil_string = settype($ttcomprabrasil, "integer"); // $ttcomprabrasil é agora 5   (integer)
$ttcomprabrasil_string = settype($ttcomprabrasil, "string");  // $ttcomprabrasil é agora "1" (string)

Se você quiser ver se o conteudo da sua variável é NUMERICA ou STRING faça isso

echo gettype($ttcomprabrasil); //Vai escrever INTEGER se for Numérico e STRING se for Alphanumérico.

Então para o seu problema você pode usar o SETTYPE($suaVar, "string"); ou strval($suaVar);

 

Veja se isso resolve o seu novo problema.

 

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

Eu estava há meses com o mesmo problema, tentando inputar o valor total da compra em POST para a página pagseguro.php e não ia de jeito nenhum. 
Com a dica de utilizar SESSION do Felipe Guedes Coutinho, funcionou! Só precisei adicionar uma regrinha de number_format pq o PagSeguro é rígido com o formato 000.00.

Grande abraço e obrigado pelas dicas preciosíssimas!

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 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
    • Por New Job
      Tenho um checkout pagseguro configurado em um site e gostaria de ajustar o código. Linguagem é PHP.
    • Por Jack Oliveira
      Olá boa noite pessoal
       
      preciso de uma ajuda em CSS......
       
       
      Se puderem preciso abrir uma imagem feito lightbox, da maneira que esta esta abrindo em uma nova url mostrado o diretório das imagem no navegador.
       
       
      codigo
       
      <div class="col overlay building"> <img src="<?php echo ConfigPainel('base_url'); ?>/control/thumb.php?src=<?php echo ConfigPainel('site_url'); ?>assets/imagem/album/fotos/<?php echo $fotos['imagem']; ?>&w=400&h=400" alt="<?php echo $fotos['titulo']; ?>" class="img-responsive"> <div class="over text-center"> <strong class="title text-uppercase"><a href="<?php echo ConfigPainel('site_url'); ?>assets/imagem/album/fotos/<?php echo $fotos['imagem']; ?>"> Ampliar </a></strong> <span class="sub-title" style="color:#FFF;"><?php echo $fotos['titulo']; ?></span> </div> </div> fico no aguardo..... 
×

Informação importante

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