paypal ipn listener feof(): 30 не является допустимым потоковым ресурсом

У меня есть скрипт слушателя PayPal IPN, написанный на php, который вызывает ошибки, он очень быстро заполняет мой лог-файл и приводит к сбою сервера.

Ошибка: listener feof(): 30 не является допустимым потоковым ресурсом

Я охотился за верхом и низом за последним примером прослушивателя IPN PayPal, но кажется, что PayPal не в состоянии привести такой пример.

Вот мой код:

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}
// Post back to PayPal to validate
$server = "ssl://www.paypal.com";
$port = 443;
$timeout = 30;

$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";  // www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";



$fp = fsockopen($server, $port, $errno, $errstr, $timeout);
$payment_status = $_POST['payment_status'];
$custom =  $_POST["custom"];
$txn_type = $_POST["txn_type"];

// Process validation from PayPal
if (!$fp) {

//error
echo "HTTP ERROR";

} else {

  // NO HTTP ERROR
  fputs($fp, $header . $req);

  while (!feof($fp)) {
      $res = trim(fgets ($fp, 1024));
      if (strcmp($res, "VERIFIED") == 0) {

   if ($payment_status == "Completed")
   {   
          //code to update database here
       }
      }
   }
}

Есть идеи, ребята?

1 ответ

Решение

Боже мой... Вот почему у вас есть cURL!

VerifyIPN() на GitHub

PS: купи мне выпить!

Другие вопросы по тегам