Freid001 Posted May 1, 2011 Share Posted May 1, 2011 Hi I am looking to create some IPN script for pay pal however my host blocks this function : fsockopen The IPN script will basicly updated player accounts with credits when people purchase them PAY PAL IPN: // PHP 4.1 // 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.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.sandbox.paypal.com', 80, $errno, $errstr, 30); // 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']; if (!$fp) { // HTTP ERROR } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { if ($payment_status=="Completed"){ if ($payment_amount==0.99&&$payment_currency=="GBP"){ $AD = 100; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==2.50&&$payment_currency=="GBP"){ $AD = 500; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==5.00&&$payment_currency=="GBP"){ $AD = 1000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==10.00&&$payment_currency=="GBP"){ $AD = 10000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==49.99&&$payment_currency=="GBP"){ $AD = 100000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } } else if (strcmp ($res, "INVALID") == 0) { // log for manual investigation } } fclose ($fp); } } So what I have basically done is remove the fsockopen as seen below: // PHP 4.1 // 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.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $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']; if ($payment_status=="Completed"){ if ($payment_amount==0.99&&$payment_currency=="GBP"){ $AD = 100; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==2.50&&$payment_currency=="GBP"){ $AD = 500; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==5.00&&$payment_currency=="GBP"){ $AD = 1000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==10.00&&$payment_currency=="GBP"){ $AD = 10000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } if ($payment_amount==49.99&&$payment_currency=="GBP"){ $AD = 100000; $AD2 = $credits + $AD; mysql_query("UPDATE Game SET Credits = '$AD2'WHERE user = '$update'"); } } if ($payment_status=="Failed"){ echo "Payment Failed!"; } if ($payment_status!=""){ echo "Error processing payment!"; }else { echo "No payment made"; } My question is this will this still work with paypal? I tried pay pal IPN sand box and it updates but im not sure weather the code needs this function fsockopen into send data back to paypal. Link to comment https://forums.phpfreaks.com/topic/235262-ipn-fsockopen/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.