Como resolver erro do PagSeguro com PHP: Código de checkout inválido
Até ontem, domingo, meu checkout com o PagSeguro funcionava perfeitamente. Hoje, no entanto, dá a mensagem "Código de checkout inválido.".
A única coisa que alterei, foi minha tabela de compras, onde acrescentei campos novos e buscar novos dados para esta mesma tabela.
Como deu este erro, mudei também meu API-KEY por via das dúvidas.
Vou dar um passo a passo do meu processo:
Para chamar o checkout, tenho:
<script type="text/javascript" src="node_modules/jquery/dist/jquery.js"></script>
<script>
function enviaPagseguro() {
$.post('pagseguro.php', '', function(data) {
$('#code').val(data);
$('#comprar').submit();
})
}
</script>
No inicio de meu formulário de checkout que o chama em um botão no final:
<button onclick="enviaPagseguro()" class="btn btn-primary" role="button">Comprar</button>
</div>
<form id="comprar" action="https://sandbox.pagseguro.uol.com.br/v2/checkout/payment.html" method="post" onsubmit="PagSeguroLightbox(this { success : function(transactionCode) { alert('success - ' + transactionCode);
document.write('<b>Estamos processando o seu pedido.</b><br>');
document.write('<b>Seu código de transação é:</b> ' + transactionCode);
},
abort : function() {
alert('abort');
document.write('<b>Você não concluiu a sua compra</b>');
}
}); return false;">
<input type="hidden" name="code" id="code" value="" />
</form>
<script type="text/javascript" src="https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.lightbox.js">
</script>
Este PagSeguro.php é onde salvo os dados do pedido do checkout em "compras" e faço a chamada ao Pagseguro:
<?php
session_start();
require 'conexao.php';
echo '<script>alert("chamou o pagseguro PHP.")</script>';
if(!$_SESSION['fantasia']):
echo '<script> window.location="login.php" </script>';
endif;
$cod_fornecedor = $_SESSION['cod_fornecedor'];
$fantasia = $_SESSION['fantasia'];
$email = $_SESSION['email'];
$logradouro = $_SESSION['logradourro'];
$numero = $_SESSION['numero'];
$cep = $_SESSION['cep'];
$complemento = $_SESSION['complemento'];
$bairro = $_SESSION['bairro'];
$cidade = $_SESSION['cidade'];
$cpf = $_SESSION['CPF'];
$name_plano = $_SESSION['name'];
$preco = $_SESSION['price'];
$celular = $_SESSION['celular'];
$creditos = $_SESSION['qty_credit'];
$status = '1';
$meio_pgt = 'PagSeguro';
$idplans = $_SESSION['idplans'];
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$inserir = $pdo->prepare("INSERT INTO compras (cod_fornecedor, fantasia, email, cpf, cep, logradouro, numero, complemenyo, bairro, cidade_estado, plano, valor, celular, qtd_credito, status, meio_pagamento) VALUES ('$cod_fornecedor', '$fantasia', '$email', '$cpf', '$cep', '$logradouro', '$numero', '$complemento', '$bairro', '$cidade', '$name_plano', '$preco', '$celular', '$creditos', '$status', '$meio_pgt')");
$inserir->execute();
$idpedido = $pdo->lastInsertId();
if($inserir):
$data['token'] ='MEU_TOKEN';
$data['email'] = 'MEU_EMAIL';
$data['currency'] = 'BRL';
$data['itemId1'] = '1';
$data['itemQuantity1'] = '1';
$data['itemDescription1'] = $name_plano;
$data['itemAmount1'] = $preco;
$data['reference'] = $idpedido;
$url = 'https://ws.sandbox.pagseguro.uol.com.br/v2/checkout';
$data = http_build_query($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);
echo $xml -> code;
else:
echo '<script>alert("Nada Pronto.")</script>';
endif;
?>
Não consigo entender o que está errado, uma vez que funciona perfeito, até ontem.
E neste último, ele insere todos os dados corretamente, só quando chamo o PagSeguro com $data não vai mais...
Olhem pela URL, conforme a documentação(A documentação é esta: [https://dev.pagseguro.uol.com.br/documentacao/pagamento-online/pagamentos/pagamento-padrao](https://dev.pagseguro.uol.com.br/documentacao/pagamento-online/pagamentos/pagamento-padrao)), o resultado:
[/applications/core/interface/imageproxy/imageproxy.php?img=https://i.stack.imgur.com/DOSCg.png&key=01872de00dbff3d04a277f1b1c68c5f9e17e8867ff3c86e703515b8003769abe" />](https://i.stack.imgur.com/DOSCg.png)Discussão (1)
Carregando comentários...