Jump to content

[Gesior] PagSeguro Automático (Tibia Coins)


Qwizer

Recommended Posts

Pagseguro Retorno Automatico


Bom pessoal como sabemos no tibia atual se usa os tibia coins ingame, portante para quem quiser usar essa mesma moeda ingame sem a necessidade de premium points fiz uma adaptação do sistema do Natanael ([Gesior] PagSeguro Automático (100% Funcional) bom o sistema funciona da seguinte forma, assim como no sistema normal o players faz a donate no pagseguro e recebe automaticamente ingame a quantidade de tibia coins.

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


<?PHP
$host = "localhost"; /* HOST */
$user = "root"; /* USER */
$passwd = "PASSWORD"; /* PASSWORD */
$db = "DATABASE"; /* DB */
$retorno_token = 'TOKENPAGSEGURO'; // 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');
$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("INSERT INTO `z_ots_comunication`(`id`, `name`, `type`, `action`, `param1`, `param2`, `param3`, `param4`, `param5`, `param6`, `param7`, `delete_it`) VALUES ('id + 1','".htmlspecialchars($accname)."','login','give_item','24944','$NumItens'*2,'','','item','Tibia Coins','1','1')");
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>


Gere sua token no PagSeguro com este link e ative o link do retorno ao seu site veja na imagem abaixo um exemplo:
fK8mlS.png

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


<?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 onmouseover="MouseOverBigButton(this);" onmouseout="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 onmouseover="MouseOverBigButton(this);" onmouseout="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
{
$_players = $account_logged->getPlayersList();
function listaPlayers()
{
$_players = $GLOBALS['_players'];
$o = '<select name="ref_transacao" id="ref_transacao"><option value="">-- Selecione --</option>';
foreach($_players as $_player)
{
$o .= '<option value="'.$_player->getName().'">'.$_player->getName().'</option>';
}
$o .= '</select>';

return $o;
}

$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").'">-->

<br>
<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 Tibia Coins que deseja DOAR.</strong></th>
</tr>
<tr bgcolor="#d4c0a1">
<td width="10%">Seu char</td>
<td><strong>'.listaPlayers().'</strong></td>
</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%">Tibia Coins</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>
<br>
<center>Os Tibia Coins são entregues <b>automáticamente</b> logo após a <u>aprovação</u> do seu pagamento pelo PagSeguro.</center>

<?php } ?>'; } ?>



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

#PAGSEGURO SISTEMA AUTOMATICO
$config['pagseguro']['email'] = '[email protected]<script data-cfhash='f9e31' type="text/javascript"> /* {C}*/</script>'; //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;

e adicione também:

CREATE TABLE IF NOT EXISTS `z_ots_comunication` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `action` varchar(255) NOT NULL,
  `param1` varchar(255) NOT NULL,
  `param2` varchar(255) NOT NULL,
  `param3` varchar(255) NOT NULL,
  `param4` varchar(255) NOT NULL,
  `param5` varchar(255) NOT NULL,
  `param6` varchar(255) NOT NULL,
  `param7` varchar(255) NOT NULL,
  `delete_it` int(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

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

Haaaa, quem quiser que o sistema nao entregue
DOUBLE Tibia Coins e caso queira usar outro item como moeda virtual vou ensinar abaixo.

No arquivo
retpagseguro.php procure por:

mysql_query("INSERT INTO `z_ots_comunication`(`id`, `name`, `type`, `action`, `param1`, `param2`, `param3`, `param4`, `param5`, `param6`, `param7`, `delete_it`) VALUES ('id + 1','".htmlspecialchars($accname)."','login','give_item','24944','$NumItens'*2,'','','item','Tibia Coins','1','1')");

troque por:

mysql_query("INSERT INTO `z_ots_comunication`(`id`, `name`, `type`, `action`, `param1`, `param2`, `param3`, `param4`, `param5`, `param6`, `param7`, `delete_it`) VALUES ('id + 1','".htmlspecialchars($accname)."','login','give_item','24944','$NumItens''','','item','Tibia Coins','1','1')");

item ID: 24944 se quzier usar outra item como moeda so alterar o ID.

bom e isso pessoal qualquer duvida so postar


Créditos:
Natanael Beckman
Tatu Hunter
Joffily Ferreira

 

shop.rar Testado TFS 1.0/1.1

Edited by MitSuig
Link to comment
Share on other sites

  • 4 weeks later...

uma duvida, nessa parte aqui $db = "DATABASE"; /* DB */

tenho q colocar exemplo: "otserv.sql" ou só o nome sem o .sql??

 

sem .sql

 

igual ta no db name do config lua

Link to comment
Share on other sites

  • 1 month later...

Caras, to com um erro assim, criei a conta no pagseguro de Compra ''a normal'', porem na parte do tutorial de gerar o TOKEN, nao mostra nada, e a imagem do tutorial sumiu tambem... alguem me ajuda ai!!

 

* segunda duvida, como faço pra sacar este dinheiro???

 

abraços!

Link to comment
Share on other sites

×
×
  • Create New...