Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera,
Estou implementando o PagSeguro no site, mas fiz a primeira compra, teste, para ver como se comportava o sistema.
Segue abaixo o código:
header('Content-Type: text/html; charset=ISO-8859-1');
define('TOKEN', 'MEUTOKEN');
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) {
// POST recebido, indica que é a requisição do NPI.
$npi = new PagSeguroNpi();
$result = $npi->notificationPost();
$dataAtual = date("Y-m-d");
$transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';
if ($result == "VERIFICADO") {
$ProdValor = isset($_POST['ProdValor_1']) ? $_POST['ProdValor_1'] : '';
$DataTransacao = isset($_POST['DataTransacao']) ? $_POST['DataTransacao'] : '';
$TipoPagamento = isset($_POST['TipoPagamento']) ? $_POST['TipoPagamento'] : '';
$StatusTransacao = isset($_POST['StatusTransacao']) ? $_POST['StatusTransacao'] : '';
if ($StatusTransacao == "Completo") {
$diaAtual = date("d");
$mesAtual = date("m");
$anoAtual = date("Y");
$dataAtivo = $anoAtual."-".$mesAtual."-".$diaAtual;
$diasMes = cal_days_in_month(CAL_GREGORIAN, $mesAtual, $anoAtual);
if ( ($diaAtual + 7) <= $diasMes ) {
$diaValidade = $diaAtual + 7;
$mesValidade = $mesAtual;
$anoValidade = $anoAtual;
} else {
if ( ($mesAtual + 1) <= 12) {
$diaValidade = ($diaAtual + 7) - $diasMes;
$mesValidade = $mesAtual + 1;
$anoValidade = $anoAtual;
} else {
$diaValidade = ($diaAtual + 7) - $diasMes;
$mesValidade = ($mesAtual + 1) - 12;
$anoValidade = $anoAtual + 1;
}
}
$dataValidade = $anoValidade."-".$mesValidade."".$diaValidade;
} else {
$dataAtivo == NULL;
$dataValidade == NULL;
}
$ProdID = isset($_POST['ProdID_1']) ? $_POST['ProdID_1'] : '';
if (isset($_POST['ProdID_1'])) {
$numCod = strlen($ProdID) - 1;
$TipCod = substr($ProdID,0,1);
if ($TipCod == "A") {
$anuncio_codigo = substr($ProdID,1,$numCod);
$s_anuncio = "SELECT * FROM classificados_anuncio WHERE codigo='$anuncio_codigo'";
$query_s_anuncio = mysql_query($s_anuncio);
if($query_s_anuncio){
$rows_s_anuncio = mysql_num_rows($query_s_anuncio);
if($rows_s_anuncio == 1){
$s_pagamento = "SELECT * FROM pagamento_anuncio WHERE codigo_anuncio='$anuncio_codigo' AND '$dataAtual' BETWEEN data_ativo AND data_validade ORDER BY data_validade DESC";
$query_s_pagamento = mysql_query($s_pagamento);
if($query_s_pagamento){
$rows_s_pagamento = mysql_num_rows($query_s_pagamento);
if($rows_s_pagamento == 0){
$i_pagamento = "INSERT INTO pagamento_anuncio (codigo_anuncio,valor,data_pagamento,data_ativo,data_validade,pagamento,definicao) VALUES ('$anuncio_codigo','$ProdValor','$DataTransacao','$dataAtivo','$dataValidade','$TipoPagamento','$StatusTransacao')";
}elseif($rows_s_pagamento == 1){
$pagamento_codigo = mysql_result($query_s_pagamento,0,codigo);
if(isset($pagamento_codigo)){
$u_pagamento = "UPDATE pagamento_anuncio SET data_ativo='$dataAtivo' AND data_validade='$dataValidade' AND definicao='$StatusTransacao' WHERE codigo='$pagamento_codigo'";
$query_u_pagamento = mysql_query($u_pagamento);
}
}
}
}
}
} else if ($TipCod == "C") {
$carro_placa = substr($ProdID,1,$numCod);
$s_carro = "SELECT * FROM carro WHERE placa='$carro_placa'";
$query_s_carro = mysql_query($s_carro);
if($query_s_carro){
$rows_s_carro = mysql_num_rows($query_s_carro);
if($rows_s_carro == 1){
$s_pagamento = "SELECT * FROM pagamento_carro WHERE placa='$carro_placa' AND '$dataAtual' BETWEEN data_ativo AND data_validade ORDER BY data_validade DESC";
$query_s_pagamento = mysql_query($s_pagamento);
if($query_s_pagamento){
$rows_s_pagamento = mysql_num_rows($query_s_pagamento);
if($rows_s_pagamento == 0){
$i_pagamento = "INSERT INTO pagamento_carro (placa,valor,data_pagamento,data_ativo,data_validade,pagamento,definicao) VALUES ('$carro_placa','$ProdValor','$DataTransacao','$dataAtivo','$dataValidade','$TipoPagamento','$StatusTransacao')";
}elseif($rows_s_pagamento == 1){
$pagamento_codigo = mysql_result($query_s_pagamento,0,codigo);
if(isset($pagamento_codigo)){
$u_pagamento = "UPDATE pagamento_carro SET data_ativo='$dataAtivo' AND data_validade='$dataValidade' AND definicao='$StatusTransacao' WHERE codigo='$pagamento_codigo'";
$query_u_pagamento = mysql_query($u_pagamento);
}
}
}
}
}
} else if ($TipCod == "L") {
$loja_cnpj = substr($ProdID,1,$numCod);
$s_loja = "SELECT * FROM empresa_loja WHERE cnpj='$loja_cnpj'";
$query_s_loja = mysql_query($s_loja);
if($query_s_loja){
$rows_s_loja = mysql_num_rows($query_s_loja);
if($rows_s_loja == 1){
$s_pagamento = "SELECT * FROM pagamento_empresa WHERE placa='$carro_placa' AND '$dataAtual' BETWEEN data_ativo AND data_validade ORDER BY data_validade DESC";
$query_s_pagamento = mysql_query($s_pagamento);
if($query_s_pagamento){
$rows_s_pagamento = mysql_num_rows($query_s_pagamento);
if($rows_s_pagamento == 0){
$i_pagamento = "INSERT INTO pagamento_empresa (cnpj,valor,data_pagamento,data_ativo,data_validade,pagamento,definicao) VALUES ('$loja_cnpj','$ProdValor','$DataTransacao','$dataAtivo','$dataValidade','$TipoPagamento','$StatusTransacao')";
}elseif($rows_s_pagamento == 1){
$pagamento_codigo = mysql_result($query_s_pagamento,0,codigo);
if(isset($pagamento_codigo)){
$u_pagamento = "UPDATE pagamento_empresa SET data_ativo='$dataAtivo' AND data_validade='$dataValidade' AND definicao='$StatusTransacao' WHERE codigo='$pagamento_codigo'";
$query_u_pagamento = mysql_query($u_pagamento);
}
}
}
}
}
} else if ($TipCod == "V") {
$venda_codigo = substr($ProdID,1,$numCod);
} else if ($TipCod == "P") {
$publicidade_codigo = substr($ProdID,1,$numCod);
$s_publicidade = "SELECT * FROM publicidade WHERE codigo='$publicidade_codigo'";
$query_s_publicidade = mysql_query($s_publicidade);
if($query_s_publicidade){
$rows_s_publicidade = mysql_num_rows($query_s_publicidade);
if($rows_s_publicidade == 1){
$s_pagamento = "SELECT * FROM pagamento_publicidade WHERE codigo_publicidade='$publicidade_codigo'";
$query_s_pagamento = mysql_query($s_pagamento);
if($query_s_pagamento){
$rows_s_pagamento = mysql_num_rows($query_s_pagamento);
if($rows_s_pagamento == 0){
$i_pagamento = "INSERT INTO pagamento_publicidade (codigo_publicidade,valor,data_pagamento,pagamento,definicao) VALUES ('$publicidade_codigo','$ProdValor','$DataTransacao','$TipoPagamento','$StatusTransacao')";
}elseif($rows_s_pagamento >= 1){
$pagamento_codigo = mysql_result($query_s_pagamento,0,codigo);
if(isset($pagamento_codigo)){
$u_pagamento = "UPDATE pagamento_empresa SET definicao='$StatusTransacao' WHERE codigo='$pagamento_codigo'";
$query_u_pagamento = mysql_query($u_pagamento);
}
}
}
}
}
}
}
//O post foi validado pelo PagSeguro.
} else if ($result == "FALSO") {
//O post não foi validado pelo PagSeguro.
$c = base64_encode('FALSO');
if($c){
header("location: pagVer.php?c=".$c);
} $c = base64_encode('ERRO');
if($c){
header("location: pagVer.php?c=".$c);
}
}
} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
$c = base64_encode('VERIFICANDO');
if($c){
header("location: pagVer.php?c=".$c);
}
}
Só que, pelo código que fiz, o sistema informa o status da transação, qual o valor, qual a forma de pagamento e assim vai...
Mas quando iniciei a transação escolhi o pagamento por boleto bancário, ele não acusou nada!
Por que? O Código está errado?
Vi e revi esse código e não achei erro algum! Será que os olhares críticos de vocês acham?
Agradeço
Carregando comentários...