Bom, pra quem não conhece, o script é disponibilizado pelo próprio pagseguro, só fiz a conexão e adaptar para o nosso uso e + uma tabela de relatórios com listagem simples...
Primeiramente, rode o codigo sql
Código HTML:
USE [MuOnline]
GO
CREATE TABLE [dbo].[PagSeguro](
[TransacaoID] [varchar](36) NOT NULL,
[TipoPagamento] [varchar](50) NOT NULL,
[CliEmail] [varchar](50) NOT NULL,
[Valor] [text] NOT NULL,
[Nome] [varchar](10) NOT NULL,
[datahora] [datetime] NULL
)
Criem os arquivos:
comprar.php
retorno.php
listar.php
config.php
comprar.php
Código HTML:
<? require('config.php'); ?><center><form target="pagseguro" method="post"
action="https://pagseguro.uol.com.br/checkout/checkout.jhtml">
<input type="hidden" name="email_cobranca"
value="<?=EMAIL?>" />
<input type="hidden" name="tipo" value="CBR" />
<input type="hidden" name="moeda" value="BRL" />
<input type="hidden" name="item_id" value="1"/>
<p><font size="2"> Digite seu Login. </font></p>
<input type="text" name="item_descr"/>
<p><font size="2"> Informe o Valor Desejado. </font></p>
<input type="hidden" name="item_quant" value="1"/>
<select name="item_valor">
<option value="10,00">10 R$</option>
<option disabled>->100 WCoin's</option>
<option value="20,00">20 R$</option>
<option disabled>->220 WCoin's</option>
<option value="30,00">30 R$</option>
<option disabled>->340 WCoin's</option>
<option value="40,00">40 R$</option>
<option disabled>->460 WCoin's</option>
<option value="50,00">50 R$</option>
<option disabled>->580 WCoin's</option>
<option value="100,00">100 R$</option>
<option disabled>->1.200 WCoin's</option>
<option value="200,00">200 R$</option>
<option disabled>->2.500 WCoin's</option>
</select><br /><br />
<input type="hidden" name="frete" value="0" />
<input type="hidden" name="peso" value="0" />
<input type="image" value="Comprar" class="button" name="submit"
src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/pagamentos/209x48-comprar-azul-assina.gif"
alt="Pague com PagSeguro - é rápido, grátis e seguro!" />
</form></center>
retorno.php
Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php
require('config.php');
class PagSeguroNpi {
private $timeout = 20; // Timeout em segundos
public function notificationPost() {
$postdata = 'Comando=validar&Token='.TOKEN;
foreach ($_POST as $key => $value) {
$valued = $this->clearStr($value);
$postdata .= "&$key=$valued";
}
return $this->verify($postdata);
}
private function clearStr($str) {
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}
private function verify($data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = trim(curl_exec($curl));
curl_close($curl);
return $result;
}
}
$connect = mssql_connect(MSSQL, USER, PASS) or die('Não foi possível conectar com o servidor MSSQL');
if (count($_POST) > 0) {
// POST recebido, indica que é a requisição do NPI.
$npi = new PagSeguroNpi();
$result = $npi->notificationPost();
$transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';
$Status = $_POST['StatusTransacao'];
$Transacao = $_POST['TransacaoID'];
$TipoPagamento = $_POST['TipoPagamento'];
$CliEmail = $_POST['CliEmail'];
date_default_timezone_set('America/Sao_Paulo');
$datahora = date("Y/m/d H:i:s");
//update cash
$Nome = $_POST['ProdDescricao_1'];
$Valor = round($_POST['ProdValor_1']);
if ($result == "VERIFICADO") {
if ($Status == "Aprovado") {
//insert payment
switch($Valor)
{
case 10 : $Cash = 0; break;
case 20 : $Cash = 20; break;
case 30 : $Cash = 40; break;
case 40 : $Cash = 60; break;
case 50 : $Cash = 80; break;
case 100 : $Cash = 200; break;
case 200 : $Cash = 500; break;
}
$Saldo = $Valor + $Cash;
mssql_query("update ".CASH_DB.".dbo.".CASH_TB." set ".CASH_CO_CASH." = ".CASH_CO_CASH." + {$Saldo} WHERE ".CASH_CO_CONTA." = '{$Nome}'");
mssql_query("INSERT into ".PAG_DB.".dbo.".PAG_TB." (TransacaoID, datahora, TipoPagamento, CliEmail, Valor, Nome) VALUES ('{$Transacao}','{$datahora}','{$TipoPagamento}','{$CliEmail}','{$Valor}','{$Nome}')");
}
} else if ($result == "FALSO") {
//O post não foi validado pelo PagSeguro.
} else {
//Erro na integração com o PagSeguro.
}
} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
?>
<?php
}
?>
listar.php
Código HTML:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<center>
<?php
require('config.php');
//Executa a consulta
$connect = mssql_connect(MSSQL, USER, PASS) or die('Não foi possível conectar com o servidor MSSQL');
echo "<table bgcolor=\"#666666\" width=\"70%\" border=\"0\"><tr>
<td width=\"5%\"><strong>#</strong></td>
<td width=\"10%\"><strong>Nome</strong></td>
<td width=\"10%\"><strong>Valor</strong></td>
<td width=\"20%\"><strong>Dara e Hora</strong></td>
<td width=\"15%\"><strong>Email</strong></td>
<td width=\"15%\"><strong>Tipo de Pagamento</strong></td>
<td width=\"15%\"><strong>ID da Transação</strong></td>
</tr></table>\n";
$Query = mssql_query("SELECT * FROM ".PAG_DB.".dbo.".PAG_TB." ORDER BY datahora DESC");
for($WzAG = 0; $WzAG < mssql_num_rows($Query); $WzAG++)
{
$Ranking = $WzAG+1;
$Load = mssql_fetch_array($Query);
$nome = $Load["Nome"];
$valor = $Load["Valor"];
$datahora = $Load["datahora"];
$email = $Load["CliEmail"];
$pagamento = $Load["TipoPagamento"];
$transacao = $Load["TransacaoID"];
echo "<table width=\"70%\" border=\"0\"><tr>
<td width=\"5%\"><strong>".$Ranking."</strong></td>
<td width=\"10%\">".$nome."</td>
<td width=\"10%\">".$valor."</td>
<td width=\"20%\">".$datahora."</td>
<td width=\"15%\">".$email."</td>
<td width=\"15%\">".$pagamento."</td>
<td width=\"15%\">".$transacao."</td>
</tr></table>\n";
}
?></center>
</body>
</html>
config.php
Código HTML:
<?php
define("MSSQL","127.0.0.1");
define("USER","sa");
define("PASS","minhasenha");
define("CASH_DB","MuOnline");
define("CASH_TB","MEMB_INFO");
define("CASH_CO_CONTA","memb___id");
define("CASH_CO_CASH","CASH");
define("EMAIL","[email protected]");
define("Pag_DB","MuOnline");
define("Pag_TB","PagSeguro");
define("TOKEN","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
?>
Para pegar o token, vá na sua conta pagseguro, a esquerda va em "Integração", selecione "Token de Segurança" e click em "Gerar Novo Token". Copie o codigo gerado e cole na sua config.
Pra configurar a pagina em que o pagseguro deve retornar os dados va em "Integrações" novamente e selecione "Pagina de Redirecionamento" mude a radiobox pra ativado e cole o link direto da sua pagina de retorno.php, e click em ativar.
Não irei dar suporte nenhum...