Gaw 5 Denunciar post Postado Agosto 2, 2011 <?php $retorno_token = 'SEU_TOKEN'; define(TOKEN, $retorno_token); class createLog{ private $name = 'ps/ps.txt'; private $type = 'ab'; public $log; function setType($type = '') { $this -> type = $type; } function setFileName($name = ''){ $this -> name = $name; } public function setLog($log){ $tx = $log."#"; $ar = array("'" => "", "=" => "=", ">" => "", ")" => "", "array (" => "", "array ( " => "", " " => "", "\n" => ""); $st = strtr($tx, $ar); $lr = preg_replace("/,#/",";\n",$st); $aw = str_replace("#","",$lr); $rl = preg_replace("/,([a-zA-Z])/",";\n$1",$aw); $this -> log = $rl; if($log != ""){ return TRUE; }else{ return FALSE; } } public function createlog(){ $f = fopen ($this -> name, $this -> type); fwrite($f, $this -> log); fclose($f); } } $log = new createLog(); $log -> setLog(var_export($_POST, true)); $log -> createlog(); sleep(3); $arquivo = fopen ("ps/ps.txt", "r+"); $num_linhas = 0; while (!feof ($arquivo)) { if ($linha = fgets($arquivo)){ $num_linhas++; $Trata_Dados = preg_replace("/(\w+) = (\w+)/", "$2", $linha); $array = array("@" => "", "." => "", "," => "", "/" => "", ":" => "", " = " => " ", " " => "", ";" => ""); $strtr = strtr($linha, $array); $Trata_Dados2 = preg_replace("/(\w+) (\w+)/", "$1", $strtr); $Retira_Espaco = str_replace(' ', '', $Trata_Dados2); $Conta_Caracteres = strlen($Trata_Dados); $Retira_Virgula_Final = substr($Trata_Dados, 0, ($Conta_Caracteres-2)); $Retira_Anotacao = str_replace('Anotacao = ', '', $Retira_Virgula_Final); $Retira_Espaco2 = str_replace(' ', '+', $Retira_Anotacao); $Recebe_Info = $Recebe_Info.$Retira_Espaco.'='.$Retira_Espaco2."&"; if($num_linhas == 3){ $Referencia = $Retira_Virgula_Final; } if($num_linhas == 10){ $StatusTransacao = $Retira_Virgula_Final; } } } $Retira_Espaco3 = str_replace(' ', '', $Recebe_Info); $Tempo = 20; $PostData = 'Comando=validar&Token='.TOKEN.'&'.$Retira_Espaco3; function Envia_Url($Data, $Tmp){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $Data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_TIMEOUT, $Tmp); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = trim(curl_exec($curl)); curl_close($curl); return $result; } $Verifica = Envia_Url($PostData, $Tempo); sleep(3); fclose ($arquivo); if($Verifica == "VERIFICADO"){ if(($Referencia != "") || ($StatusTransacao != "")){ $est = str_replace(' ', '', $StatusTransacao); $est2 = str_replace('á', 'a', $est); //Aqui você pode colocar o que você quiser que seje alterado conforme resposta do PagSeguro ou deixar assim. $arr = array("Completo" => "Completo", "AguardandoPagto" => "AguardandoPagto", "Aprovado" => "Aprovado", "EmAnalise" => "EmAnalise", "Cancelado" => "Cancelado"); $str = strtr($est2, $arr); $conexao = mysql_connect("localhost", "ADMINISTRADOR", "SENHA") or die ("Erro ao Conectar no Banco de Dados"); mysql_select_db("BANCO_DE_DADOS", $conexao); //$pesquisa = mysql_query("select * from TABELA")or exit(mysql_error()); //while($dados = mysql_fetch_array($pesquisa)){ INSIRA AQUI AS OPÇÕES PARA INSERÇÃO NO BANDO DE DADOS exe: mysq_query("INSERT INTO etc..."); //} //mysql_close($conexao); echo"Seu Pedido foi Concretizado!"; }else{ echo'Seu Pedido não pode ser enviado, por favor tente Novamente.'; } sleep(3); $arquivo2 = fopen ("ps/ps.txt", "w"); fclose($arquivo2); }else{ echo'Erro no PagSeguro.'; } ?> Esse Script funcionou perfeitamente comigo espero que Ajude, qualquer dúvida estamos aew! Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Agosto 3, 2011 Eis o Código comentado e sem algumas funções desnecessárias: <?php // Digite seu TOKEN aqui $retorno_token = 'SEU_TOKEN'; define(TOKEN, $retorno_token); // Classe que salva um Log das Informações Recebidas. class createLog{ // Local do Arquivo de Texto. private $name = 'ps/ps.txt'; // Metodo de Aberturea desse Arquivo. private $type = 'ab'; public $log; function setType($type = '') { $this -> type = $type; } function setFileName($name = ''){ $this -> name = $name; } public function setLog($log){ // Variavel contendo o Log com um Caractere # no final. $tx = $log."#"; // Substituimos Algumas informações desnecessárias. $ar = array("'" => "", "=" => "=", ">" => "", ")" => "", "array (" => "", "array ( " => "", " " => "", "\n" => ""); $st = strtr($tx, $ar); // Substituimos o # por um ; $lr = preg_replace("/,#/",";\n",$st); // Retiramos todos os # do arquivo. $aw = str_replace("#","",$lr); // Separamos as informações com quebra de linha ex: VendedorEmail = a@a.com.br;\n $rl = preg_replace("/,([a-zA-Z])/",";\n$1",$aw); // Definimos a função Log recebendo Log. $this -> log = $rl; // Verificamos se a variavel Log está Vazia. if($log != ""){ return TRUE; }else{ return FALSE; } } // Salvamos as Informações no Arquivo. public function createlog(){ $f = fopen ($this -> name, $this -> type); fwrite($f, $this -> log); fclose($f); } } // Chamamos a Função que Salva os Dados no Arquivo TXT $log = new createLog(); $log -> setLog(var_export($_POST, true)); $log -> createlog(); // Damos um tempo para o script executar a Gravação sleep(3); // Abrimos o Arquivo com as informações Salvas e Tratadas. $arquivo = fopen ("ps/ps.txt", "r+"); // Quantidade de Linha do Arquivo $num_linhas = 0; while (!feof ($arquivo)) { // Enquanto existir uma Linha no Arquivo execute as Funções if ($linha = fgets($arquivo)){ // Contador de Linhas $num_linhas++; // Retiramos as Informações da Linha ex: VendedorEmail = "a@a.com.br;" $Trata_Dados = preg_replace("/(\w+) = (\w+)/", "$2", $linha); // String com caracteres a serem substituidos $array = array("@" => "", "." => "", "," => "", "/" => "", ":" => "", " = " => " ", " " => "", ";" => "", "_" => "", "-" => ""); // Retiramos esses Caracteres da String. $strtr = strtr($linha, $array); // Retiramos as Informações da Linha ex: "VendedorEmail" = a@a.com.br; $Trata_Dados2 = preg_replace("/(\w+) (\w+)/", "$1", $strtr); // Retiramos os Espaços da String $Retira_Espaco = str_replace(' ', '', $Trata_Dados2); // Contamos os Caracteres da String $Conta_Caracteres = strlen($Trata_Dados); // Retiramos o ; no final do Arquivo. $Retira_Virgula_Final = substr($Trata_Dados, 0, ($Conta_Caracteres-2)); // Retiramos a Algumas anotações que podem Retornar Vazio da String. $Sub = array("Referencia = " => "", "Anotacao = " => "", "CliComplemento = " => ""); $Retira_Anotacao = strtr($Retira_Virgula_Final, $Sub); // Substituimoss os Espaços da String por um + $Retira_Espaco2 = str_replace(' ', '+', $Retira_Anotacao); // Guardamos esses dados numa Variavel $Recebe_Info = $Recebe_Info.$Retira_Espaco.'='.$Retira_Espaco2."&"; } } // Retiramos as Quebras de Linha da String $Retira_Espaco3 = str_replace(' ', '', $Recebe_Info); $Tempo = 20; // String contendo a URL de Retorno para o PagSeguro. $PostData = 'Comando=validar&Token='.TOKEN.'&'.$Retira_Espaco3; // Enviamos esses Dados para o PagSeguro function Envia_Url($Data, $Tmp){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $Data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_TIMEOUT, $Tmp); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = trim(curl_exec($curl)); curl_close($curl); return $result; } // Recebemos a Resposta do PagSeguro VERIFICADO ou FALSE $Verifica = Envia_Url($PostData, $Tempo); // Damos um tempo para o script executar a Operação. sleep(3); fclose ($arquivo); echo $Verifica."<br><br>"; // Verificamos se Retornou Verificado if($Verifica == "VERIFICADO"){ // Se Sim mostramos a Confirmação echo"Seu Pedido foi Concretizado!"; }else{ // Se Não mostramos um Erro echo'Seu Pedido não pode ser enviado, por favor tente Novamente.'; } // Damos um tempo para o script executar a Operação sleep(3); // Limpamos o Log. $arquivo2 = fopen ("ps/ps.txt", "w"); fclose($arquivo2); ?> Qualquer tipo de Dúvidas sobre o Script estarei a disposição! Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Agosto 4, 2011 Aprimorei Novamente o Código, agora está mais Fácil de Entender com Menas Variaveis e com funções mais Dinamicas: <?php $retorno_token = 'Seu_TOKEN'; define(TOKEN, $retorno_token); class createLog{ private $name = 'ps.txt'; private $type = 'ab'; public $log; function setType($type = '') { $this -> type = $type; } function setFileName($name = ''){ $this -> name = $name; } public function setLog($log){ // Array Contendo os Caracteres que serão Substituidos ou Removidos. $Array_Subst = array(">" => "", ")" => "", "array (" => "", "array ( " => "", " " => "", "\n" => ""); // Substituimos e/ou Removemos os Caracteres. $Substitui = strtr($log, $Array_Subst); // Substituimos ',' por ' = ' $Formatacao_Log = preg_replace("/','/","' = '",$Substitui); // Substituimos ', por ' $Formatacao_Log2 = preg_replace("/',/","'",$Formatacao_Log); // Substituimos ' = ' por '=' $Formatacao_Log3 = preg_replace("/' = '/","'='",$Formatacao_Log2); // Guardamos essas Informações $this -> log = $Formatacao_Log3; if($log != ""){ return TRUE; }else{ return FALSE; } } public function createlog(){ $f = fopen ($this -> name, $this -> type); fwrite($f, $this -> log); fclose($f); } } // Chamamos a Função que Guarda os Arquivos no Log $log = new createLog(); $log -> setLog(var_export($_POST, true)); $log -> createlog(); // Abrimos o Arquivo. $arquivo = fopen ("ps.txt", "r+"); // Pegamos os Dados do Log e armazenamos em uma Variavel if ($Linha = fgets($arquivo, 102400)){ // Criamos um Array com os Dados do Log $Cria_Array = explode("=", $Linha); // Contamos quantos Valores o Array tem. $Contador = count($Cria_Array); // Definimos uma Variavel que Recebera todas as Informações. $Dados_Url; // Fazemos um Loop de acordo com a Quantidade de Valores do Array. for($i=0; $i<$Contador; $i++){ // Verificamos se $i é Par ou Impar $Par = ($i % 2); // Se $i for Par entra nessa Condição. if($Par == 0){ // Retiramos os Espaços e as Aspas Simples da String. $Info_PagSeguro = str_replace(" ", "", str_replace("'", "", $Cria_Array[$i])); // Guardamos os Dados em uma Variavel. $Dados_Url .= $Info_PagSeguro."="; // Se $i for Impar entra nessa Condição. }else{ // Retiramos as Aspas Simples da String. $Retira_Aspas = str_replace("'", "", $Cria_Array[$i]); // Substituimos os Espaços por + $Info_Cliente = str_replace(' ', '+', $Retira_Aspas); // Guardamos os Dados em uma Variavel. $Dados_Url .= $Info_Cliente."&"; } } } // Definimos o Tempo de Envio das Informações ao PagSeguro. $Tempo = 20; // Juntamos TODOS os Dados que serão Enviados ao PagSeguro. $Dados_Url_Completo ='Comando=validar&Token='.TOKEN.'&'.$Dados_Url; function Envia_Url($Data, $Tmp){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $Data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_TIMEOUT, $Tmp); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = trim(curl_exec($curl)); curl_close($curl); // Retornamos a Resposta do PagSeguro. return $result; } // Fechamos o Arquivo. fclose ($arquivo); // Guardamos a Resposta do PagSeguro em uma Variavel. $Verificacao = Envia_Url($Dados_Url_Completo, $Tempo); if($Verificacao == "VERIFICADO"){ echo"Seu Pedido foi Concretizado!"; }else{ echo"Seu Pedido não foi Concretizado!"; } // Limpamos o Log. $arquivo2 = fopen("ps.txt", "w"); fclose($arquivo2); ?> Qualquer Dúvida estarei a Disposição! Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Ianni 189 Denunciar post Postado Agosto 4, 2011 Ótima contribuição !! Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Agosto 4, 2011 Muito Obrigado Vinicius Ianni ^^ Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 12, 2011 Este modelo funciona para o retorno automatico ou para a API nova de notificações de status etc? Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Setembro 12, 2011 Este modelo funciona para o retorno automatico ou para a API nova de notificações de status etc? Então para a api nova não, mas se quizer eu posto o script que fiz para essa nova API! Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Setembro 13, 2011 Usando a API de notificação... Agora a sua tarefa é apenas gravar isso no banco de dados. http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 13, 2011 Se puder irá ajudar muito! Pois usavamos o pagseguro do método antigo e queria utilizar a nova API :D Este modelo funciona para o retorno automatico ou para a API nova de notificações de status etc? Então para a api nova não, mas se quizer eu posto o script que fiz para essa nova API! Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Setembro 13, 2011 Não conseguiu utilizar o tutorial que eu passei? Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 13, 2011 Usando a API de notificação... Agora a sua tarefa é apenas gravar isso no banco de dados. http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ No meu sistema, quando a pessoa clica no botão para pagar, atualiza no DB como 'Aguardando Pgto', nesse código da API de notificação, pra eu atualizar o status da pessoa quando estiver pago, é só botar abaixo do: <?php if(isset($_POST['notificationType']) && $_POST['notificationType'] == 'transaction'){ //Todo resto do código iremos inserir aqui. $email = "seuemail@dominio.com.br"; $token = "95112EE828D94278BD394E91C4388F20"; $url = "https://ws.pagseguro.uol.com.br/v2/transactions/notifications/" . $_POST['notificationCode'] . "?email=" . $email . "&token=" . $token; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $transaction= curl_exec($curl); curl_close($curl); if($transaction == 'Unauthorized'){ //Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção mail("email@email.com","Unauthorized Retorno PagSeguro","Deu erro na hora do retorno do PagSeguro, Unauthorized!"); exit;//Mantenha essa linha } $transaction = simplexml_load_string($transaction); $status = $transaction -> status; if ($status == 'CANCELLED') { //atualiza db } else if ($status == 'PAID') { //atualiza db } else if ($status == 'WAITING_PAYMENT') { //atualiza db } else if ($status == 'IN_ANALYSIS') { //atualiza db } else if ($status == 'AVAILABLE') { //atualiza db } } Pode ser assim? Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Setembro 13, 2011 Cara de onde você tirou esses status? CANCELLED, PAID, WAITING_PAYMENT...? No post que eu lhe enviei ele não mostra nada referente a isso. nem na documentação do PagSeguro sobre a API de notificação... O status chega como numérico. Tem o exemplo do XML que chega em: http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ Você chegou a dar uma olhada na documentação da API? Tirando isso acho que o resto aparentemente está correto. Ao invés de ficar escrevendo código e postar aqui perguntando se está correto, dar uma testada ai, e ver o que está chegando, isso vai fazer você pensar um pouco sobre a logica, e talvez você consiga resolver o problema ainda sem gastar muito tempo/esforço. Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 13, 2011 Cara de onde você tirou esses status? CANCELLED, PAID, WAITING_PAYMENT...? No post que eu lhe enviei ele não mostra nada referente a isso. nem na documentação do PagSeguro sobre a API de notificação... O status chega como numérico. Tem o exemplo do XML que chega em: http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ Você chegou a dar uma olhada na documentação da API? Tirando isso acho que o resto aparentemente está correto. Ao invés de ficar escrevendo código e postar aqui perguntando se está correto, dar uma testada ai, e ver o que está chegando, isso vai fazer você pensar um pouco sobre a logica, e talvez você consiga resolver o problema ainda sem gastar muito tempo/esforço. Vi isso nas strings de utilização da biblioteca do pagseguro em si, mas dai precisaria puxar o getTypeFromValue() da biblioteca... vou testar utilizando a numeração dos status e depois dou um retorno aqui. valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Setembro 13, 2011 o.O nossa amanhã eu posto meu script do retorno da nova API! Cara de onde você tirou esses status? CANCELLED, PAID, WAITING_PAYMENT...? No post que eu lhe enviei ele não mostra nada referente a isso. nem na documentação do PagSeguro sobre a API de notificação... O status chega como numérico. Tem o exemplo do XML que chega em: http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ Você chegou a dar uma olhada na documentação da API? Tirando isso acho que o resto aparentemente está correto. Ao invés de ficar escrevendo código e postar aqui perguntando se está correto, dar uma testada ai, e ver o que está chegando, isso vai fazer você pensar um pouco sobre a logica, e talvez você consiga resolver o problema ainda sem gastar muito tempo/esforço. Vi isso nas strings de utilização da biblioteca do pagseguro em si, mas dai precisaria puxar o getTypeFromValue() da biblioteca... vou testar utilizando a numeração dos status e depois dou um retorno aqui. valeu. Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 14, 2011 Valeu! To tentando fazer funcionar o que o Senartes passou acima, mas aguardo para dar uma olhada no teu código Gaw ;) o.O nossa amanhã eu posto meu script do retorno da nova API! Cara de onde você tirou esses status? CANCELLED, PAID, WAITING_PAYMENT...? No post que eu lhe enviei ele não mostra nada referente a isso. nem na documentação do PagSeguro sobre a API de notificação... O status chega como numérico. Tem o exemplo do XML que chega em: http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/ Você chegou a dar uma olhada na documentação da API? Tirando isso acho que o resto aparentemente está correto. Ao invés de ficar escrevendo código e postar aqui perguntando se está correto, dar uma testada ai, e ver o que está chegando, isso vai fazer você pensar um pouco sobre a logica, e talvez você consiga resolver o problema ainda sem gastar muito tempo/esforço. Vi isso nas strings de utilização da biblioteca do pagseguro em si, mas dai precisaria puxar o getTypeFromValue() da biblioteca... vou testar utilizando a numeração dos status e depois dou um retorno aqui. valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Setembro 14, 2011 Eis a Criancinha: <?php header('Content-Type: text/html; charset=ISO-8859-1'); ?> <?php class RetornoPagSeguro { private $name = 'log.txt'; private $type = 'ab'; public $log; private $timeout = 20; // Timeout em segundos function setTipo($type = '') { $this->type = $type; } function setArquivoNome($name = '') { $this->name = $name; } public function setLog($log) { // Guardamos essas Informações $this->log = $log; } public function criaLog() { $f = fopen($this->name, $this->type); fwrite($f, $this->log); fclose($f); } public function pegaArray() { $pegaArray = file_get_contents("log.txt"); return $pegaArray; } public function verify($data) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = trim(curl_exec($curl)); curl_close($curl); return $result; } public function getUrlRetornar($str_retorno, $token, $tipo) { $str_retorno = str_replace("array", "", $str_retorno); $str_retorno = str_replace("(", "", $str_retorno); $str_retorno = str_replace(")", "", $str_retorno); $str_retorno = str_replace(" ", "", $str_retorno); $str_retorno = str_replace("\n", "", $str_retorno); $array = explode("','", $str_retorno); $arr = array(); foreach ($array as $value) { $var1 = explode("=>", $value); $chave = trim(str_replace("'", "", $var1[0])); $valor = trim(str_replace("'", "", $var1[1])); $arr["$chave"] = $valor; } $url = "Comando=validar&Token=$token&"; foreach ($arr as $key => $value) { if ($key <> "notificationCode" && $key <> "notificationType") { $url .= "$key=$value&"; } } $url = trim(str_replace("notificationCode&", "", $url)); $pos = strrpos($url, ","); $url = substr($url, 0, $pos); $url = str_replace(" ", "+", $url); if ($tipo == 1) { return $url; } else { return $arr; } } } $npi = new RetornoPagSeguro(); $npi->setLog(var_export($_POST, true)); $npi->criaLog(); $array = $npi->pegaArray(); $url_retornar = $npi->getUrlRetornar($array, "SEU_TOKEN", 1); $result = $npi->verify($url_retornar); $conexao = mysql_connect('localhost', 'TABELA', 'SENHA'); mysql_select_db('BANCO'); $array_retorno = $npi->getUrlRetornar($array, "SEU_TOKEN", 0); sleep(1); if ($result == "VERIFICADO") { $Verifica = substr($array_retorno['ProdDescricao_1'], 0, -3); $TransacaoID = $array_retorno['TransacaoID']; $VendedorEmail = $array_retorno['VendedorEmail']; if ($Verifica == 'Paket Gebot') { $Referencia = $array_retorno['ProdDescricao_1']; } else { $Referencia = ""; } $TipoFrete = $array_retorno['TipoFrete']; $ValorFrete = $array_retorno['ValorFrete']; $Extras = $array_retorno['Extras']; $Anotacao = $array_retorno['Anotacao']; $TipoPagamento = $array_retorno['TipoPagamento']; $StatusTransacao = $array_retorno['StatusTransacao']; $CliNome = $array_retorno['CliNome']; $CliEmail = $array_retorno['CliEmail']; $CliEndereco = $array_retorno['CliEndereco']; $CliNumero = $array_retorno['CliNumero']; $CliComplemento = $array_retorno['CliComplemento']; $CliBairro = $array_retorno['CliBairro']; $CliCidade = $array_retorno['CliCidade']; $CliEstado = $array_retorno['CliEstado']; $CliCEP = $array_retorno['CliCEP']; $CliTelefone = $array_retorno['CliTelefone']; $ProdDescricao = $array_retorno['ProdDescricao_1']; $NumItens = $array_retorno['NumItens']; mysql_query("INSERT into PagSeguroTransacoes SET TransacaoID='$TransacaoID', VendedorEmail='$VendedorEmail', Referencia='$Referencia', TipoFrete='$TipoFrete', ValorFrete='$ValorFrete', Extras='$Extras', Anotacao='$Anotacao', TipoPagamento='$TipoPagamento', StatusTransacao='$StatusTransacao', CliNome='$CliNome', CliEmail='$CliEmail', CliEndereco='$CliEndereco', CliNumero='$CliNumero', CliComplemento='$CliComplemento', CliBairro='$CliBairro', CliCidade='$CliCidade', CliEstado='$CliEstado', CliCEP='$CliCEP', CliTelefone='$CliTelefone', ProdDescricao='$ProdDescricao', NumItens='$NumItens', Data=now();"); echo"<center>Seu Pedido foi Confirmado, aguarde alguns segundos para que possamos concluir sua compra!</center>"; echo"<form action='concluido.php' name='finaliza' method='post'><input type='hidden' name='Valida' value='ok'>"; sleep(5); foreach ($array_retorno as $key => $value) { if ($key <> "notificationCode" && $key <> "notificationType") { echo"<input type='hidden' name='" . $key . "' value='" . $value . "'>"; } } echo"</form>"; echo"<script> document.finaliza.submit(); </script>"; } else { echo"<form action='concluido.php' name='finaliza2' method='post'> <input type='hidden' name='Valida' value='ok'>"; foreach ($array_retorno as $key => $value) { if ($key <> "notificationCode" && $key <> "notificationType") { echo"<input type='hidden' name='" . $key . "' value='" . $value . "'>"; } } echo"</form>"; echo"<script> document.finaliza2.submit(); </script>"; } ?> Concluido.php: <?php class RetornoPagSeguro { private $name = 'log.txt'; public $log; function setArquivoNome($name = '') { $this->name = $name; } public function limpaLog() { $g = fopen($this->name, "w"); fclose($g); } } $npi = new RetornoPagSeguro(); $npi->limpaLog(); $conexao = mysql_connect('localhost', 'TABELA', 'SENHA'); mysql_select_db('BANCO'); ALTERA DB AQUI ?> Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Setembro 14, 2011 Como tu tá utilizando a API nova com a URL antiga? curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); não teria que utilizar a nova: https://ws.pagseguro.uol.com.br/v2/transactions/notifications/ fiquei na dúvida Enfim, o código que o senartes passou rolou depois de algumas mudanças, Valeu pela ajuda dos 2 :D Compartilhar este post Link para o post Compartilhar em outros sites
Gaw 5 Denunciar post Postado Setembro 14, 2011 Código errado, falha minha ¬¬ que bom que você solucionou seu problema ;D Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Setembro 15, 2011 Pessoal o sistema da API muda completamente o jeito de manipular os dados... Prestem atenção nisso... Essa solução postada acima não está meio... suja não? Objeto desnecessário, converter post em string, gravar em um arquivo de texto, ler o arquivo de texto, converter string em array ( o post recebido já era um array ) converte cada indide do array em variavel,... Acho que isso vai consumir muita memoria desnecessariamente... Enfim, o código que o senartes passou rolou depois de algumas mudanças, Valeu pela ajuda dos 2 :D Quais mudanças você faz? posta ai, talvez alguém que esteja pesquisando precise dessa alteração... posso até solicitar alteração no blog... Compartilhar este post Link para o post Compartilhar em outros sites
urubullino 0 Denunciar post Postado Setembro 30, 2011 http://forum.imasters.com.br/topic/445642-problema-com-pagseguro-mais-um/ Compartilhar este post Link para o post Compartilhar em outros sites