Crie um arquivo .php chamado de retpagseguro, insira dentro do mesmo os code a seguir:

OBS: Este arquivo deve fica localizado na pasta htdocs ou www

<?PHP
$host = "localhost"; /* HOST */
$user = "root"; /* USER */
$passwd = "senhadb"; /* PASSWORD */
$db = "nomedb"; /* DB */
$retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro
##############################################################
#                         CONFIGURAÇÕES
##############################################################

if (empty($_POST['Referencia'])) { header("Location http://pagseguro.com.br");  }

list($accname, $world) = explode('-', $_POST['Referencia']);
if ($world=='sv') {
        $retorno_host = "$host"; // Local da base de dados MySql
        $retorno_database = "$db"; // Nome da base de dados MySql
        $retorno_usuario = "$user"; // Usuario com acesso a base de dados MySql
        $retorno_senha = "$passwd";  // Senha de acesso a base de dados MySql
}

###############################################################
#              NÃO ALTERE DESTA LINHA PARA BAIXOs#

$lnk = mysql_connect("$host", "$user", "$passwd") or die ('Nao foi possível conectar ao MySql: ' . mysql_error());
mysql_select_db("$db", $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error());    

// Validando dados no PagSeguro
$PagSeguro = 'Comando=validar';
$PagSeguro .= '&Token=' . $retorno_token;
$Cabecalho = "Retorno PagSeguro";

foreach ($_POST as $key => $value)
{
 $value = urlencode(stripslashes($value));
 $PagSeguro .= "&$key=$value";
}

if (function_exists('curl_exec'))
{
 $curl = true;
}
elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) )
{
 $fsocket = true;
}
elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30))
{
 $fsocket = true;
}

if ($curl == true)
{
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/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);

  curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');
  $resp = curl_exec($ch);

 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;
       if (strcmp ($res, "VERIFICADO") == 0)
       {
          $confirma=true;
          break;
       }
    }
    fclose ($fp);
 }
 else
 {
    echo "$errstr ($errno)<br />\n";
 }
}

