cancel
Showing results for 
Search instead for 
Did you mean: 

Who Me Too'd this topic

Who Me Too'd this topic

Options
MikeHt
New Community Member
Posted on

Hi

Several years ago I created an IPN listener (using PHP) based on a code sample that was provided by PayPal's Integration Guide(s).

It worked beautifully for years - and then stopped!

PayPal support say that the IPN is working and that my listener is correctly verifying the responses etc but it won't do what it used to do.

I have a feeling that PayPal have changed things and left my code behind.  I have looked on github but the example code they are giving does not make sense to me.

 

Please can someone help. I have copied my listener code below. Can someone please just tell me what is wrong and what I need to do.  This is driving me up the wall!

 

Thank you very much...

 

<!DOCTYPE html>
<html lang="en">
<head>
<title>Untitled Document</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>

<body>
<?
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';

foreach ( $_POST as $key => $value ) 
	{
    $value = urlencode( stripslashes( $value ) );
    $req .= "&$key=$value";
	}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Connection: close\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( trim( $res ), "VERIFIED" ) == 0 ) 
			{
            // 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' ];
            $first_name = $_POST[ 'first_name' ];

            if ( $payment_status == "Completed" ) 
				{
                // I have some PHP code here (irrelevant to the operation of this listener)
            	}
        	} else if ( strcmp( trim( $res ), "INVALID" ) == 0 ) 
			{
            // log for manual investigation
            // the code here is never activated either!
        	}
    	}
    fclose( $fp );
	}
?>
</body>
</html>

 

Who Me Too'd this topic