Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Checkout Transparente sai do site?

Recommended Posts

Pessoal, tenho uma dúvida:


Baixei a biblioteca oficial do PagSeguro, PagSeguroLibrary, mas dizem que com o checkout transparente todo o processo é feita na loja virtual e toda a comunicação com o PagSeguro é feita via cUrl.


No entanto, não é isso o que ocorre pois no final do arquivo que chama a biblioteca temos um redirecionamento para a página de pagamento no site do PagSeguro.


Veja:




<?php
...
echo "<script>document.location='".$url."'</script>";

?>


Todo o código




<?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>";
?>



Por Outro lado, usando um código aberto sem a utilização da biblioteca, consigo o mesmo resultado.




<?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>";

}
?>




Será que o que estou pensando que é checkout na própria loja na verdade não é nada disso?

Será que não existe uma forma de conseguir isso?



Então tanto faz usar ou não usar a biblioteca. Estou cetro?


Detalhe: ambos os códigos funcionam corretamente.


Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 19/12/2016 at 08:38, Carcleo disse:
Pessoal, tenho uma dúvida:

 

 

 

 

Baixei a biblioteca oficial do PagSeguro, PagSeguroLibrary, mas dizem que com o checkout transparente todo o processo é feita na loja virtual e toda a comunicação com o PagSeguro é feita via cUrl.

 

 

 

 

 

No entanto, não é isso o que ocorre pois no final do arquivo que chama a biblioteca temos um redirecionamento para a página de pagamento no site do PagSeguro.

 

 

 

 

 

Veja:

 

 

 

 

 

 


    <?php

    ...

    echo "<script>document.location='".$url."'</script>";


    ?>

 

 

Todo o código

 

 

 



    <?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>";

    ?>

 

 

 

 

 

Por Outro lado, usando um código aberto sem a utilização da biblioteca, consigo o mesmo resultado.

 

 

 



    <?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>";


    }

    ?>

 

 

 

 

 

 

 

 

Será que o que estou pensando que é checkout na própria loja na verdade não é nada disso?

 

 

Será que não existe uma forma de conseguir isso?

 

 

 

 

 

 

 

 

Então tanto faz usar ou não usar a biblioteca. Estou cetro?

 

 

 

 

 

Detalhe: ambos os códigos funcionam corretamente.

 

 

 

 

o Checkout Transparente tem por finalidade finalizar todo o processo dentro da própria loja virtual, sugiro dar uma olhada na documentação, talvez algum parâmetro que esteja passando da programação está direcionando para o checkout padrão do Pagseguro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.