Ir para conteúdo
Fórum Script Brasil
  • 0

PagSeguro


Rafael Rocha B.

Pergunta

Opa pessoal,

tudo em paz? Galera estou com um problema sério. Dou manutenção em um site de compra coletiva, obviamente ele trabalha com vendas online, o sistema de pagamento é o PagSeguro. Ontem migrei o site de servidor, só que preservei todas as senhas de acesso ao banco, arquivos e dados do banco de dados. Depois dessa migração o PagSeguro não retorna mais o status correto da compra, tipo "Em análise", "Cancelado", entre outros. Ao invés disso está retornando um status chamado "Novo" que não era pra existir. Não sou especialista em PagSeguro, mas dei uma lida sobre e vi que o link respoonsável pelo retorno de dados é configurável, no meu caso é o arquivo retorno.php.

O conteúdo do arquivo retorno.php segue abaixo:

<?php
ob_start();

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: private, no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

header('Content-Type: text/html; charset=ISO-8859-1');
require_once('Connections/compras.php');

mysql_select_db($database_compras, $compras);
$query_ptgo = "SELECT * FROM pagseguro";
$ptgo = mysql_query($query_ptgo, $compras) or die(mysql_error());
$row_ptgo = mysql_fetch_assoc($ptgo);

define('TOKEN', $row_ptgo['token']);

class PagSeguroNpi {
    
    private $timeout = 20; // Timeout em segundos
    
    public function notificationPost() {
        $postdata = 'Comando=validar&Token='.TOKEN;
        foreach ($_POST as $key => $value) {
            $valued    = $this->clearStr($value);
            $postdata .= "&$key=$valued";
        }
        return $this->verify($postdata);
    }
    
    private function clearStr($str) {
        if (!get_magic_quotes_gpc()) {
            $str = addslashes($str);
        }
        return $str;
    }
    
    private 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;
    }

}

if (count($_POST) > 0) {
    
    $npi = new PagSeguroNpi();
    $result = $npi->notificationPost();
    
    $Referencia = isset($_POST['Referencia']) ? $_POST['Referencia'] : '';
    $StatusTransacao = isset($_POST['StatusTransacao']) ? $_POST['StatusTransacao'] : '';
    
    mysql_select_db($database_compras, $compras);
    $query_pedido = "UPDATE pedidos SET situacao = '".$StatusTransacao."' WHERE id = '".str_replace("Cód Pedido - ","",$Referencia)."'";
    mysql_query($query_pedido, $compras) or die(mysql_error());
    
}
ob_end_clean();
header("Location: index.php");
exit();

?>

Alguém já passou por isso?

Editado por *FIT*
Adicionar as Tags [code].
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...