Ir para conteúdo

Arquivado

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

Gaw

Solução Retorno Automático PagSeguro

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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