Ir para conteúdo

Posts Recomendados

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

Editado por MitSuig
Link para o comentário
https://xtibia.com/forum/topic/237471-gesior-pagseguro-autom%C3%A1tico-tibia-coins/
Compartilhar em outros 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 para o comentário
https://xtibia.com/forum/topic/237471-gesior-pagseguro-autom%C3%A1tico-tibia-coins/#findComment-1676081
Compartilhar em outros 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 para o comentário
https://xtibia.com/forum/topic/237471-gesior-pagseguro-autom%C3%A1tico-tibia-coins/#findComment-1678690
Compartilhar em outros sites

×
×
  • Criar Novo...