Jump to content
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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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. 

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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']."'";

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Fábio BN
      Olá.

      Tenho um POST que funciona em todos navegadores de PC, menos em Iphone e num navegador padrão que vem Android, onde será que errei?
       
      <script type="text/javascript" src="../../js/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="../../js/jquery.mask.min.js"></script> <script type="text/javascript" src="../../js/bootstrap.min.js"></script> <script> <script> function enviaPagseguro(){ $.post("pedido_pag_seguro.php",'',function(data){ $('#code').val(data); $('#comprar').submit(); }) } </script> <form id="comprar" action="https://pagseguro.uol.com.br/checkout/v2/payment.html" method="post" onsubmit="PagSeguroLightbox(this); return false;"> <input type="hidden" name="code" id="code" value="" /> <input type="hidden" name="pedido" id="pedido" value="<?php echo $tudo1['codigo_user']; ?>" /> <?php $_SESSION['user_comprador'] = $tudo1['codigo_user_temp']; ?> <?php $_SESSION['valor_pedido'] = number_format($total_geral, 2, ',', '.'); ?> <input type="hidden" name="valor_pedido" id="valor_pedido" value="<?php echo number_format($total_geral, 2, ',', '.'); ?>" /> <div name="submit" align="center" onclick="enviaPagseguro()" class="pag_seguro"> <div align="center"><img src="../../imagens/loja_virtual/boleto_grande.gif" class="img-responsive padding_bottom5"></div> <div align="center"><img src="../../imagens/loja_virtual/logos_pag_seguro.gif" class="img-responsive"></div> </div> </form> <script type="text/javascript" src="https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.lightbox.js"></script> Obrigado!
    • By fabiodurgante
      ola tenho o lightbpox na pagina funcionando tudo OK quando clico no link ele abre lightbox, agora quero abrir 1 vez automaticamente quando carrega o site, abro o site ele abre o lightbox como posso fazer ???
       
      para abrir lightbox com link assim
       <a class="example-image-link"href="teste.jpg" data-lightbox="example-1">
           <img class="example-image" src="teste1.jpg" width="90px" height="100px">
                                  </a>
       
      eu clico na imagem teste1,jg ele abre lightbox toda tela grande teste.jpg
      abrir automaticamente o teste.jpg quando abrir o site como faco ?????
    • By shofra7
      Oi pessoal tudo bem? Estou tentando montar um site para doações e acabei escolhendo o PagSeguro pois achei que seria uma boa opção. Ja criei um site usando o wix e coloquei o código HTTPS que o Pagseguro gera criando o botão de doação, porem quando vou utilizar-lo sempre aparece a mesma mensagem; " Sua sessão expirou.". Alguém ja passou por isso? Sou iniciante e não tenho ideia o que posso fazer então qualquer ajuda seria muito agradecida. Obrigado
       
       
    • By dougfanto
      Olá pessoal, tenho um sistema em PHP de vendas, nele uso o PagSeguro como meio de pagamento, porém não consigo pensar em como captar a comissão de uma venda, tipo quando uma pessoa comprar enviar parte do valor para o vendedor e parte para mim.
      Pensei em mandar tudo para mim e transferir a parte do vendedor, mas não sei se é a melhor
      Gostaria de ideias de qual a melhor maneira de fazer isso.
    • By RodrigoWD3
      Pessoal boa tarde , estou com uma duvida gostaria que me ajudassem, tenho uma pagina teste no wp usando o WooCommercer ja configurei o token tudo certo instalei o plugin, o que eu queria fazer era apos a confirmação de pagamento o Wordpress enviasse um e-mail automático para quem comprou com os dados de acesso ao sistema como faço isso ? onde eu configuro o e-mail automático para o cliente apos status esta em pago .. obrigado 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.