if ($confirma) {
## Recebendo Dados ##
$TransacaoID = $_POST['TransacaoID'];
$VendedorEmail  = $_POST['VendedorEmail'];
$Referencia = $_POST['Referencia'];
$TipoFrete = $_POST['TipoFrete'];
$ValorFrete = $_POST['ValorFrete'];
$Extras = $_POST['Extras'];
$Anotacao = $_POST['Anotacao'];
$TipoPagamento = $_POST['TipoPagamento'];
$StatusTransacao = $_POST['StatusTransacao'];
$CliNome = $_POST['CliNome'];
$CliEmail = $_POST['CliEmail'];
$CliEndereco = $_POST['CliEndereco'];
$CliNumero = $_POST['CliNumero'];
$CliComplemento = $_POST['CliComplemento'];
$CliBairro = $_POST['CliBairro'];
$CliCidade = $_POST['CliCidade'];
$CliEstado = $_POST['CliEstado'];
$CliCEP = $_POST['CliCEP'];
$CliTelefone = $_POST['CliTelefone'];
$NumItens = intval($_POST['ProdValor_1']);
$ProdQuantidade_x = $POST['ProdQuantidade_1'];

# GRAVA OS DADOS NO BANCO DE DADOS #
mysql_query("INSERT into PagSeguroTransacoes SET
        TransacaoID='$TransacaoID',
        VendedorEmail='$VendedorEmail',
        Referencia='$Referencia',
        TipoFrete='$TipoFrete',
        ValorFrete='$ValorFrete',
        Extras='$Extras',
        Anotacao='$accname',
        TipoPagamento='$TipoPagamento',
        StatusTransacao='$StatusTransacao',
        CliNome='$CliNome',
        CliEmail='$CliEmail',
        CliEndereco='$CliEndereco',
        CliNumero='$CliNumero',
        CliComplemento='$CliComplemento',
        CliBairro='$CliBairro',
        CliCidade='$CliCidade',
        CliEstado='$CliEstado',
        CliCEP='$CliCEP',
        CliTelefone='$CliTelefone',
        NumItens='$NumItens',
        Data=now(),
ProdQuantidade_x='$ProdQuantidade_x';");

if ($StatusTransacao == "Aprovado") {
mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'");
mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `PagSeguroTransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `PagSeguroTransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;");
mysql_query('OPTIMIZE TABLE  `pagsegurotransacoes`');
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Donate Server</title>
<style type="text/css">
body {
        font-family: Tahoma, Geneva, sans-serif;
        font-size: 16px;
        width: 900px;
        margin: 0px auto;
        margin-top: 30px;
}
b {
        font-size: 18px;
        font-weight: bold;
}
</style>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td width="11%" align="center" valign="middle"><img src="images/true.png" height="auto" width="64" /></td>
    <td width="89%"><p><b>S</b>ua compra está sendo processada por nossos sistemas de apuração, dentro de no máximo <u>1 hora seus pontos serão creditados</u>, caso o pagamento não for efetuado, ficará em aberto 1 ou mais pagamentos pendentes em sua conta. Caso você tenha mais de 3 pagamentos pendentes por falta de pagamento, sua conta será bloqueada temporariamente para efetuar pagamentos.</p></td>
  </tr>
</table>
<!--p><b>ID de Transação:</b> <?php echo $_POST['TransacaoID']; ?></p-->
</body>
</html>

No arquivo acima você vai alterar as seguintes linhas:

$host = "localhost"; /* HOST */
$user = "root"; /* USER */
$passwd = "senhadb"; /* PASSWORD */
$db = "nomedb"; /* DB */
$retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro

Gere sua token no PagSeguro e ative o seu endereço de retorno para seu site por esse LINK veja na imagem abaixo um exemplo:

 

io3lsc9.png

BhKqmPk.png

 

Certo agora crie um arquivo .php com o nome doacao e insira no mesmo os codes abaixo:

OBS: Quem utiliza gesior 2012 bota na pasta pages ou quem utiliza gesior anteriores fica na pasta htdocs ou www.

<?php
if(!$logged)
if($action == "logout")
$main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>';
else
$main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>';
else
{
$main_content .= '<table width="100%" border="0" cellpadding="4" cellspacing="1">
<tbody><tr>
 <td class="white" colspan="3" bgcolor="#505050"><span class="style4">Detalhes da bonifica&ccedil;&atilde;o de Points.</span></td>

</tr>
<tr bgcolor="#f1e0c6"><td width="35%"><b>Doa&ccedil;&atilde;o</b></td><td width="35%"><b>Points</b></td></tr>
<tr bgcolor="#d4c0a1"><td>R$5,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 5 Points</td></tr>

<tr bgcolor="#f1e0c6"><td>R$10,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 10 Points</td></tr>
<tr bgcolor="#d4c0a1"><td>R$20,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 20 Points</td></tr>
<tr bgcolor="#f1e0c6"><td>R$40,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 40 Points</td></tr>
<tr bgcolor="#d4c0a1"><td>R$60,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 60 Points</td></tr>
<tr bgcolor="#f1e0c6"><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center></td></tr>
</tbody></table></br>
';
$main_content .= '
<form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml">
<input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '">
<input type="hidden" name="tipo" value="CP">
<input type="hidden" name="moeda" value="BRL">
<input type="hidden" name="item_id_1" value="1">
<input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'">
<input type="hidden" name="item_frete_1" value="0">
<input type="hidden" name="item_peso_1" value="0">
<input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'">
<table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody>
<tr bgcolor="#505050" class="white">
<th colspan="2"><strong>Escolha a quantidade de pontos que deseja DONATAR.</strong></th>
</tr>
<tr bgcolor="#d4c0a1">
<td width="10%">Sua conta</td>
<td><strong>'.$account_logged->getCustomField("name").'</strong></td>
</tr>
<tr bgcolor="#d4c0a1">
<td width="10%">Pontos</td>
<td>
<input type="number" ng-model="get_points" min="1" size="5" maxlength="5">
<input name="item_valor_1" type="hidden" value="{{get_points * 100}}" size="5" maxlength="5">
<input name="item_quant_1" type="hidden" value="1" size="1" maxlength="1">
</td>
</tr>
<tr bgcolor="#d4c0a1">
<td colspan="2">
<input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" />
</td>
</tr>
</tbody></table></form>
<b><span style="color:#ff0000;">OBS:</span></b> Os pontos são entregues <b>automáticamente</b> logo após a <u>aprovação</u> do seu pagamento pelo PagSeguro, ou seja, pagou e foi aprovado pontos depositados.
<?php } ?>'; } ?>

Agora abra o arquivo config.php e adicione os codes abaixo:

#PAGSEGURO SISTEMA AUTOMATICO
$config['pagseguro']['email'] = 'seuemail@algumacoisa.com'; //E-mail da sua conta PagSeguro
$config['pagseguro']['produtoNome'] = 'Premium Points'; //Identificação do Pontos
$config['pagseguro']['produtoValor'] = '100'; //100 = R$ 1,00 - 250 = R$ 2,50

Vamos em layout.php nas primeiras linhas terá a tag abrindo html, exemplo:

<html>

Troque por:

<html ng-app>

Ou se tiver assim:

<html xmlns="http://www.w3.org/1999/xhtml">

Troque por:

<html xmlns="http://www.w3.org/1999/xhtml" ng-app>

Mais abaixo juntos aos codes de JS adicione:

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>

Agora vamos na database e adicione a seguinte tabela:

CREATE TABLE IF NOT EXISTS `PagSeguroTransacoes` (
        `TransacaoID` varchar(36) NOT NULL,
        `VendedorEmail` varchar(200) NOT NULL,
        `Referencia` varchar(200) DEFAULT NULL,
        `TipoFrete` char(2) DEFAULT NULL,
        `ValorFrete` decimal(10,2) DEFAULT NULL,
        `Extras` decimal(10,2) DEFAULT NULL,
        `Anotacao` text,
        `TipoPagamento` varchar(50) NOT NULL,
        `StatusTransacao` varchar(50) NOT NULL,
        `CliNome` varchar(200) NOT NULL,
        `CliEmail` varchar(200) NOT NULL,
        `CliEndereco` varchar(200) NOT NULL,
        `CliNumero` varchar(10) DEFAULT NULL,
        `CliComplemento` varchar(100) DEFAULT NULL,
        `CliBairro` varchar(100) NOT NULL,
        `CliCidade` varchar(100) NOT NULL,
        `CliEstado` char(2) NOT NULL,
        `CliCEP` varchar(9) NOT NULL,
        `CliTelefone` varchar(14) DEFAULT NULL,
        `NumItens` int(11) NOT NULL,
        `Data` datetime NOT NULL,
        `ProdQuantidade_x` int(5) NOT NULL,
        `status` tinyint(1) unsigned NOT NULL DEFAULT '0',
        UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`),
        KEY `Referencia` (`Referencia`),
        KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Beleza se tiver feito tudo OK naturalmente seu sistema está funcionando perfeitamente.

 

Haaaa, quem quiser que o sistema entregue DOUBLE POINTS vou ensinar abaixo, eu particularmente estou com essa promoção no meu OT….

No arquivo retpagseguro.php procure por:

mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'");

Troque por:

mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' * 2 WHERE name = '".htmlspecialchars($accname)."'");

Bom a única mudança ai foi a multiplicação dos pontos totais incluindo * 2.

Caso o seu tenha algum erro provavelmente vai ser gerado pelo layout.php se você não encontrar a formula correta então aconselho utilizar gesior 2012.

 

Créditos:

Tatu Hunter

Joffily Ferreira (Ajustar o sistema)

LEAVE A REPLY

Please enter your comment!
Please enter your name here