tell_not_null: Corrigindo PagSeguro

14/12/2007 0 Comments

Este é o script que espero que consigam entender e mudar o que for necessário.. no final onde você vai mudar o domínio, lembre também de mudar o nome da pasta do WHMCS.. no nosso exemplo utilizamos ‘billing’
<?
function tep_not_null($value) {
if (is_array($value)) {
if (sizeof($value) > 0) {
return true;
} else {
return false;
}
} else {
if (($value != ”) && ($value != ‘NULL’) && (strlen(trim($value)) > 0)) {
return true;
} else {
return false;
}
}
}
function whmcs_query($query){
$host = “localhost”;
$dbname = “SEU BANCO DE DADOS DO WHMCS“;
$user = “USUARIO DO BANCO“;
$pass = “SENHA DO BANCO“;
$conn = mysql_connect($host, $user, $pass) or die(‘Error connecting to database, reason: ‘ . mysql_error());
$db = mysql_select_db($dbname, $conn);
// Perform Query to Database
$sql_result = mysql_query($query, $conn) or die(‘Error performing database query: ‘. mysql_error());
// Close Database Connection
mysql_close($conn);
return $sql_result;
}
//DEFINE O LOGIN E SENHA PARA CONEXÃO COM O BANCO DE DADOS
$ConnLocal = “localhost”;
$ConnLogin = “USUARIO DO BANCO DE DADOS PARA OUTROS REGISTROS“;
$ConnSenha = “SENHA DO BANCO DE DADOS PARA OUTROS REGISTROS“;
$ConnDatabase = “BANCO DE DADOS PARA OUTROS REGISTROS“;
// CONECTA-SE COM O BANCO DE DADOS MySQL
$Conn = mysql_connect($ConnLocal, $ConnLogin, $ConnSenha) or print (‘Não foi possível conectar<br />’ . mysql_error());
$db2 = mysql_select_db($ConnDatabase, $Conn) or print(mysql_error());
// RECEBE O POST ENVIADO PELA PagSeguro E ADICIONA OS VALORES PARA VALIDAÇÃO DOS DADOS
$PagSeguro = ‘Comando=validar’;
$PagSeguro .= ‘&Token=SEU TOKEN AQUI‘;
$Cabecalho = “”;
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$PagSeguro .= “&$key=$value”;
}
if (function_exists(‘curl_exec’))
{
//Prefira utilizar a função CURL do PHP
//Leia mais sobre CURL em: http://us3.php.net/curl

$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;
}
// ENVIA DE VOLTA PARA A PagSeguro OS DADOS PARA VALIDAÇÃO
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);
$resp = curl_exec($ch);
if (!tep_not_null($resp))
{
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;
// Verifica se o status da transação está VERIFICADO
if (strcmp ($res, “VERIFICADO”) == 0)
{
$confirma=true;
break;
}
}
fclose ($fp);
}
else
{
echo “$errstr ($errno)<br />\n”;
// ERRO HTTP
}
}
if ($confirma)
{
// RECEBE OS DADOS ENVIADOS PELA PagSeguro E ARMAZENA EM VARIÁVEIS
//Selecione aqui todos os parâmetros enviados pela PagSeguro
$TransacaoID = $_POST[‘TransacaoID’];
$Referencia = $_POST[‘Referencia’];
$StatusTransacao = $_POST[‘StatusTransacao’];
$CliNome = $_POST[‘CliNome’];
$NumItens = $_POST[‘NumItens’];
$ProdValor = $_POST[‘ProdValor_1’];
$idcliente = whmcs_query(“select userid from tblinvoices where id=’$Referencia'”);
$row = mysql_fetch_row($idcliente);
$ic = $row[0];
$hora = date(‘Y-m-d H:i:s’);
$resultjh = whmcs_query(“select transid from tblaccounts where transid=’$TransacaoID'”);
whmcs_query(“insert into tblaccounts (userid,gateway,date,description,amountin,fees,amountout,transid,invoiceid) values (‘$ic’,’brpay’,’$hora’,’Registro de transação’,’0.00′,’0.00′,’0.00′,’$TransacaoID’,’$Referencia’)”);
if ($StatusTransacao==”Completo” || $StatusTransacao==”Aprovado” ) {
$ProdValor_MB = str_replace(“.”, “”, $ProdValor);
$ProdValor_MB = str_replace(“,”, “.”, $ProdValor_MB);
$ProdValor_MB = number_format($ProdValor_MB, 2, ‘.’, ”);
$r45 = whmcs_query(“select status from tblinvoices where id=’$Referencia'”);
$row=mysql_fetch_row($r45);
if($row[0]!=”Paid”){
$strcurl = “username=LOGIN DE ADMIN DO WHMCS AQUI&password=SENHA DO LOGIN DE ADMIN DO WHMCS EM MD5 AQUI&action=addinvoicepayment&invoiceid=$Referencia&transid=$TransacaoID&amount=$ProdValor_MB&fees=0.00&gateway=brpay”;
$sessions = curl_init();
curl_setopt($sessions,CURLOPT_URL,’http://www.SEU DOMINIO.COM/billing/includes/api.php’);
curl_setopt($sessions, CURLOPT_POST, 1);
curl_setopt($sessions,CURLOPT_POSTFIELDS,”$strcurl”);
curl_exec($sessions);
curl_close($sessions);
if (curl_errno($sessions)) {
$men = curl_error($sessions);
}
}
$SQL = “INSERT INTO TransacoesPagSeguro (” .
“TransacaoID, ” .
“Referencia, ” .
“StatusTransacao, ” .
“CliNome, ” .
“NumItens” .
“) VALUES (” .
“” .
“‘” . $TransacaoID . “‘, ” .
“‘” . $Referencia . “‘, ” .
“‘” . $StatusTransacao . “‘, ” .
“‘” . $CliNome . “‘, ” .
“‘” . $NumItens . “‘” .
“)”;
$Executa = mysql_query($SQL) or print(mysql_error());
}
else
{
if (strcmp ($res, “FALSO”) == 0)
{
// LOG para investigação manual
}
}
}
// FECHA A CONEXÃO
mysql_close($Conn);
?>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.