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/alexwarscodee 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

 

Clique para assistir

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

  1. 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

  2. Marcelo Alves

    habilitei o erro.

    Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/loja/public_html/pagseguro.php on line 28

  3. 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.

    • 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!

  4. 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?

  5. 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!

    • 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.

  6. 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.

    • 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.

  7. 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!

  8. 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.

  9. 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.

    • 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.

  10. 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

    • 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.

  11. 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

    • 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.

  12. 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

    • 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.

  13. 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

  14. 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

  15. 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

    • 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.

  16. 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!

    • 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. 🙂

  17. 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.

  18. 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 =(

  19. 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

    • 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.

  20. 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.

  21. 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.

  22. 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?

    • 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.

  23. 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!

  24. 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.

  25. 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.

  26. 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?

  27. 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.

  28. 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?

    • 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.

  29. 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

    • 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.

  30. 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!

  31. 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??

  32. 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

    • 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.

  33. 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?

    • 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.

  34. 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!

    • 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.

  35. 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

    • 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

  36. 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 ?

  37. 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 ???

  38. 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!!!!!!

    • 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;
      }

  39. 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?

  40. 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?

  41. 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.

  42. 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

  43. 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.

  44. 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

  45. 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.

  46. 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!

Deixe uma resposta para Erilton Cancelar

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *