Como integrar a API do Pagseguro com Lightbox em PHP
API do Pagseguro de forma simples com Lightbox
Olá Pessoal, hoje vamos ver passo a passo como fazer uma requisição a API de Pagamentos do Pagseguro e direcionar o usuário para o Fluxo de Pagamentos com janela Lightbox.
Não vamos criar nenhuma conexão ou trazer produtos do banco de dados, pois o objetivo deste post é mostrar de forma bem direta como trabalhar com a API do Pagseguro.
Criei uma página HTML bem simples, contendo o nome de um produto e um valor só para usarmos como exemplo para integrar a API do Pagseguro.
Inicialmente inserimos na nossa página um botão, gerado pelo próprio Pagseguro, apenas para comparar seu funcionamento com a API. E já me adianto em dizer que usaremos o código do botão no final do vídeo para implementarmos a Lightbox para pagamento.
Espero que goste do vídeo. Deixe seu like e compartilha com seus amigos, eles também podem estar precisando de ajuda com o Desenvolvimento Web 🙂
Então…
curte, compartilha, deixa um comentário, enfim, participe e deixe a sua opinião.
Depois, acessa o Facebook, http://www.facebook.com/alexwarscode, e deixa seu like na Fanpage.
Tem bastante novidades por lá também.
Vou deixar, no final da página, logo depois do vídeo, o código da requisição à API do Pagseguro e os links da Documentação Completa.
Até mais e bons estudos.
[VÍDEO] Como integrar a API do Pagseguro com Lightbox em PHP
API do Pagseguro – Documentação Completa:
https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-pagamentos.html
Código Completo na Warsplay:
https://warsplay.com/video/NDY2NjU
Marcelo Alves
Alex boa noite, estou testando no meu ambiente agora e não sei o que acontece, mais não funciona, estou usando PHP 7, retorna o erro
http://localhost/loja/controllers/pagseguro.php Failed to load resource: the server responded with a status of 500 (Internal Server Error), para não ter duvidas, copiei o codigo que vc disponibilizou.
abraço
Rafael keruba
Alex parabéns pelo conteúdo e pelo projeto de auxiliar outros desenvolvedores.
Sucesso!
Um grande abraço
Rafael keruba
Marcelo Alves
habilitei o erro.
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/loja/public_html/pagseguro.php on line 28
Marcelo Alves
Falta de atenção minha, agora funcionou.
Gilberto Ribeiro Pontes
Alex, Estou precisando de sua ajuda. Implementei teu código mas o PagSeguro está retornando o erro “Código de checkout inválido”. Você saberia me dizer por que isto acontece? Obrigado.
Alex
Olá Gilberto, eu inseri no post um código para verificação de erros. Dá um olhada lá, quem sabe te ajuda. 🙂
Eduardo Rangel dos Santos
Descobri o problema, era porque eu não tinha incluso na minha galeria JS o arquivo jquery-2.1.3.min.js.
Dava o seguinte erro: “Uncaught ReferenceError: $ is not defined?”.
Eu baixei esse arquivo “https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js” e chamei na minha página assim “”, funcionou na hora!!
Acredito que seja válido você colocar uma observação no seu site, vai ajudar muita gente. Parabén pelo tutorial, muito simples e prático!
Lucas Peixoto Rodrigues
Oi, os valores ficam sempre fixos como faco para alterar o preco dinamicamente?
Alex
Oi Lucas, aí você deve trazer as informação dos produtos via banco de dados, da sua tabela de produtos por exemplo.
Zorr
Oi Alex, excelente tutorial, funcionou perfeitamente, parabéns. Uma dúvida, como fazer para receber o código da transação e mostrar o status para o cliente após o pagamento?
Alex
Obrigado. Para receber as notificações da transação, é necessário implementar a API de Notificações do PagSeguro
Anderson
Boa noite amigo…
Obrigado por compartilhar conhecimento!
Alex… estou nesse momento implantando o que você ensina no vídeo.
Me surgiu algumas dúvidas, se puderes me ajudar eu agradeço muito!
No produto que estou vendendo há um formulário para o cadastro do cliente, eu gostaria de cadastrar o cliente em meu banco e depois envia-lo para o pagseguro, até ai eu acho que consigo tranquilo (mas toda dica é bem vinda), o que eu tenho dúvidas é se tem como evitar que o cliente precise novamente dar seus dados lá no pagseguro.
Tem?
Obrigado!
Alex
Olá Anderson, Obrigado pelo comentário. É bem fácil passar os dados para o pagseguro. Quando fizer a chamada à API de Pagamentos, é só passar as informações do cliente também que o ‘code” é gerado com esses dados. Dá uma olhada no Pagseguro para ver o id para esses campos.
Anderson
Encontrei Alex… muito obrigado cara!
vlw mesmo!!!
Murillo Lima
Como faço para adicionar os dados da compra dinamicamente, tipo! la ta preenchido direto na variável, queria pegar os dados do produto.
Murilo Santana
Bom dia Amigo.
Estou com um problema com a processa.php . No meu site eu preciso enviar quais produtos o cliente deseja comprar , faço isso através de um checkbox. Passo ele como array para a processa. Portanto isto não esta funcionando.
Caso eu coloque um produto fixo , ele até passa.
Este é o link : http://www.activadesign.com.br/clientes/guardamundo/detalhe-bolsa?id=6
No caso , eu selecionaria quais desejo comprar , e na processa viria os dados do banco.
Alex
Oi Murilo, pelos que entendi, você vai ter que fazer um array com os produtos selecionados, e então com um for, ou while, adicionar cada produto selecionado à lista de parâmetros que vai passar ao pagseguro para gerar o código de checkout, como “itemDescription1”, “itemDescription2” e assim por diante.. criando também os parâmetros para preço e quantidade nem.
Erilton
Boa Alex! Parabéns!
Direto ao ponto com eficiência!
Dica… como parte 2, se possível, faça com api de notificações pra ficar completo!
Alex
Opa.. Obrigado, pode deixar.. logo vem novos conteúdos sobre PagSeguro
Luiz Lim
Alex, parabéns pelo seu trabalho, muito bom!
Fabiano Marques
O botão do formulário html não funciona fora do e quando funciona (dentro de ) o endereço fica sem o “code” (https://pagseguro.uol.com.br/checkout/v2/lightbox.html?layout=embedded&checkoutListener=javascript&code=) o arquivo .php está ok. 🙁
Alex
Estranho não funcionar Fabiano. O code vem como resposta da requisição à API.
André
Muito obrigado, Alex, pela dica.
No exemplo final do vídeo, a parte do Lightbox, é possível alterar quantidade e o valor total, e passar essas duas informações para a Lightbox que será exibida?
No seu exemplo é sempre de um a um.
Desde já, te agradeço mais um vez.
Alex
Oi André. Você pode passar mais produtos com valores e quantidades diferentes. Para passar mais produtos, é só criar os parâmetros itemId2…3…4 e assim por diante, e fazer o mesmo com a Descrição, Quantidade e Valor.https://alexrosa.net/wp-admin/edit-comments.php?comment_status=approved#comments-form
Francisco Júnior
Olá Alex, muito obrigado pelo seu tutorial, Está ótimo, me ajudou bastante.
Pra finalizar gostaria de lhe pedir ajuda em uma dúvida que estou tendo.
Partindo do código que você deu de exemplo, gostaria de saber se é possível salvar o “transaction_id” que é gerado na última tela do lightbox em alguma variável java script ou PHP para que depois eu possa usa-lo para vincular ao número de venda no meu banco de dados.
Depois de ler a documentação do pagseguro, eu vi que existe uma chamada callback “sucess” e “abort” que é executada após o usuário fechar o lightbox.
que seria essa.
PagSeguroLightbox({
code: ‘1F69A3CF7878ED9994B3DF9DDC706796’
}, {
success : function(transactionCode) {
alert(“success – ” + transactionCode);
},
abort : function() {
alert(“abort”);
}
});
Não sei trabalhar com Javascript muito bem, e não estou entendo como conseguiria usar esse parte do código em conjunto com o seu código, você tem alguma ideia de como posso usar isso para recuperar o “trasaction_id” ?
Desde já muito Obrigado Alex.
Alex
Oi Franciso, valew pelo comentário. Muito bacana sua ideia.. se aprofundando na API.. e já usando o retorno na requisição. 🙂 Para manipular o transaction_id o ideal seria implementar a API de notificações.. aí você teria controle total da do pagamento.
Dyego
Copiei o código como na pagina, mas da o erro
Fatal error: Call to undefined function curl_init() in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\Siteaula\pagseguro.php on line 15
Alex
Oi Dyego, Será preciso adicionar o php_curl.dll ao php.ini. Verifique se no seu arquivo já existe a linha “extension=php_curl.dll”. Se não tiver é sé adicionar e reiniciar o apache.
Felipe Lopes
como faço para trazer os dados do meu banco de dados para os dados do produto?
uso foreach? passo para o arquivo pagseguro.php ou no proprio arquivo pagseguro eu ja faço o foreach?
Help me, please
Alex
Oi Felipe, traga os dados do banco eu outro arquivo ou no próprio pagseguro.php, então é só montar o array com os campos itemId1, itemId2, 3, 4.. etc. O mesmo com os outros campos itemDescription1… etc.
Luiz Antonio Duarte Estevam Franco
Excelente tutorial mas eu queria saber duas situações
A)tem como colocar a variavel ‘data’ do javascript direto ou concatenada no form action pois ai daria para usar a jquery do light box do pagseguro, mostrando a imagem do botão de compras padrão do pagseguro
algo assim
‘https://sandbox.pagseguro.uol.com.br/v2/checkout/payment.html?code=’+data;
mas no post action
para pode usar o proprio script do pagseguro
ript type=”text/javascript” src=”https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.lightbox.js”>
ou caso não de deste jeito como poderiamos mudar o Button da tag Button para uma Imagem pois ai poderiamos personalizar com o button de imagem do pagseguro
Caso possa postar aqui como seria a maneira correta de se fazer isto desde já agradeço
Alex
Oi Luiz, Muito boa sua pergunta. O botão, você pode personalizar como quiser, até usar o original do pagseguro, é só chamar o post quando clicar.
O array data[] deve ser enviado via curl para que você possa ler o retorno do xml e aí sim obter o code para passar para a lightbox.
Luiz Antonio Duarte Estevam Franco
fui mals não vi até o fim do video . mas a img no button tá valendo…mesmo assim excelente topico parabéns
Luiz Antonio
Olá Alex Boa noite
primeiramente parabens pelo tutorial, segui o seu video passo a passo apenas mudando a url para sandbox do arquivo pagseguro.php para eu fazer os testes em sandbox como abaixo
code;
?>
só que eu não sei por que razão ocorreram erros em algumas linhas da pagina desta função no lugar de retornar o xml – lhe enviei um email com a mesma duvida e com a imagem do erro em anexo – caso possa me ajudar a resolver o que esta ocorrendo já que o código tá praticamente igual ao da sua funcao pagseguro.php apenas mudando-se a url para sandbox
Luiz Antonio Duarte Estevam Franco
Olá Alex – eu entrei na comunidade do pagseguro porque pelo email que te enviei ele não está retornando o code da transação e ao que me parece ele dá um erro – na Comunidade o pessoal do pagseguro me disseram que os scripts teriam que serem adaptados para a nova API do PAGSEGURO LIGHTBOX para funcionarem, como sou novo e leigo gostaria se possivel, já que achei o seu tutorial excelente se pudesse postar aqui e se der até em um novo video como ficaria este código php que vc nos passou, contendo o curl e o xml para a nova API em light box
Fico no aguardo e se possivel me orientar como adapto o seu código para a nova API lightbox – obrigado
Carlos Freire
Oi Luiz, acabei de fazer montar minha integração php usando este tutorial e em sandbox sem ter que adaptar script algum – apenas acrescentando “.sandbox” nos endereços de checkout, de pagamento e do javascript src do ligthbox, conforme está explicado em https://dev.pagseguro.uol.com.br/documentacao/pagamentos/pagamento-lightbox/api-de-pagamentos-lightbox.
No mais, tive alguns problemas por esquecer de enviar alguma variável no checkout ou enviar token de produção no ambiente sandbox (ou vice-versa) e por aí vai.
No caso das variáveis não enviadas, me ajudou muito fazer, na página pagseguro.php (envio das variáveis e retorno do code), um var_dump($xml) -> havendo erro na geração do code, ele é apontado no dump.
Renato Romano
Boa Noite Alex! Parabéns e pelo post, ficou muito bem explicado.
Alex, Eu li os comentários à cima e vi que tem algumas pessoas com a minha mesma dúvida,
E minha duvida é;
Como colocar as variáveis nos ” $data[‘itemAmount1’] = ‘0.01’; ” onde está ‘0,01’ por minha variável,
tentei de algumas formas mas o pgseguro retorna erro, não chama nada do banco no ‘ pgseguro.php ‘ …
tudo que coloco no pgseguro.php retorna erro ao enviar o formulário.
Então como que vou chamar os dados do banco para os campos ” $data[‘itemAmount1’] = ‘0.01’; ” ?
Tentei chamar do carrinho mas não vai tbm, retorna erro ao enviar ao pgseguro.
*Não manjo muito de API.
Antecipadamento, Obrigado, Deus Abençoe!
Alex
Olá Renato, é possível substituir o valor e qualquer outro campo por uma variável, apenas mantenha as aspas, e respeite a pontuação e o formato dos campos. 🙂
Renato Romano
Segue meu carrinho
<?php
header('Content-Type: text/html; charset=iso-8859-1');
error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
error_reporting(0);
ini_set(“display_errors”, 0 );
if(count($_SESSION['carrinho']) == 0){
echo '’;
echo ‘Não há produto no carrinho‘;
}else{
require(“conexao.php”);
$total = 0;
foreach($_SESSION[‘carrinho’] as $id => $qtd){
$sql = “SELECT * FROM produtos WHERE id= ‘$id'”;
$qr = mysqli_query($conn, $sql) or die(mysql_error());
$ln = mysqli_fetch_assoc($qr);
$imagem = $ln[‘imagem’];
$nome = $ln[‘nome’];
$preco = $ln[‘preco’];
$sub = $ln[‘preco’] * $qtd;
$total += $ln[‘preco’] * $qtd . ”;
echo ‘
‘.$nome.’
R$ ‘.number_format($preco, 2, ‘,’,’.’).’
R$ ‘.number_format($sub, 2, ‘,’,’.’).’
Excluir
‘;
}
$total = number_format($total, 2, ‘,’,’.’);
$_SESSION[‘valortotal’] = number_format($total, 2, ‘,’,’.’);
echo ‘
Total a Pagar
R$ ‘.$total.’
‘;
print ”;
print ‘PAGAR AGORA ‘;//PAG SEGURO BOTÃO
}
?>
Queria chamar o $nome, $qtd e $valor para o pgseguro.php, se coloco alguma coisa, mesmo que seja um select do banco no pgseguro.php já da erro ao enviar o formulário ao pgseguro. Só funicona do jeito que vc passou, direto com os dados.
Renato Roamno
Boa tarde! Alex, vc pode me ajudar por favor?
olhá meu códio:
code;
}
?>
Olhá só…. o meu botão *PAGAR AGORA* da página carrinho esta fazendo o seguinte… ele sobe os dados para o banco e ao mesmo tempo envia a solicitação para o PagSeguro, e retorna a msg que os campos não foram preenchidos… será que é este o problema, 2 funções no mesmo botão, não da tempo de gravar no banco e retornar os dados para o PagSeguro?
Ou o código de chamada está ai acima está errado?
PorFavor de uma ajuda, estou quase desistindo =(
Renato Romano
Boa Tarde Alex,
Consegui da seguinte forma “gambiarra” que o pagseguro pegasse as informações do carrinho, copiei o código do carrinho inteiro apagando os print, copiei encima do código do pagseguro.php e depois só coloquei as váriaveis nos devidos lugares.
Obs: a variável “$Toatal” que é o total da compra do carrinho, se por ela o pagseguro não aceita, ele só aceita a variável do preço do item, pq o pagseguro faz a conta de quantidade.
Mas agora surgiu outra dúvida, Como que eu faço… tipo, eu comprei um produto, esta tudo bem até aí, mas aí eu quero comprar outro produto diferente, neste modo ao vc adicionar outro produto no carrinho a hora que vc clica em comprar o pagseguro só lê a última compra, como que faz para ele ler todas compras, se eu quiser comprar 2,3,4,5 produtos diferentes de uma vez?
Abçs, Obrigadooo
Alex
Oi Renato, você pode criar seu próprio carrinho e gerenciar isso dentro do seu site, e na etapa do pagamento você passa os dados para o pagseguro, como um pedido fechado, contendo só o valor total. É mais fácil, e o gerenciamento do pedido fica por sua conta.
jeziel
boa noite alex como criar um carrinho usando esse mesmo código teria alguma aula
Alex
É perfeitamente possível, você passará os valores do pagseguro, vindo dos resultados do seu carrinho de compras.
Jonathan Willian
Olá Alex muito bom seus videos cara, já sou teu fan. Só queria saber o seguinte, se eu foce utilizar esses códigos com o SandBox antes de aplicação entrar em produção, oque eu teria que modificar, pois mesmo eu alterando o token, url e email, seguindo exatamente ao que me é informado na pagina do SandBox ainda continua dando erro. No Lightbox aparece a seguinte mensagem: Código de checkout inválido.
Jonathan Willian
Opá consegui corrigir o erro, apenas falta de atenção, tinha que mudar a ‘action’ no script da lightbox também, agora deu certo. Só estou tentando descobrir como pegar os retornos após o pagamento efetuado.
Leo
Aqui esta retornando “Não autorizado”, vc pode me ajudar com isso?
Leo
estou testando na sabdbox
Leo
Era bobeira minha, consegui resolver, muito obrigado.
Agora faz um tutorial de checkout transparente =)
Carlos Freire
Alex, muitíssimo obrigado por este seu tutorial.
Com ele você consegue fazer aquilo que trocentas páginas de ajuda no PagSeguro não conseguem: mostrar como iniciar uma integração.
Depois disto, o resto fica muito, muito fácil.
Parabéns amigo, pode deixar que agora vou no Face curtir seu blog.
Abraços.
Rafael Fonseca
Alex, bom dia!
Muito obrigado pelo video, ajudou muito a integração que estou fazendo, mas gostaria de pedir sua ajuda em uma situação.
Tenho um carrinho de compras, e ao finalizar o pedido é aberto o lightbox para pagamento no pagseguro, até aí tudo ok. No entanto gostaria de redirecionar meu carrinho de compras para gravar o pedido em meu banco de dados, fazendo baixa em estoque e etc, apenas se me retornasse sucesso do lightbox.
Poderia me informar como acrescentar os eventos callback em seu código?
Alex
Olá Rafael, você poderá receber o retorno da transação através da API de notificações, consulte aqui mesmo no blog sobre o tema, gravei um vídeo explicando como utilizar esta API em detalhes.
Samuel Aiala Ferreira
Cara, pra quem tem experiência esse tutorial foi 1 mão na roda.
Com um “tapa” implementei o pagamento via lightbox, parabéns!
Hamzi Jalel Ghazzaoui
Funcionou. ótimo.
Marcio
Olá Alex,
Parabéns pelos videos, me ajudou muito!
Somente um detalhe não consegui testar, pelo menos em ambiente de SANDBox, que é o frete. Defini na minha conta no pagseguro que será frete por peso e naquela url estou passando também o parâmetro itemWeight, porem não vejo o calculo do frete ao abrir o Lightbox (fui até gerar o boleto por exemplo). Sabes me dizer se é assim mesmo neste ambiente ou será que estou fazendo algo errado?
Obrigado e mais uma vez parabéns pela iniciativa!
Marcio.
Elvis Silva
No meu caso, quando clico no botão, abre o lightbox, aparece a logo do pagseguro e o icone loading, e não sai disso. Sabe o que pode estar acontecendo?
PS: configurei o token, email e o botão certinho.
Ronaldo Neves
Valeu pelo tutorial, estou tendo problema apenas com a acentuação, quando passo o produto eu defino o texto como Inscrição, e quando abre no PagSeguro aparece InscriÂÂo, mesmo tento definido o charset da minha página como UTF-8, pode me ajduar?
Bruno Karpischek
Boa noite Alex,
eu estou usando exatamente o mesmo codigo disponibilizado por voce, logico que troquei o token e email.
porem na hora de clicar no botão para aparecer o alert com o o code da transação do pagseguro não acontece nada.
function enviaPagseguro(){
$.post(‘pagseguro.php’,”,function(data){
alert(data);
})
}
para teste eu troquei a funcition so para retornar o alert(“retorno teste”); e funcionou. consegue me dizer algum motivo de não estar funcionando ? estou fazendo o passo a passo junto com o video porem nem assim conseguir retornar. se eu entrar no diretamente na pagina pagseguro.php vai ser exibido o code da transação. porem pela pagina o botao nao está retornando.
Alex
Eu acredito que o seu post não está ocorrendo, verifique se inclui a lib jquery.
Alessandro dos Santos
Eu estou com o mesmo problema, como resolvelo. É necessario baixar a biblioteca, eu tambem uso o dream weaver
Gabriel Filippi
Olá funcionou perfeitamente, porém queria adicionar o valor do frete a minha regra de taxa de frete é a seguinte:
1 – PRODUTO X R$10,00
2 – PRODUTO Y R$5,00
FRETE: 27,50
VALOR TOTAL DO PEDIDO: R$45,50
como adiciono o valor do frete, sendo que o valor é um valor fixo por pedido não por produto?
Alex
Olá, na requisição à API existe um campo para passar o valor do frete, e este valor é único devendo ser passado apenas uma vez e não por produto.
Guilherme criação de site
Muito bom eu estava desenvolvendo um site e estava com um problema na criação desse site e graças a você eu consegui concluir a criacao de site
Alex
Obrigado pelo feedback. 🙂
Cainan Alves
Olá Alex,
Ótimo tutorial, já usei algumas vezes.
Como eu faço para liberar para o cliente poder escolher a quantidade dentro da ligthbox?
Obrigado
Alex
O Cliente não pode escolher a quantidade na lightbox, neste caso você precisa criar isso na sua aplicação e então passar os valores para o pagaseguro.
Edson
Como faço no caso, caso eu queira um select para selecionar o plano, para depois clicar no botão do pagseguro?
Alex
Você precisara criar uma tabela de planos com valores, e então usar o valor vindo do banco de dados.
Fabio
Quem olha para as dezenas de páginas de documentação no PagSeguro fica até assustado, mas felizmente achei seu blog! Parabéns amigo pela forma didática com a qual explicou e desmistificou esse “bicho de 7 cabeças”! Obrigado!
Alex
Obrigado 🙂
Jonatan
E ae Alex! Eu não estou conseguindo fazer funcionar.. quando clico no botão, abre a lightbox mas não carrega ela, só fica processando com ela aberta.. poderia me ajuda??
Alex
Olá Jonatan, algumas vezes o servidor sandbox do pagseguro fica bem lento, verifique se em produção funciona normalmente.
Luiz Paulo Chiodi
Boa tarde, Alex.
Antes de tudo, parabéns!! Me ajudou muito. Mas estou enfrentando um problema, quando coloco no form as variáveis item,descrição, valor e quantidade, clicando envio para pagseguro.php recupero o post destes valores salvando em numa variável e colocando essa variável no “data[]”. A janela aparece mas fica em looping e não sai. Com certeza estou passando errado mas não sei como mudar isso.
Se puder, dá uma luz.
Muito obrigado
Luiz Paulo
Alex
Olá Luiz, verifique o formato dos valores que está passando, visto que o preço deve ser separado por ponto “.” e também você pode testar isto em produção, algumas vezes o servidor sandbox do pagseguro fica bem lento.
Luiz Paulo Chiodi
Alex, só completando.
Consegui passar as variáveis para a API, mas sem lightbox, mandando para outra janela com a função (window.open) no ajax, alias troquei para uma rotina de ajax que uso e ai funcionou como falei, sem lightbox. Será que tenho que fazer algo diferente para passar as variáveis?
Alex
Acredito que o problema não está no envio da requisição ao pagseguro para obter o “code” para o checkout, e sim na chamada à lightbox, verifique sua versão de jquery, e faça o teste da lightbox em produção.
Luiz Paulo Chiodi
Bom dia, Alex.
Consegui fazer com dois forms um enviando os dados e o seu de retorno.
abraço
André
Boa tarde Alex.
Estou usando seu código, está funcionando e estou recebendo pagamentos, isso quando o usuário usa um computador, quando usa um celular não tem jeito de funcionar. Abre uma página do UOL com a seguinte mensagem:
“Ops! Houve um problema e não foi possível exibir a página
Nossa equipe acabou de receber um alerta avisando sobre o ocorrido. Por favor, tente novamente mais tarde.”
Pelo que achei em alguns fóruns lightbox não funciona para celular, usando este seu código como eu poderia chamar o pagamento pela forma padrão sem usar o lightbox, quando o usuário estiver usando um celular?
Aguardo tua ajuda e parabéns pelo blog!
Alex
Olá André,
Obrigado pelo seu comentário.
Em dispositivos mobile a lightbox do pagseguro exibe em nova janela automaticamente. Verifique uma implementação crua da api para testes.
Luiz Paulo Chiodi
Alex boa tarde.
Talvez vc esteja muito atarefado, mas vou tentar insistir novamente!
Como faço para numerar isso? A onde coloco a variável $i para contar
$i=1;
while($mostra = $result->FETCH(PDO::FETCH_OBJ)){
$data[‘itemAmount1’] = $preco_item;
$data[‘itemQuantity1’] = $qtd;
$data[‘itemDescription1’] = utf8_decode($produto);
$i++;
}
Tenho um carrinho com vários produtos e se mantenho desta forma vai só um produto, já tentei de várias formas e não tive sucesso!!!
Por favor, veja um tenpinho!!!!
Abraço
Alex
Olá Luiz, em cada laço do seu while incremente o nome do parâmetro, desta forma:
$i=1;
while($mostra = $result->FETCH(PDO::FETCH_OBJ)){
$data[‘itemAmount’.$i] = $preco_item;
$data[‘itemQuantity’.$i] = $qtd;
$data[‘itemDescription’.$i] = utf8_decode($produto);
$i++;
}
Abraço
Luan
Criei o botão para pagseguro tudo certo, mas quando eu coloco o sandbox ele não carrega…
Sabe o que pode ser?
Alex
Olá Luan, verifique as urls, devem estar todas apontando para o ambiente sandbox, inclusive o caminho da lib js.
Valter Simão
Amigo Alex, bom dia!
Estou precisando fazer a integração do Split da PagSeguro, você faz ou sabe informar alguém?
Alex
Fala Valter, pode enviar um e-mail para [email protected]
Alessandro dos Santos
Boa noite Alex Rosa, o seu video foi o melhor tutorial do YOUTUBE, porem eu copiei seu cogido e criei as paginas, fiz as substituições. Em fim, o meu botao comprar nao esta funcionando, a pagina do pagseguro esta funcionando, mas ao clikar em comprar ele nao faz nada, nenhuma ação, vc ou alguem da pagina sabe resolver o meu problema ?
Alex
Olá Alessandro, verifica se a lib JQuery está inserida no seu arquivo.
Alessandro dos Santos
Boa noite Alex Rosa, o seu video foi o melhor tutorial do YOUTUBE, porem eu copiei seu cogido e criei as paginas, fiz as substituições. Em fim, o meu botao comprar nao esta funcionando, a pagina do pagseguro esta funcionando, mas ao clikar em comprar ele nao faz nada, nenhuma ação, vc ou alguem da pagina sabe resolver o meu problema ???
Alex
Olá Alessandro, verifica se a lib jquery está inserida no seu arquivo.
Alessandro dos Santos
Este método nao esta funcionando mais, acho que foi uma atualização na sintaxe, acho que é necessario atualizar o codigo
Luiz Paulo Chiodi
Bom dia, Alex.
Desculpe te incomodar novamente.
Os testes em localhost estão funcionando perfeitamente, porem quando subo para a Locaweb, fica dando esse erro:
Trying to get property of non-object. e justamente na linha “echo $xml -> code;” coloquei var_dump no $xml e dá bolean false.
Segue o código.
prepare( $query )or die( ‘Falha na instrução SQL: ‘ . mysql_error() );
$result->execute();
$total = 0;
$contar = $result->rowCount();
//////////////////////////////////////////////////////////////////////////////////////////////
//var_dump($result);
//////////////////////////////////////////////////////////////////////////////////////////////
/*SANDBOX*/
$data[‘token’] =’xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’;
$data[‘email’] = ‘[email protected]’;
$data[‘currency’] = ‘BRL’;
//////////////////////////////////////////////////////////////////////////////////////////////
/*PAGSEGURO
$data[‘token’] =’A4E757CE747441308F85D5CA9E125165′;
$data[‘email’] = ‘[email protected]’;
$data[‘currency’] = ‘BRL’;
*/
///////////////////////////LOOPING DOS ITENS DE PRODUTOS//////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
$i=1;
while($mostra = $result->FETCH(PDO::FETCH_OBJ)){
$data[‘itemId’.$i] = $idPed;
$idCliente = $mostra->idCliente;
$produto=$mostra->nome;
$qtd=$mostra->qtdPedido;
$preco_item = $mostra->preco_item;
$idNumero = $mostra->idNumero;
$idCor = $mostra->idCor;
$frete=$mostra->frete;
//————————————————————-//
//var_dump($mostra);
$subt = $preco_item * $qtd;
$total += $preco_item * $qtd;
$data[‘itemAmount’.$i] = $preco_item;
$data[‘itemQuantity’.$i] = $qtd;
$data[‘itemDescription’.$i] = utf8_decode($produto).’ ‘.$idNumero.’ ‘.$idCor;
//echo $data[‘itemAmount’.$i].’,’.$data[‘itemQuantity’.$i].’,’.$data[‘itemDescription’.$i].”;
//////////////////////////////////////////////////////////////////////////////////////////////
$i++;
}
$data[‘reference’] = $idPed;
$data[‘shippingCost’] = $frete;
//echo $data[‘reference’];
//////////////////////////////////////////////////////////////////////////////////////////////
//$url = ‘https://ws.pagseguro.uol.com.br/v2/checkout’;
$url = ‘https://ws.sandbox.pagseguro.uol.com.br/v2/checkout’;
$data = http_build_query($data);
var_dump($data);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$xml= curl_exec($curl);
curl_close($curl);
$xml= simplexml_load_string($xml);
var_dump($xml);
echo $xml -> code;
?>
Veja se vc consegue me ajudar mais uma vez!!! Obrigado!!!!!!
Alex
Olá Luiz, seu código me parece ok, mas o retorno boolean false, significa sem retorno da requisição. Faz um teste puro, sem o array de produtos, ou seja, com apenas um produto inserido manualmente e veja se funciona.. pensei em problema na com a Lib cURL mas provavelmente daria erro 500, se fosse este o problema. De qualquer forma segue um código de erro que pode implementar na função para verificar se algum parâmetro foi passado errado.
if(count($xml -> error) > 0){
$return = ‘dadosInvalidos’.$xml ->error-> message;
echo $return;
exit;
}
Brendon Schinaider
Boa tarde Alex, gostei muito do conteúdo e estou tentando criar uma aplicação junto ao PagSeguro, fiz os passos que você ensinou mas está me gerando um erro . Eu informei o email mas ainda assim eles pedem para informar um email, como consertar esse problema?
Alex
Olá Brendon, não entendi a sua questão.
Brendon Schinaider
Estava faltando o jquerylib, agora funcionou corretamente. Obrigado.
Gabriel Postai
Boa tarde, fiz esse procedimento em localhost e funcionou perfeitamente, porém ao subir para meu servidor o mesmo retorna o erro 500. Pode me ajudar quanto a isso?
Marco Costa
Alex, boa tarde
Parabéns pelo vídeo, ajudou muito na implementação.
Gostaria de saber, se por acaso vc ou alguém aqui passou por um problema parecido com
o meu.
Implementei o lightbox normalmente, efetuei alguns testes, todos ok, e, a partir daí, fui
implementar os callbacks.
No entanto, a partir do momento que alterei a chamada e acrescentei os callbacks, ao invés
de abrir o lightbox, o site é redirecionado diretamente para o checkout fora do lightbox.
Já voltei o código para a versão anterior, limpei cookies, testei com navegadores diferentes,
tentei verificar alguma solução no fórum do pagseguro, mas nada resolve.
Caso vc, ou alguém, tiver alguma dica, agradeço muito.
Victor
Boa tarde, Alex. Sabe me confirmar se o recebimento das notificações funcionam no Sandbox? A transação aparece no log, mas ao trocar a situação, ele não gera uma notificação, fica com a mensagem “Nenhuma notificação enviada.” e no botão reenviar ele diz que não tem para enviar
Jorge
Boa Tarde, Alex!!
Tudo bem??
Então, estou com uma grande dúvida. Vamos lá…
Vamos supor que o cliente finalizou o pagamento e chegou naquela tela final aonde ele pode clicar no botão “voltar a loja ” ou simplesmente fechar o ligthbox. Esses dois casos tem como você mandar o valor do transactionCode para o Banco de Dados.
Mas vamos supor um terceiro caso , aonde o cliente simplesmente fechou a pagina inteira.
Como posso fazer um update nesse caso??
Nesse caso o cliente teria efetuado o pagamento mas não teria nada salvo no meu bd.
Cleoman
Olá Alex.
Existe a possibilidade de criar um script onde o sistema envie um e-mail ao comprador quando o PagSeguro confirmar o pagamento?
Não entendo nada de programação. Se isso é possível, quanto você me cobraria pra desenvolver?
Seria um produto apenas com e-mail incluindo os links para os vídeos e downloads.
Obrigado
Cleoman
VICTOR
olá.
copiei exatamente igual seu código, alterei com os dados da minha conta, quando eu executo o arquivo pagseguro.php ele exibe o código normalmente, mas quando eu executo o index.php e aperto o botão comprar nada acontece.
olivia
gênio. apanhei pa caceta mas consegui fazer esse bicho funcionar com o simplecart.js graças a você 😀
FABRICIO DENIS DE LIMA
Pessoal boa tarde, não recebo erro nenhum mas após abertura do LightBox todo e qualquer email digitado para autenticacao da compra é recusado. Também não tem a opção de comprar sem login.
Alguém saberia o que pode estar ocorrendo?
Grato!
Alex
Olá Fabricio, este pode ser referência à um problema com a sandbox do PagSeguro, tente testar em produção.