Carcleo 4 Denunciar post Postado Dezembro 19, 2016 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 .= "¤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>"; } ?> 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
VertexEcommerce 0 Denunciar post Postado Novembro 26, 2018 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 .= "¤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>"; } ?> 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