Postado Outubro 20, 2015 9 anos 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'); 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("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: Certo agora crie um arquivo .php com o nome store e insira no mesmo os codes abaixo: <?phpif(!$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]'; //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 quiser usar outra item como moeda so alterar o ID.bom e isso pessoal qualquer duvida so postarCréditos:Natanael BeckmanTatu HunterJoffily Ferreira shop.lua testado no TFS 1.0/1.1 shop.lua Editado Outubro 20, 2015 9 anos por Mitsuig (veja o histórico de edições)
Postado Outubro 20, 2015 9 anos Seu tópico foi aprovado e movido para a seção correta!Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
Postado Abril 12, 2017 8 anos Está todo estranho a forma de código Da erro: http://meusite/input%20type=
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.