Transparent checkout leaves the site?

Asked

Viewed 153 times

1

I downloaded the official library of Pagseguro, Pagsegurolibrary, but they say that with the transparent checkout all the 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.

Behold:

<?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 using the library, you 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>";

}
?>

Does what I’m thinking is checkout in the store itself actually isn’t any of that? Is there no way to achieve that?

So either use or not use the library. I am scepter?

Detail: both codes work correctly.

  • Secure Pag transparent checkout does not leave the client 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 Return checkout URL, then you return to a link from your site. Documentação Pagseguro

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.