Ir para conteúdo
  • Cadastre-se

[Gesior] PagSeguro automático! (100% funcional)


Posts Recomendados

  • Administrador

a0V1R.png

 

Fala galerinha do TK, hoje vim trazer um script muito interessante e que tenho certeza que será muito útil para vários que estão atrás de um sistema de pagamento automático. Então, eu corri atrás desse script durante muito tempo, encontrei vários porém nenhum funcionava, sofri bastante para conseguir achar e não achei, então tive que pegar um e editar-lo para que ele funcionasse. Vamos ao script!

 

• Primeiramente vá em config/config.php e adicione isso dentro do arquivo:

// PagSeguro automatico by Matheus e Victor for TibiaKing.com
// Seu email cadastrado no PagSeguro
$config['pagseguro']['email'] = 'SEU E-MAIL DO PAGSEGURO';

// Nome do produto
$config['pagseguro']['produtoNome'] = 'Premium Points';

// Valor de cada ponto
// Exemplo de valores:
// 100 = R$ 1,00
// 250 = R$ 2,50
$config['pagseguro']['produtoValor'] = '100';

Atenção: Para pegar o seu token você precisará entrar nesse link logado em sua conta do PagSeguro, na URL de retorno selecione "Ativar" e bote a url http://seusiteaqui/retpagseguro.php agora clique em "Salvar". Agora um pouco mais embaixo tem o Token clique e "Gerar", pronto, o Token gerado você coloca na config.php!

 

• Agora vá na pasta do seu site e crie um arquivo chamado retpagseguro.php com isto dentro:

<?PHP
$host = "localhost"; /* HOST */
$user = "root"; /* USER */
$passwd = ""; /* PASSWORD */
$db = ""; /* DB */
$retorno_token = ''; // 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 = $_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> 

Faça as edições no retpagseguro.php com as informações da sua database no inicio do script

 

• Pronto, agora de novo na pasta do seu site crie um arquivo chamado donate.php com isto dentro:

<?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 .= '<br><br><b>Valores:</b><br>
1 Point = R$ 1,00<br>
10 Points = R$ 10,00<br>
20 Points = R$ 20,00<br>
E assim por diante...<br><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_valor_1" value="'. $config['pagseguro']['produtoValor'] .'">
<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 comprar</strong></th>
</tr>
<tr>
<td width="10%">Sua conta</td>
<td><strong>'.$account_logged->getCustomField("name").'</strong></td>
</tr>
<tr>
<td width="10%">Pontos</td>
<td>
<input name="item_quant_1" type="text" value="10" size="5" maxlength="5">
</td>
</tr>
<tr>
<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&sup1;:</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 } ?>'; } ?>

• Ok, para finalizar o script vá até a database do seu OTServ no phpMyAdmin clique na aba "SQL" e execute as seguintes querys:

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;

Prontinho galera, é isso ai, script finalizado... Agora você tem um script de entrega automática de points!

 

Créditos:

- Matheus (EU)

- Victor Fasano Raful

- Tatu Hunter

 

dm3o5y8.png

 
Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!?
Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também! :P
 
Editado por Erimyth (veja o histórico de edições)

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites
  • Respostas 110
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Aqui, não esta funcionando! não está entregando os points Automatico!!

Fala galerinha do TK, hoje vim trazer um script muito interessante e que tenho certeza que será muito útil para vários que estão atrás de um sistema de pagamento automático. Então, eu corri atrás dess

MATHEUS, eu te amo demais cara! Ja vi milhares de tutoriais, só o seu funfou! pra galera que ta vendo ai, podem fazer que funfa 100% vlw s2!

matheus good, congratulations on the site, I saw some that were not working, thank you!

~Charlie Brown Jr

Link para o post
Compartilhar em outros sites

matheus good, congratulations on the site, I saw some that were not working, thank you!

Thank you, but this site is brazilian and you too, so speak in portuguese here!

And if you want criticize, use the section: Atendimento Geral

:facepalm:

Link para o post
Compartilhar em outros sites

Vlw Gordo :ha:

Você já me viu? Eu te dei essa intimidade toda? Não sabia... ¬¬

Tópico

Valeu pessoal!

Link para o post
Compartilhar em outros sites

aqui nao funcionou, nao abre o http://xxxxx.xxxx/retpagseguro.php da esse erro aqui

Erro no servidor

O site encontrou um erro ao recuperar http://xxxxxxxxx/retpagseguro.php Ele pode estar em manutenção ou configurado incorretamente.

Veja algumas sugestões:

Editado por joaopp (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

aqui nao funcionou, nao abre o http://xxxxx.xxxx/retpagseguro.php da esse erro aqui

Erro no servidor

O site encontrou um erro ao recuperar http://xxxxxxxxx/retpagseguro.php Ele pode estar em manutenção ou configurado incorretamente.

Veja algumas sugestões:

Velho, namoral, se mata.

Você quer que pegue: http://xxxxxxxxx/retpagseguro.php ? Você tem que configurar né mano :facepalm:

horizontallogowhite1.png

Link para o post
Compartilhar em outros sites

eu nao botei meu site ai, coloquei xxxxxx no lugar voces nao precisam saber o site né, eu nao so burro também -.- mas se quiser saber o site é kingstyller.servegame.com/retpagseguro.php e não está abrindo, ja botei la na pasta certinho, mas nao sei porque nao abre

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Mais então c eu quiser fazer uma promoção de points como fica ? :x

          Procuro Equipe para projeto sério com remuneração, maior necessidade Programador em C\C++.

Link para o post
Compartilhar em outros sites

No config.php vai ter uma parte de Preço, Valor, não sei direito vai estar 100 = 1, se você alterar pra 200 = 2 ou seja double points, 150 = 50% a mais de pontos entendeu?

Link para o post
Compartilhar em outros sites

Mais então c eu quiser fazer uma promoção de points como fica ? :x

Se for uma promoção de double points, vá até o arquivo retpagseguro.php em:

$points = $prem['premium_points'] + $quantidade;
E substitua por:
$points = $prem['premium_points'] + $quantidade*2;

Link para o post
Compartilhar em outros sites

Se for uma promoção de double points, vá até o arquivo retpagseguro.php em:

$points = $prem['premium_points'] + $quantidade;
E substitua por:
$points = $prem['premium_points'] + $quantidade*2;

Ahh Vlw :D Mais uma por exemplo de R$25,00 25% a mais R$50,00 50% R$100,00 Dobro sabe ? :c sem chance disso néh?

          Procuro Equipe para projeto sério com remuneração, maior necessidade Programador em C\C++.

Link para o post
Compartilhar em outros sites

Ficaria assim:

$points = $prem['premium_points'] + $quantidade + $quantidade/2;

Mas eu não sei se vai funcionar.

Link para o post
Compartilhar em outros sites

táh :) num entendi mt bem mais num manjo de php mesmo kk vo vêr uns tutos aqui Vlw :)

          Procuro Equipe para projeto sério com remuneração, maior necessidade Programador em C\C++.

Link para o post
Compartilhar em outros sites

fiz a doação aprovou e nao ativou os points nao

e quando o site do pagseguro te retorna para "http://seusiteaqui/retpagseguro.php"

fica uma pagina em branco.. e eu configurei certo o ip do site..

alguém conseguiu fazer esse script funcionar?

e outra coisa não tem como configurar pra por ex

10$ = 15 points

20$ = 30 points

30$ = 45 points

algo assim n ?

Editado por execlipse (veja o histórico de edições)

[email protected] / (37)9 98720037

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo