• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Paypal IPN Problems

Canadian
Loyal Member
Joined
Dec 4, 2007
Messages
1,936
Reaction score
96
zVdnW - Paypal IPN Problems - RaGEZONE Forums

Does anyone have any idea why I would be receiving this e-mail?

I'm using a script for Paypal that I found.

P.S. The script works fine, and the payment goes through fine. But then I receive this e-mail after.

PHP:
<?php
include('includes/config.php');
include('includes/functions.php');

    $invoiceid = clean($_GET['invoiceid']);

    $query = mysql_query("SELECT * FROM `orders` WHERE `invoiceid` = '$invoiceid'");
        while($row = mysql_fetch_assoc($query)) {
            $totalcost = $row['totalcost'];
            $email = $row['email'];

// PayPal settings
$paypal_email = 'myemailgoeshere@hotmail.com';
$return_url = 'rsgp.php';
$cancel_url = 'rsgp.php';
$notify_url = 'rsgp.php';
$item_number = 1;
$item_name = 'Runescape Gold';
$item_amount = $totalcost;

}

    $qry = mysql_query("UPDATE `orders` SET `complete` = '1' WHERE `invoiceid` = '$invoiceid'");

// Check if paypal request or response
if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"])){

    // Firstly Append paypal account to querystring
    $querystring .= "?business=".urlencode($paypal_email)."&";    
    
    // Append amount& currency (£) to quersytring so it cannot be edited in html
    
    //The item name and amount can be brought in dynamically by querying the $_POST['item_number'] variable.
    $querystring .= "item_name=".urlencode($item_name)."&";
    $querystring .= "amount=".urlencode($item_amount)."&";
    
    //loop for posted values and append to querystring
    foreach($_POST as $key => $value){
        $value = urlencode(stripslashes($value));
        $querystring .= "$key=$value&";
    }
    
    // Append paypal return addresses
    $querystring .= "return=".urlencode(stripslashes($return_url))."&";
    $querystring .= "cancel_return=".urlencode(stripslashes($cancel_url))."&";
    $querystring .= "notify_url=".urlencode($notify_url);
    
    // Append querystring with custom field
    //$querystring .= "&custom=".USERID;
    
    // Redirect to paypal IPN
    echo '<meta http-equiv="REFRESH" content="0;url=https://paypal.com/cgi-bin/webscr' . $querystring . '">';
    exit();

}else{
    
    // Response from Paypal

    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}',$value);// IPN fix
        $req .= "&$key=$value";
    }
    
    // assign posted variables to local variables
    $data['item_name']            = $_POST['item_name'];
    $data['item_number']         = $_POST['item_number'];
    $data['payment_status']     = $_POST['payment_status'];
    $data['payment_amount']     = $_POST['mc_gross'];
    $data['payment_currency']    = $_POST['mc_currency'];
    $data['txn_id']                = $_POST['txn_id'];
    $data['receiver_email']     = $_POST['receiver_email'];
    $data['payer_email']         = $_POST['payer_email'];
    $data['custom']             = $_POST['custom'];
        
    // post back to PayPal system to validate
    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    
    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);    
    
    if (!$fp) {
        // HTTP ERROR
    } else {    

        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            if (strcmp($res, "VERIFIED") == 0) {
            
                // Used for debugging
                //@mail("you@youremail.com", "PAYPAL DEBUGGING", "Verified Response<br />data = <pre>".print_r($post, true)."</pre>");
                        
                // Validate payment (Check unique txnid & correct price)
                $valid_txnid = check_txnid($data['txn_id']);
                $valid_price = check_price($data['payment_amount'], $data['item_number']);
                // PAYMENT VALIDATED & VERIFIED!
                if($valid_txnid && $valid_price){                
                    $orderid = updatePayments($data);        
                    if($orderid){                    
                        // Payment has been made & successfully inserted into the Database                                
                    }else{                                
                        // Error inserting into DB
                        // E-mail admin or alert user
                    }
                }else{                    
                    // Payment made but data has been changed
                    // E-mail admin or alert user
                }                        
            
            }else if (strcmp ($res, "INVALID") == 0) {
            
                // PAYMENT INVALID & INVESTIGATE MANUALY! 
                // E-mail admin or alert user
                
                // Used for debugging
                //@mail("you@youremail.com", "PAYPAL DEBUGGING", "Invalid Response<br />data = <pre>".print_r($post, true)."</pre>");
            }        
        }        
    fclose ($fp);
    }    
}
?>
 

Attachments

You must be registered for see attachments list
Last edited:
Pee Aitch Pee
Joined
Mar 30, 2011
Messages
630
Reaction score
422
PHP:
$return_url = 'rsgp.php';
$cancel_url = 'rsgp.php';
$notify_url = 'rsgp.php';

I believe that has to be your full website URL.

PHP:
$return_url = 'http://site.com/rsgp.php';
$cancel_url = 'http://site.com/rsgp.php';
$notify_url = 'http://site.com/rsgp.php';
 
Back
Top