Carcleo 4 Denunciar post Postado Dezembro 16, 2016 No Paypal, quando o cliente clica no botão pague com PayPal, é feita uma chamada à API para verificação do acesso da loja à API de pagamentos, se o acesso for liberado, a API retorna ao site uma autorização de reenvio do cliente ao ambiente de pagamento juntamente com um código de transação para aquele acesso do cliente ao ambiente de pagamento. Então, pegamos esse código de transação e gravamos no BD na tabela de pedidos no pedido que esta sendo pago. Quando o cliente acaba de pagar, é disparada uma notificação informando o código daquela transação, então podemos pesquisar no banco na tabela de pedidos, qual é o pedido que tem aquele código de transação e proceder os trâmites. então eu pergunto: É possível resgatar esse código de transação antes do checkout no PagSeguro? Como? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Luiz 41 Denunciar post Postado Dezembro 16, 2016 Acho que o ideal é estudar o manual API deles e caso não consiga entrar em contato diretamente com eles! Ninguem melhor para responder essa duvida do que a propria TI do PagSeguro. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 16, 2016 Sim, mas lá também não estão respondendo. Vou tentar ser mais objetivo. https://dev.pagseguro.uol.com.br/como-comecar Tem a opção de verificar antes os dados da loja por cUrl. Mas eles começam assim: curl -k https://ws.pagseguro.uol.com.br/pre-approvals/payment/ -d\ "email={email}\ &token={toke}\ &itemId1=0001\ &itemDescription1=Seguro contra roubo - Notebook Prata\ &itemAmount1=10.00\ &itemQuantity1=1\ &reference=REF1234-1\ &preApprovalCode=E06B11501414036FF4444F9489D9774C Porém, estou tendo problema com o -d na url para passar na cUrl. Mesmo que retire os caracteres \ e os espaços dá erro na hora de colocar no browser. Estou fazendo assim; <?php require_once "../config.php"; $urlSandBoxPGTO = "https://sandbox.pagseguro.uol.com.br/v2/checkout/payment.html"; $urlProducaoPGTO = "https://ws.pagseguro.uol.com.br/v2/checkout/payment.html"; $urlSandBoxAUT = "https://sandbox.pagseguro.uol.com.br/v2/checkout"; $urlProducaoAUT = "https://ws.pagseguro.uol.com.br/v2/checkout"; $sandbox = false; $urlAUT = $sandbox == true ? $urlSandBoxAUT : $urlProducaoAUT; $urlPGTO = $sandbox == true ? $urlSandBoxPGTO : $urlProducaoPGTO; $ultimoPedido = 1; //$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] = $item->getPrecoUnitario(); $itensPS["itemQuantity".$i] = $item->getQuantidade(); $i++; } $itens = "&"; foreach ($itensPS as $key => $itemPS) : $itens .= $key."=".$itemPS."&"; endforeach; $itens = substr ($itens, 0, -1); $urlAUTXML = $urlAUT."/ email=".$constantes->getEmailPS()." &token=".$constantes->getTokenPS()." ¤cy=BRL ".$itens." &reference=".$pedidoCliente->getIdPedidoCliente()." &senderName=".$cliente->getNome()." &senderAreaCode=".$ddd." &senderPhone=".$tel." &senderEmail=".$cliente->getEmail()." &shippingType=Transportadora &shippingAddressStreet=".$cliente->getEmail()." &shippingAddressNumber=".$pedidoCliente->getNumero()." &shippingAddressComplement=".$pedidoCliente->getNumero()." &shippingAddressDistrict=".$pedidoCliente->getBairro()." &shippingAddressPostalCode=".$pedidoCliente->getCep()." &shippingAddressCity=".$cidade["nome"]." &shippingAddressState=".$pedidoCliente->getEstado()." &shippingAddressCountry=BRA"; $urlAUTXML = trim($urlAUTXML); print $urlAUTXML; $autenticacao = $phpUtil->recebeXML($urlAUTXML); /* print "<pre>"; //print $itens; //print $urlAUTXML; //print_r($itensPS); print_r($autenticacao); print "</pre>"; */ ?> A função <?php public function recebeXML ($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $data = trim(curl_exec($ch)); $xml = simplexml_load_string($data); return $xml; } } ?> O objetivo é obter o retorno do pagseguro antes de reenviar o cliente para o pagamento mas não chega nada por xml Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 16, 2016 Consegui: <?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>"; } ?> Função public function recebeXMLHeaders ($url, $headers, $post) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 10); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); if($response == "Unauthorized") { $xml["erro"] = "Erro na Interação"; } else { $xml = simplexml_load_string($response); } return $xml; } Compartilhar este post Link para o post Compartilhar em outros sites