Clear Checkout leaves the site?

2

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 .= "&currency=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.

    
asked by anonymous 19.12.2016 / 11:31

1 answer

0

Transparent checkout of Secure Pag does not leave the client's environment. It is communication via API. As you said, you can use cURL that will return an XML with the data.

In PagSeguro you need to set up the Checkout Return URL, then you'll be returned to a link on your site.

PagSeguro Documentation

    
19.12.2016 / 11:38