Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2016, 14:55
sdantuoni
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Pregunta Problema con IPN Paypal

Buenas tardes chicos, consegui un codigo ya hecho de ipn paypal con el cual deberia conseguir acreditarle coins a el user que compre x cantidad, pero hay un problema y es que no funciona. Intente hacerlo yo mismo, pero no pude. Intente pedir ayuda para hacerlo aquí pero solo respondieron un enlace de paypal el cual no entiendo nada! Y por eso ahora les vengo a pedir si pueden revisar el codigo y decirme si configure algo mal, almenos con el IPN simulator de paypal no me esta funcionando

Código PHP:
<?php
include 'logger.php';
include 
'paypalipnconfig.php';
include 
'mysql.class.php';
include 
'mssql.class.php';

$req 'cmd=' urlencode('_notify-validate');
 
foreach (
$_POST as $key => $value) {
    
$value urlencode(stripslashes($value));
    
$req .= "&$key=$value";
}
 
 
$ch curl_init();
curl_setopt($chCURLOPT_URL'https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
curl_setopt($chCURLOPT_POSTFIELDS$req);
curl_setopt($chCURLOPT_SSL_VERIFYPEER1);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_HTTPHEADER, array('Host: www.paypal.com'));
$res curl_exec($ch);
curl_close($ch);
 
 
// assign posted variables to local variables
$item_name $_POST['item_name'];
$item_number $_POST['item_number'];
$payment_status $_POST['payment_status'];
$payment_amount $_POST['mc_gross'];
$payment_currency $_POST['mc_currency'];
$txn_id $_POST['txn_id'];
$receiver_email $_POST['receiver_email'];
$payer_email $_POST['payer_email'];

$account $_POST['custom'];
if(
$account == 0)
    
$acount 'NO ACCOUNT';
 
$buff sprintf("%s\t%s\t\$%0.2f\t%s\t%s\t%s"$txn_id$payment_status$payment_amount$receiver_email$payer_email$account);
$coins_sent 0;
 
if (
strcmp ($res"VERIFIED") == 0
{
    
// create our db connections
    
$db_mysql = new mysql();
    
$db_mysql->connect();

    
$db_mssql = new mssql();
    
$db_mssql->connect();

    
// check the payment_status is Completed
    
if($payment_status == 'Completed')
    {

        
// check that txn_id has not been previously processed
        
$r $db_mysql->query("SELECT txn_id FROM paypal_logs WHERE txn_id='".$txn_id."';");

        if(
mysql_num_rows($r) == 0)
        {
            
// check that receiver_email is your Primary PayPal email
            
if($receiver_email == PAYPAL_EMAIL)
            {
                
// check that payment_amount/payment_currency are correct
                
$validpackage false;
                for(
$i 0$i count($paypal_packages); ++$i)
                {
                    if(
$paypal_packages[$i][0] == $payment_amount && $payment_currency == CURRENCY)
                    {
                        
$validpackage true;
                        break;
                    }
                }

                
// process payment if valid package
                
if($validpackage)
                {
                    
dbg_log('account = '.$account);

                    
$r $db_mssql->query("SELECT id FROM cuenta WHERE id='".$account."';");

                    if(
mssql_num_rows($r))
                    {
                        
$user_no mssql_fetch_array($r);

                        
mssql_select_db('samp_roleplay');
                        
$r $db_mssql->query("UPDATE cuenta SET creditos = creditos + ".$paypal_packages[$i][1]." WHERE id='".$user_no[0]."';");

                        
// Added coins succesfully!
                        
if($r)
                            
$coins_sent 1;
                        else
                            
dbg_log('ERROR SENDING COINS: '.$buff);
                    }
                    else
                        
dbg_log('ACCOUNT NOT FOUND: '.$buff);

                    
// Add record to MySQL
                    
$db_mysql->query("INSERT INTO paypal_logs VALUES ('".$txn_id."',".$payment_amount.",'".$payer_email."','".$account."',".$paypal_packages[$i][1].",".$coins_sent.",CURRENT_TIMESTAMP);");

                    }
                else
                    
dbg_log('INVALID PACKAGE: '.$buff);
            }
            else
                
dbg_log('INVALID EMAIL: '.$buff);
        }
        else
            
dbg_log('DUPLICATE IPN: '.$buff);
    }
    
}
else if (
strcmp ($res"INVALID") == 0) {
    
// log for manual investigation
     
dbg_log('INVALID IPN: '.$buff);
}

?>
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]