I downloaded the official PagSeguro library, PagSeguroLibrary, but they say that with the transparent checkout the whole process is done in the virtual store and all communication with PagSeguro is done via cUrl.
However, this is not what happens because at the end of the file that calls the library we have a redirect to the payment page on the PagSeguro site.
See:
<?php
...
echo "<script>document.location='".$url."'</script>";
?>
All code
<?php
$pedidoCliente = $pedidosClientesDao->pesquisaPedidoCliente ($_GET["idPedidoCliente"]);
$itensPedido = $pedidosDao->pesquisaItensPedido ($pedidoCliente->getIdPedidoCliente());
$cidade = $phpUtil->pesquisaCidade($conexao, $pedidoCliente->getCidade());
$cliente = $clientesDao->pesquisaClienteId($pedidoCliente->getIdCliente());
$ddd= substr($_SESSION["cliente"]["telefoneCliente"],0,2);
$tel= substr($_SESSION["cliente"]["telefoneCliente"],2);
require_once 'PagSeguroLibrary/PagSeguroLibrary.php';
/** INICIO PROCESSO PAGSEGURO */
$paymentrequest = new PagSeguroPaymentRequest();
foreach ($itensPedido as $chave => $item) {
$produtoP = $produtosDao->pesquisaProdutoId($item->getIdProduto());
$tipoP = $phpUtil->produtosTipos($produtoP->getTipo());
$nomeP = $tipoP.", ".$produtosDao->pesquisaNomeProduto($item->getIdProduto());
$data = Array(
'id' => $item->getIdProduto(), // identificador
'description' => $nomeP, // descrição
'quantity' => $item->getQuantidade(), // quantidade
'amount' => number_format($item->getPrecoUnitario(), 2, '.', '')
);
$dataItem = new PagSeguroItem($data);
/* $paymentRequest deve ser um objeto do tipo PagSeguroPaymentRequest */
$paymentrequest->addItem($dataItem);
}
$paymentrequest->setCurrency('BRL');
////////////////q
$paymentrequest->setShippingType(3);
$paymentrequest->setShippingCost(number_format($pedidoCliente->getFrete(), 2, '.', ''));
//Url de redirecionamento
$redirectURL = "http://www.hotplateprensas.com.br/retornoPS.php";
$paymentrequest->setRedirectURL($redirectURL);// Url de retorno
$credentials = PagSeguroConfig::getAccountCredentials();//credenciais do vendedor
//$compra_id = App_Lib_Compras::insert($produto);
$paymentrequest->setReference($pedidoCliente->getIdPedidoCliente());//Referencia;
$paymentrequest->setSender(
$cliente->getNome(), //nome
$cliente->getEmail(), //email
$ddd, //ddd
$tel, //numero
strlen($cliente->getDocumento()) == 11 ? "CPF" : "CNPJ",
$cliente->getDocumento()
);
$paymentrequest->setShippingAddress(
$pedidoCliente->getCep(), //cep
$pedidoCliente->getEndereco(), //rua
$pedidoCliente->getNumero(), //numero
$pedidoCliente->getComplemento(), //complemento
$pedidoCliente->getBairro(), //bairro
$cidade["nome"], //cidade
$pedidoCliente->getEstado(), //estado
"BRASIL" //pais
);
$url = $paymentrequest->register($credentials);
echo "<script>document.location='".$url."'</script>";
?>
On the other hand, using open source without the use of the library, I get the same result.
<?php
$urlAUT = "https://ws.pagseguro.uol.com.br/v2/checkout";
$urlPGTO = "https://pagseguro.uol.com.br/v2/checkout/payment.html";
$ultimoPedido = $_GET["idPedidoCliente"];
$pedidoCliente = $pedidosClientesDao->pesquisaPedidoCliente ($ultimoPedido);
$itensPedido = $pedidosDao->pesquisaItensPedido ($pedidoCliente->getIdPedidoCliente());
$cidade = $phpUtil->pesquisaCidade($conexao, $pedidoCliente->getCidade());
$cliente = $clientesDao->pesquisaClienteId($pedidoCliente->getIdCliente());
$ddd= substr($cliente->getTelefone(),0,2);
$tel= substr($cliente->getTelefone(),2);
$i = 1;
$itensPS = null;
foreach ($itensPedido as $chave => $item) {
$produtoP = $produtosDao->pesquisaProdutoId($item->getIdProduto());
$tipoP = $phpUtil->produtosTipos($produtoP->getTipo());
$nomeP = $tipoP.", ".$produtosDao->pesquisaNomeProduto($item->getIdProduto());
$itensPS["itemId".$i] = $item->getIdProduto();
$itensPS["itemDescription".$i] = $nomeP;
$itensPS["itemAmount".$i] = number_format($item->getPrecoUnitario(), 2, '.', '');
$itensPS["itemQuantity".$i] = $item->getQuantidade();
$i++;
}
$itens = "&";
foreach ($itensPS as $key => $itemPS) :
$itens .= $key."=".$itemPS."&";
endforeach;
$itens = substr ($itens, 0, -1);
$post = "email=".$constantes->getEmailPS();
$post .= "&token=".$constantes->getTokenPS();
$post .= "¤cy=BRL";
$post .= $itens;
$post .= "&reference=".$pedidoCliente->getIdPedidoCliente();
$post .= "&senderName=".$cliente->getNome();
$post .= "&senderAreaCode=".$ddd;
$post .= "&senderPhone=".$tel;
$post .= "&senderEmail=".$cliente->getEmail();
$post .= "&shippingType=3";
$post .= "&shippingCost=".number_format($pedidoCliente->getFrete(), 2, '.', '');
$post .= "&shippingAddressStreet=".$cliente->getEmail();
$post .= "&shippingAddressNumber=".$pedidoCliente->getNumero();
$post .= "&shippingAddressComplement=".$pedidoCliente->getNumero();
$post .= "&shippingAddressDistrict=".$pedidoCliente->getBairro();
$post .= "&shippingAddressPostalCode=".$pedidoCliente->getCep();
$post .= "&shippingAddressCity=".$cidade["nome"];
$post .= "&shippingAddressState=".$pedidoCliente->getEstado();
$post .= "&shippingAddressCountry=BRA";
$post = trim($post);
$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded; charset=UTF-8";
$headers[] = 'Connection: Keep-Alive';
$autenticacao = $phpUtil->recebeXMLHeaders($urlAUT, $headers, $post);
?>
<?php
if( isset($autenticacao->code) ) {
$pedidosClientesDao->gravarToken($pedidoCliente->getIdPedidoCliente(), $autenticacao->code);
$redirectURL = $urlPGTO."?code=".$autenticacao->code;
echo "<script>location.href='".$redirectURL."'</script>";
} else {
echo "<h1 class='erro textoErro'>Op's: ".$autenticacao["erro"]."</h1>";
}
?>
Is what I'm thinking about checking out at the store itself, actually, nothing like that? Is there no way to achieve this?
So whether or not to use the library. I'm a scepter?
Detail: Both codes work correctly.