Freedom 0 Denunciar post Postado Agosto 6, 2008 Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Compartilhar este post Link para o post Compartilhar em outros sites
Gutinho 0 Denunciar post Postado Agosto 30, 2008 Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Cara, estou tentando implementar esse retorno automático do pagseguro utilizando PHP + Mysql e até agora não consegui fazer funcionar. Primeiro que nem a tabela que puseram lá do Mysql funciona na hora de criar, esqueceram o delimitador ; e segundo que o código em php está furado, não funciona porque em um determinado momento faz chamada a uma função que não está no código. O próprio pagseguro está, por assim dizer, cavando sua própria cova. O suporte é fraquíssimo e as informações são confusas e insuficientes. Eu li muita coisa já sobre o pagseguro, inclusive aqui no próprio fórum e no blog do pagseguro, onde consta uma coluna dizendo "Seguem abaixo os principais motivos e dicas para resolução do problema", que não é pequena diga-se de passagem, e um detalhe importantíssimo, não resolve nada! É muito genérica. Eu ainda continuo com problema para receber os dados, coisa que deveria ser de uma simplicidade assustadora! Um simples POST resolveria o problema... Creio que o seu desafio realmente é O DESAFIO!!! Compartilhar este post Link para o post Compartilhar em outros sites
Davi Souza 0 Denunciar post Postado Setembro 29, 2008 pessoal uso na minha lojas oscommerce e funcionar normal.. ve se este código funciona pra vcs... <?php /* $Id: pagseguro.php,v 1.1.2.8 2004/12/07 15:46:08 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2004 osCommerce Released under the GNU General Public License */ chdir('../../../'); require('includes/application_top.php'); if (!function_exists('debug_var')) { function debug_var($var, $name='', $to_file=false){ if ($to_file==true) { $txt = fopen('ext/debug.log','a'); fwrite($txt, "-----------------------------------\n"); fwrite($txt, $name."\n"); fwrite($txt, print_r($var, true)."\n"); fclose($txt);// } else { print('<pre><br><b>'.$name.'</b><br>'); echo '<pre>'; print_r($var); echo '</pre>'; } } } // re-set the level of error reporting due to problems with IIS and the loop fgets error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); debug_var ($_POST, "POST recebido (A): ".date("Y-m-d G:i:s"), true); // RECEBE O POST ENVIADO PELA PAGSEGURO E ADICIONA OS VALORES PARA VALIDAÇÃO DOS DADOS if (!tep_not_null($_POST)) { // variáveis POST vazias, significa que é a segunda chamada do script debug_var ('Redirecionando para checkout_process', "POST vazio: ".date("Y-m-d G:i:s"), true); tep_redirect(tep_href_link('checkout_process.php', "StatusTransacao=$StatusTransacao&Referencia=$Referencia", 'SSL')); } debug_var ($_POST, "POST recebido: ".date("Y-m-d G:i:s"), true); // ENVIA DE VOLTA PARA A PAGSEGURO OS DADOS PARA VALIDAÇÃO $PagSeguro = 'Comando=validar'; $PagSeguro .= "&Token=".trim(MODULE_PAYMENT_PAGSEGURO_TOKEN); foreach ($_POST as $key => $value){ $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; } $server = 'pagseguro.uol.com.br'; $fsocket = false; $curl = false; $result = false; if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://'.$server, 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen($server, 80, $errno, $errstr, 30)) { $fsocket = true; } if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://' . $server . '/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($ch); if (!tep_not_null($resp)) { curl_setopt($ch, CURLOPT_URL, 'http://' . $server . '/Security/NPI/Default.aspx'); $resp = curl_exec($ch); } debug_var ($resp, "cURL: ".date("Y-m-d G:i:s"),true); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0){ fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)){ $res = @fgets ($fp, 1024); $resp .= $res; // Verifica se o status da transação está VERIFICADO if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; debug_var ($resp, "fsockopen: ".date("Y-m-d G:i:s"),true); break; } } fclose ($fp); } else{ echo "$errstr ($errno)<br />\n"; debug_var ($errstr.'('.$errno.')', "erro em fsockopen:: ".date("Y-m-d G:i:s"),true); // ERRO HTTP } } debug_var ($resp.'<br>confirmação: '.print_r($confirma,true), "resposta: ".date("Y-m-d G:i:s"),true); if ($confirma) { // Verifique se a TransacaoID não foi previamente processada // Verifique se o email recebido (VendedorEmail) é o seu email // Verifique se o valor do pagamento está correto // Processe o pagamento salvando os dados em seu banco de dados // RECEBE OS DADOS ENVIADOS PELA PAGSEGURO E ARMAZENA EM VARIÁVEIS $DataTransacao = $_POST['DataTransacao']; $DataHora = substr($DataTransacao,6,4)."-".substr($DataTransacao,3,2)."-".substr($DataTransacao,0,2)."-".substr($DataTransacao,10,9); $sql_data_array = array('VendedorEmail' => $_POST['VendedorEmail'], 'TransacaoID' => $_POST['TransacaoID'], 'Referencia' => $_POST['Referencia'], 'Anotacao' => $_POST['Anotacao'], 'DataTransacao' => $DataHora, 'TipoPagamento' => $_POST['TipoPagamento'], 'StatusTransacao' => $_POST['StatusTransacao'], 'CliNome' => $_POST['CliNome'], 'CliEmail' => $_POST['CliEmail'], 'date_created' => 'now()'); if((int)$_POST['ValorFrete']>0){ $sql_data_array['Anotacao'] .= "\nFrete: ".$_POST['ValorFrete']; } tep_db_perform('temp_pagseguro', $sql_data_array); /* $pedido = explode('-', $Referencia); $order_id = trim(substr($pedido[0], 8)); $comments = $StatusTransacao. "\nAnotação do cliente: ". $_POST['Anotacao']. "\nTipo do pagamento: ". $_POST['TipoPagamento']. "\nID no PagSeguro: ".$TransacaoID; if((int)$_POST['ValorFrete']>0){ $comments .= "\nFrete: ".$_POST['ValorFrete']; } $check_query = tep_db_query($qry="select orders_id from " . TABLE_ORDERS . " where orders_id = '" . $order_id . "'"); if (tep_db_num_rows($check_query) > 0) { tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . ((MODULE_PAYMENT_PAGSEGURO_ORDER_STATUS_ID > 0) ? MODULE_PAYMENT_PAGSEGURO_ORDER_STATUS_ID : DEFAULT_ORDERS_STATUS_ID) . "', last_modified = now() where orders_id = '" . $order_id . "'"); $sql_data_array = array('orders_id' => $order_id, 'orders_status_id' => (MODULE_PAYMENT_PAGSEGURO_ORDER_STATUS_ID > 0) ? MODULE_PAYMENT_PAGSEGURO_ORDER_STATUS_ID : DEFAULT_ORDERS_STATUS_ID, 'date_added' => 'now()', 'customer_notified' => '0', 'comments' => 'Verificado pelo PagSeguro [' . $comments . ']'); // tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); } */ } else { if (strcmp ($res, "FALSO") == 0){ // LOG para investigação manual if (tep_not_null(MODULE_PAYMENT_PAGSEGURO_DEBUG_EMAIL)) { $email_body = '$_POST:' . "\n\n"; foreach ($_POST as $key => $value) { $email_body .= $key . '=' . $value . "\n"; } $email_body .= "\n" . '$_GET:' . "\n\n"; foreach ($_GET as $key => $value) { $email_body .= $key . '=' . $value . "\n"; } tep_mail('', MODULE_PAYMENT_PAGSEGURO_DEBUG_EMAIL, 'Post Inválido: ', $email_body, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); } if ($txt = @fopen ('ext/fake.log', 'a')) { fwrite ($txt, "\n======================================\nDados possivelmente falsificados: ".date("Y-m-d G:i:s"). "\n"); fwrite ($txt, print_r($_POST,true). "\n"); fclose($txt); }; } } require('includes/application_bottom.php'); ?> tem a loja pra download em: http://www.linknacional.com.br/download/ boa sorte!!!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Gutinho 0 Denunciar post Postado Setembro 29, 2008 O problema, ao menos para mim, é que não uso oscommerce. Utilizo um método mais simples feito por mim mesmo sem carrinho de compra nem nada. Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Bufoni 0 Denunciar post Postado Outubro 11, 2008 Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Olá Douglas, Também estou com dificuldade pra fazer isso..... bom, até agora consegui descobrir que: O código do pagseguro (pelo menos em PHP e MySQL) não funciona, contém erros, entrei em contato com o pessoal do suporte, me disseram que aquele código tem de ser alterado, pois é apenas apenas um "exemplo"... Se você reparar, no código de criação das tabelas, uma se chama PagSeguroTransacoes e a outra PagSeguroTransacoesProdutos.... No entanto, na hora de inserir os dados está: $SQL = "INSERT INTO TransacoesPagSeguro (" ... O mais complicado é que não existe algum jeito de fazer testes como na PayPal.... A cada tentativa, temos que fazer compras de pequenos valores... O sistema pagseguro é ótimo e muito confiável, mas deixa a desejar neste ponto. Se alguém conseguiu fazer funcionar, por favor, se manifeste! :) Compartilhar este post Link para o post Compartilhar em outros sites
LenoPM 0 Denunciar post Postado Novembro 19, 2008 Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Olá Douglas, Também estou com dificuldade pra fazer isso..... bom, até agora consegui descobrir que: O código do pagseguro (pelo menos em PHP e MySQL) não funciona, contém erros, entrei em contato com o pessoal do suporte, me disseram que aquele código tem de ser alterado, pois é apenas apenas um "exemplo"... Se você reparar, no código de criação das tabelas, uma se chama PagSeguroTransacoes e a outra PagSeguroTransacoesProdutos.... No entanto, na hora de inserir os dados está: $SQL = "INSERT INTO TransacoesPagSeguro (" ... O mais complicado é que não existe algum jeito de fazer testes como na PayPal.... A cada tentativa, temos que fazer compras de pequenos valores... O sistema pagseguro é ótimo e muito confiável, mas deixa a desejar neste ponto. Se alguém conseguiu fazer funcionar, por favor, se manifeste! :) Ola amigo Depois de quase um mes tentando e estudando para fazer funcionar o tal retorno do pag seguro no PHP, consegui concluir e funcionar o mesmo. Através de um log feito pelo meu responsavel(chefe) onde trabalho, descobrimos que o pag seguro realmente envia via POST as informações, mas somente internamente, você não consegue visualizar nada na tela desse processo( não sei se vcs ja estavam sabendo desse detalhe, para mim foi novo). Unica coisa q ajustei no script que é disponibilizado no site do pagseguro foi a condição "if ($confirma)" e seu "else", que por ser novo na implantação do pagseguro e ainda tenho muito que aprender sobre o PHP não entendi a serventia dessa condição, assim conseguindo pegar os dados do post e incluindo na base de dados. OBS: O retorno é feito automatico em questão de alguns seguntos, mas não 100% de imediato ao retornar para a direção incluida em seu retorno. Espero que tenha ajudado, pois estou aqui pra ter um auxilio no que necessitar futuramente. Até! Compartilhar este post Link para o post Compartilhar em outros sites
D!! 0 Denunciar post Postado Novembro 27, 2008 Olá Leno! Seria possível disponibilizar o conteúdo modificado do arquivo ou um passo a passo (mesmo que resumido), sobre o que e onde modificar para que o código funcione corretamente? Depois de anos de ASP, estou aprendendo PHP agora, e ainda inseguro, pois existem muitas similaridades, mas esse problema do pagseguro está me dando nos nervos e ainda não consegui resolver. Tenho certeza de que devem existir outros usuários do fórum com o mesmo problema, e talvez, devido a pouca experiência em PHP, não entendem dentro da sua explicação, como resolver o problema. Agradeço desde já por sua contribuição e atenção! Grato, D! Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Olá Douglas, Também estou com dificuldade pra fazer isso..... bom, até agora consegui descobrir que: O código do pagseguro (pelo menos em PHP e MySQL) não funciona, contém erros, entrei em contato com o pessoal do suporte, me disseram que aquele código tem de ser alterado, pois é apenas apenas um "exemplo"... Se você reparar, no código de criação das tabelas, uma se chama PagSeguroTransacoes e a outra PagSeguroTransacoesProdutos.... No entanto, na hora de inserir os dados está: $SQL = "INSERT INTO TransacoesPagSeguro (" ... O mais complicado é que não existe algum jeito de fazer testes como na PayPal.... A cada tentativa, temos que fazer compras de pequenos valores... O sistema pagseguro é ótimo e muito confiável, mas deixa a desejar neste ponto. Se alguém conseguiu fazer funcionar, por favor, se manifeste! :) Ola amigo Depois de quase um mes tentando e estudando para fazer funcionar o tal retorno do pag seguro no PHP, consegui concluir e funcionar o mesmo. Através de um log feito pelo meu responsavel(chefe) onde trabalho, descobrimos que o pag seguro realmente envia via POST as informações, mas somente internamente, você não consegue visualizar nada na tela desse processo( não sei se vcs ja estavam sabendo desse detalhe, para mim foi novo). Unica coisa q ajustei no script que é disponibilizado no site do pagseguro foi a condição "if ($confirma)" e seu "else", que por ser novo na implantação do pagseguro e ainda tenho muito que aprender sobre o PHP não entendi a serventia dessa condição, assim conseguindo pegar os dados do post e incluindo na base de dados. OBS: O retorno é feito automatico em questão de alguns seguntos, mas não 100% de imediato ao retornar para a direção incluida em seu retorno. Espero que tenha ajudado, pois estou aqui pra ter um auxilio no que necessitar futuramente. Até! Compartilhar este post Link para o post Compartilhar em outros sites
Lula Moura 0 Denunciar post Postado Dezembro 3, 2008 Olá Leno! Seria possível disponibilizar o conteúdo modificado do arquivo ou um passo a passo (mesmo que resumido), sobre o que e onde modificar para que o código funcione corretamente? Depois de anos de ASP, estou aprendendo PHP agora, e ainda inseguro, pois existem muitas similaridades, mas esse problema do pagseguro está me dando nos nervos e ainda não consegui resolver. Tenho certeza de que devem existir outros usuários do fórum com o mesmo problema, e talvez, devido a pouca experiência em PHP, não entendem dentro da sua explicação, como resolver o problema. Agradeço desde já por sua contribuição e atenção! Grato, D! Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Olá Douglas, Também estou com dificuldade pra fazer isso..... bom, até agora consegui descobrir que: O código do pagseguro (pelo menos em PHP e MySQL) não funciona, contém erros, entrei em contato com o pessoal do suporte, me disseram que aquele código tem de ser alterado, pois é apenas apenas um "exemplo"... Se você reparar, no código de criação das tabelas, uma se chama PagSeguroTransacoes e a outra PagSeguroTransacoesProdutos.... No entanto, na hora de inserir os dados está: $SQL = "INSERT INTO TransacoesPagSeguro (" ... O mais complicado é que não existe algum jeito de fazer testes como na PayPal.... A cada tentativa, temos que fazer compras de pequenos valores... O sistema pagseguro é ótimo e muito confiável, mas deixa a desejar neste ponto. Se alguém conseguiu fazer funcionar, por favor, se manifeste! :) Ola amigo Depois de quase um mes tentando e estudando para fazer funcionar o tal retorno do pag seguro no PHP, consegui concluir e funcionar o mesmo. Através de um log feito pelo meu responsavel(chefe) onde trabalho, descobrimos que o pag seguro realmente envia via POST as informações, mas somente internamente, você não consegue visualizar nada na tela desse processo( não sei se vcs ja estavam sabendo desse detalhe, para mim foi novo). Unica coisa q ajustei no script que é disponibilizado no site do pagseguro foi a condição "if ($confirma)" e seu "else", que por ser novo na implantação do pagseguro e ainda tenho muito que aprender sobre o PHP não entendi a serventia dessa condição, assim conseguindo pegar os dados do post e incluindo na base de dados. OBS: O retorno é feito automatico em questão de alguns seguntos, mas não 100% de imediato ao retornar para a direção incluida em seu retorno. Espero que tenha ajudado, pois estou aqui pra ter um auxilio no que necessitar futuramente. Até! Pessoal segue abaixo o código em ASP que está funcionando no site que utilizo o PagSeguro. <% Dim str Dim Token DIM TransacaoID, CliNome Token = " INSIRA AQUI O SEU NÚMERO DO TOKEN" ' Recebe o POST enviado pela PagSeguro e armazena na variável str str = Request.Form & "&Comando=validar&Token=" & Token 'Envia para a PagSeguro a string para validação dos dados 'SET objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") 'SET objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") SET objHttp = Server.CreateObject("Microsoft.XMLHTTP") '(DEIXE HABILITADO AI EM CIMA O COMPONENTE QUE ESTÁ FUNCIONANDO NO SEU SERVIDOR) objHttp.OPEN "POST", "https://pagseguro.uol.com.br/Security/NPI/Default.aspx", false objHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded" objHttp.Send str ' Recupera as variáveis postadas pela PagSeguro e armazena nas variáveis locais TransacaoID = Request.Form("TransacaoID") CliNome = Request.Form("CliNome") if trim(TransacaoID)<>"" then ' Há POST do Robô do PagSeguro ' Confirma quando o NPI está VERIFICADO ou FALSO. Se FALSO, então ignore o NPI ' SOMENTE SALVE OS DADOS CASO O RESULTADO SEJA IGUAL À "VERIFICADO" If (objHttp.status <> 200 ) Then 'Erro de cabeçalho HTTP ENVIAR PARA UM ROTINA DE ERRO!!!!!! ElseIf (objHttp.responseText = "VERIFICADO") Then 'Salva os dados no Banco de Dados Set Conexao1 = CreateObject("ADODB.Connection") Application("StringConexaoBanco") = (INSIRA AQUI A STRING DE CONEXÃO COM SEU BANCO DE DADOS) Conexao1.open Application("StringConexaoBanco") Set Rst2 = Server.CreateObject("ADODB.Recordset") sql2 = "SELECT * from PagSeguroTransacoes WHERE TransacaoID ='"&TransacaoID&"'" Rst2.Open sql2,Conexao1,3,3 if Rst2.eof then 'GRAVA DADOS ENCAMINHADOS PELO PAGAMENTO SEGURO NA TABELA (PagSeguroTransacoes) V_VendedorEmail=request.form ("VendedorEmail") V_TransacaoID = request.form ("TransacaoID") V_Referencia = request.form ("Referencia") V_TipoFrete = request.form ("TipoFrete") V_ValorFrete = request.form ("ValorFrete") V_Anotacao = request.form ("Anotacao") V_DataTransacao = request.form ("DataTransacao") V_TipoPagamento = request.form ("TipoPagamento") V_StatusTransacao = request.form ("StatusTransacao") V_CliNome = request.form ("CliNome") V_CliEmail = request.form ("CliEmail") V_CliEndereco = request.form ("CliEndereco") V_CliNumero = request.form ("CliNumero") V_CliComplemento = request.form ("CliComplemento") V_CliBairro = request.form ("CliBairro") V_CliCidade = request.form ("CliCidade") V_CliEstado = request.form ("CliEstado") V_CliCEP = request.form ("CliCEP") V_CliTelefone = request.form ("CliTelefone") V_NumItens = request.form ("NumItens") 'GRAVA DADOS ENCAMINHADOS PELO PAGAMENTO SEGURO NA TABELA (PagSeguroTransacoesProdutos) SqlExec="Insert into PagSeguroTransacoes " &_ "(TransacaoID,VendedorEmail,Referencia,TipoFrete,ValorFrete,Anotacao,DataTra nsacao,TipoPagamento,StatusTransacao, " &_ "CliNome, CliEmail,CliEndereco, CliNumero,CliComplemento, CliBairro, CliCidade, CliEstado, CliCEP, CliTelefone, NumItens)" &_ "Values ('"&V_TransacaoID&"','"&V_VendedorEmail&"','"&V_Referencia&"','"&V_TipoFrete&"',CONVERT(MONEY,"&V_ValorFrete&"),'"&V_Anotacao&"','"&V_DataTransacao&"','"&V_TipoPagamento&"'," &_ "'"&V_StatusTransacao&"','"&V_CliNome&"','"&V_CliEmail&"','"&V_CliEndereco&"','"&V_CliNumero&"','"&V_CliComplemento&"','"&V_CliBairro&"','"&V_CliCidade&"','"&V_CliEstado&"','"&V_CliCEP&"','"&V_CliTelefone&"','"&V_NumItens&"')" Conexao1.execute(SqlExec) 'GRAVA DADOS ENCAMINHADOS PELO PAGAMENTO SEGURO NA TABELA (PagSeguroTransacoesProdutos) For t=1 to V_NumItens ProdID="ProdID_"&t ProdDescricao = "ProdDescricao_"&t ProdValor="ProdValor_"&t ProdQuantidade="ProdQuantidade_"&t ProdFrete="ProdFrete_"&t ProdExtras="ProdExtras_"&t V_TransacaoID = request.form ("TransacaoID") V_ProdID = request.form (ProdID) V_ProdDescricao = request.form (ProdDescricao) V_ProdValor = request.form (ProdValor) V_ProdQuantidade = request.form (ProdQuantidade) V_ProdFrete = request.form (ProdFrete) V_ProdExtras = request.form (ProdExtras) SqlExec="Insert into PagSeguroTransacoesProdutos " &_ "(TransacaoID,ProdID,ProdDescricao,ProdValor,ProdQuantidade,ProdFrete,ProdEx tras) Values " &_ "('"&V_TransacaoID&"','"&V_ProdID&"','"&V_ProdDescricao&"',CONVERT(MONEY,"&V_ProdValor&"),'"&V_ProdQuantidade&"', CONVERT(MONEY,"&V_ProdFrete&"),CONVERT(MONEY,"&V_ProdExtras&"))" Conexao1.execute(SqlExec) Next else ' Atualização apenas do STATUS V_StatusTransacao = request.form ("StatusTransacao") Rst2("StatusTransacao") = V_StatusTransacao Rst2.update end if rst2.close set rst2 = nothing Else '' NÃO VERIFICADO ( HAVIA (POST), MAS NÃO FOI VALIDADO PELO TOKEN - FALHA OU FRAUDE) '' Não fazer nada End If else ''' RETORNO SEM (POST) DIRECINAR PARA A PAGINA DE FIM DE TRANSAÇÃO Set oDNS = Server.Createobject("Dynu.DNS") Ip_Linstec =oDNS.Lookup("linstec.com") Set oDNS = nothing Ip_User= Request.ServerVariables("REMOTE_ADDR") if Ip_Linstec=Ip_User then response.redirect "http://servidor/linstec/new/pagamento.asp" else response.redirect "http://linstec.com/linstec/new/pagamento.asp" end if End if SET objHttp = NOTHING %> Compartilhar este post Link para o post Compartilhar em outros sites
Lula Moura 0 Denunciar post Postado Dezembro 3, 2008 Olá Leno! Seria possível disponibilizar o conteúdo modificado do arquivo ou um passo a passo (mesmo que resumido), sobre o que e onde modificar para que o código funcione corretamente? Depois de anos de ASP, estou aprendendo PHP agora, e ainda inseguro, pois existem muitas similaridades, mas esse problema do pagseguro está me dando nos nervos e ainda não consegui resolver. Tenho certeza de que devem existir outros usuários do fórum com o mesmo problema, e talvez, devido a pouca experiência em PHP, não entendem dentro da sua explicação, como resolver o problema. Agradeço desde já por sua contribuição e atenção! Grato, D! Caros amigos, já dei uma vasculhada na internet e não encontrei nada que resolva realmente o problema de retorno automático do pagseguro , (só um cara que realmente não deve gostar de ajudar a comunidade, e quer vender o código, que ele diz funcionar) , então gostaria de tentar juntar nossas forças pra tentar resolver essa questão e disponibilizar algo para que todos possam ler e ajudar nessa função que alguns clientes estão bastantes interessados no mercado. Agradeço a atenção desde já. Douglas Brucieri Olá Douglas, Também estou com dificuldade pra fazer isso..... bom, até agora consegui descobrir que: O código do pagseguro (pelo menos em PHP e MySQL) não funciona, contém erros, entrei em contato com o pessoal do suporte, me disseram que aquele código tem de ser alterado, pois é apenas apenas um "exemplo"... Se você reparar, no código de criação das tabelas, uma se chama PagSeguroTransacoes e a outra PagSeguroTransacoesProdutos.... No entanto, na hora de inserir os dados está: $SQL = "INSERT INTO TransacoesPagSeguro (" ... O mais complicado é que não existe algum jeito de fazer testes como na PayPal.... A cada tentativa, temos que fazer compras de pequenos valores... O sistema pagseguro é ótimo e muito confiável, mas deixa a desejar neste ponto. Se alguém conseguiu fazer funcionar, por favor, se manifeste! :) Ola amigo Depois de quase um mes tentando e estudando para fazer funcionar o tal retorno do pag seguro no PHP, consegui concluir e funcionar o mesmo. Através de um log feito pelo meu responsavel(chefe) onde trabalho, descobrimos que o pag seguro realmente envia via POST as informações, mas somente internamente, você não consegue visualizar nada na tela desse processo( não sei se vcs ja estavam sabendo desse detalhe, para mim foi novo). Unica coisa q ajustei no script que é disponibilizado no site do pagseguro foi a condição "if ($confirma)" e seu "else", que por ser novo na implantação do pagseguro e ainda tenho muito que aprender sobre o PHP não entendi a serventia dessa condição, assim conseguindo pegar os dados do post e incluindo na base de dados. OBS: O retorno é feito automatico em questão de alguns seguntos, mas não 100% de imediato ao retornar para a direção incluida em seu retorno. Espero que tenha ajudado, pois estou aqui pra ter um auxilio no que necessitar futuramente. Até! Pessoal! Segue abaixo o código em ASP + MSSQL que está funcionando no site que utilizo o PagSeguro. É necessário que seja criada a base de dados com o próprio script fornecido pelo PagSeguro na pagina de intergração. Observem que o lance é identificar quando há ou não há post do "Robô do PagSeguro". Quando há, os dados são tratados, pois esta página QUE PRECISA ESTAR GRAVADA NA URL DE RETORNO DO PAGSEGURO, foi chamada pelo "Robô do Pagseguro". Quando não há, é porque esta página foi chamada após uma transação com sucesso de algum cliente. Resumindo. Esta pagina é chamada durante uma transação de pagamento duas vezes, a primeira em segundo plano pelo ROBÔ do Pagseguro, neste caso com dados de POST. E uma segunda vez sem dados de POST sendo preciso direciona-la para uma página que diga ao cliente que a transação foi realizada com sucesso. Quando houve qualquer atualização de Status, o ROBÔ chama automaticamente esta página, desta vez com dados de POST e o script atualiza este status na base de dados. Estou usando a quase duas semanas e até as transações de testes que realizei com boletos já tiveram seus status alterados automáticamente para cancelados em segundo plano. Segue o script, qualquer dúvido estou a disposição. Lula Moura http://www.linstec.com.br <% Dim str Dim Token DIM TransacaoID, CliNome Token = " INSIRA AQUI O SEU NÚMERO DO TOKEN" ' Recebe o POST enviado pela PagSeguro e armazena na variável str str = Request.Form & "&Comando=validar&Token=" & Token 'Envia para a PagSeguro a string para validação dos dados 'SET objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") 'SET objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") SET objHttp = Server.CreateObject("Microsoft.XMLHTTP") '(DEIXE HABILITADO AI EM CIMA O COMPONENTE QUE ESTÁ FUNCIONANDO NO SEU SERVIDOR) objHttp.OPEN "POST", "https://pagseguro.uol.com.br/Security/NPI/Default.aspx", false objHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded" objHttp.Send str ' Recupera as variáveis postadas pela PagSeguro e armazena nas variáveis locais TransacaoID = Request.Form("TransacaoID") CliNome = Request.Form("CliNome") if trim(TransacaoID)<>"" then ' Há POST do Robô do PagSeguro ' Confirma quando o NPI está VERIFICADO ou FALSO. Se FALSO, então ignore o NPI ' SOMENTE SALVE OS DADOS CASO O RESULTADO SEJA IGUAL À "VERIFICADO" If (objHttp.status <> 200 ) Then 'Erro de cabeçalho HTTP ENVIAR PARA UM ROTINA DE ERRO!!!!!! ElseIf (objHttp.responseText = "VERIFICADO") Then 'Salva os dados no Banco de Dados Set Conexao1 = CreateObject("ADODB.Connection") Application("StringConexaoBanco") = (INSIRA AQUI A STRING DE CONEXÃO COM SEU BANCO DE DADOS) Conexao1.open Application("StringConexaoBanco") Set Rst2 = Server.CreateObject("ADODB.Recordset") sql2 = "SELECT * from PagSeguroTransacoes WHERE TransacaoID ='"&TransacaoID&"'" Rst2.Open sql2,Conexao1,3,3 if Rst2.eof then ´NOVO REGISTRO GRAVAR TUDO 'GRAVA DADOS ENCAMINHADOS PELO PAGAMENTO SEGURO NA TABELA (PagSeguroTransacoes) V_VendedorEmail=request.form ("VendedorEmail") V_TransacaoID = request.form ("TransacaoID") V_Referencia = request.form ("Referencia") V_TipoFrete = request.form ("TipoFrete") V_ValorFrete = request.form ("ValorFrete") V_Anotacao = request.form ("Anotacao") V_DataTransacao = request.form ("DataTransacao") V_TipoPagamento = request.form ("TipoPagamento") V_StatusTransacao = request.form ("StatusTransacao") V_CliNome = request.form ("CliNome") V_CliEmail = request.form ("CliEmail") V_CliEndereco = request.form ("CliEndereco") V_CliNumero = request.form ("CliNumero") V_CliComplemento = request.form ("CliComplemento") V_CliBairro = request.form ("CliBairro") V_CliCidade = request.form ("CliCidade") V_CliEstado = request.form ("CliEstado") V_CliCEP = request.form ("CliCEP") V_CliTelefone = request.form ("CliTelefone") V_NumItens = request.form ("NumItens") 'GRAVA DADOS ENCAMINHADOS PELO PAGSEGURO NA TABELA (PagSeguroTransacoes) SqlExec="Insert into PagSeguroTransacoes " &_ "(TransacaoID,VendedorEmail,Referencia,TipoFrete,ValorFrete,Anotacao,DataTra nsacao,TipoPagamento,StatusTransacao, " &_ "CliNome, CliEmail,CliEndereco, CliNumero,CliComplemento, CliBairro, CliCidade, CliEstado, CliCEP, CliTelefone, NumItens)" &_ "Values ('"&V_TransacaoID&"','"&V_VendedorEmail&"','"&V_Referencia&"','"&V_TipoFrete&"',CONVERT(MONEY,"&V_ValorFrete&"),'"&V_Anotacao&"','"&V_DataTransacao&"','"&V_TipoPagamento&"'," &_ "'"&V_StatusTransacao&"','"&V_CliNome&"','"&V_CliEmail&"','"&V_CliEndereco&"','"&V_CliNumero&"','"&V_CliComplemento&"','"&V_CliBairro&"','"&V_CliCidade&"','"&V_CliEstado&"','"&V_CliCEP&"','"&V_CliTelefone&"','"&V_NumItens&"')" Conexao1.execute(SqlExec) 'GRAVA DADOS ENCAMINHADOS PELO PAGSEGURO NA TABELA (PagSeguroTransacoesProdutos) For t=1 to V_NumItens ProdID="ProdID_"&t ProdDescricao = "ProdDescricao_"&t ProdValor="ProdValor_"&t ProdQuantidade="ProdQuantidade_"&t ProdFrete="ProdFrete_"&t ProdExtras="ProdExtras_"&t V_TransacaoID = request.form ("TransacaoID") V_ProdID = request.form (ProdID) V_ProdDescricao = request.form (ProdDescricao) V_ProdValor = request.form (ProdValor) V_ProdQuantidade = request.form (ProdQuantidade) V_ProdFrete = request.form (ProdFrete) V_ProdExtras = request.form (ProdExtras) SqlExec="Insert into PagSeguroTransacoesProdutos " &_ "(TransacaoID,ProdID,ProdDescricao,ProdValor,ProdQuantidade,ProdFrete,ProdEx tras) Values " &_ "('"&V_TransacaoID&"','"&V_ProdID&"','"&V_ProdDescricao&"',CONVERT(MONEY,"&V_ProdValor&"),'"&V_ProdQuantidade&"', CONVERT(MONEY,"&V_ProdFrete&"),CONVERT(MONEY,"&V_ProdExtras&"))" Conexao1.execute(SqlExec) Next else ' NESTE CASO JÁ HAVIA DADOS GRAVADO LOGO É UMA ATUALIZAÇÃO DE STATUS V_StatusTransacao = request.form ("StatusTransacao") Rst2("StatusTransacao") = V_StatusTransacao Rst2.update end if rst2.close set rst2 = nothing Else '' NÃO VERIFICADO ( HAVIA (POST), MAS NÃO FOI VALIDADO PELO TOKEN - FALHA OU FRAUDE) '' Não fazer nada End If else ''' RETORNO SEM (POST) DIRECINAR PARA A PAGINA DE FIM DE TRANSAÇÃO response.redirect "ALGUMA PAGINA QUE INFORME AO CLIENTE QUE A TRANSAÇÃO DELE FOI REALIZADA NO PAGSEGURO, SE QUISE MOSTRAR ALGO COM RELAÇÃO A TRANSAÇÃO TERÁ QUE LER NAS BASES DE DADOS (PagSeguroTransacoes) e (PagSeguroTransacoesProdutos) NÃO É POSSÍVEL LER OS POSTS " End if SET objHttp = NOTHING %> Compartilhar este post Link para o post Compartilhar em outros sites
jstecnologia 0 Denunciar post Postado Dezembro 5, 2008 SOLUÇÃO DA PÁGINA DE RETORNO PAGSEGURO Link do Post: http://forum.imasters.com.br/index.php?showtopic=319915 Compartilhar este post Link para o post Compartilhar em outros sites