插件超时与IPN

时间:2016-03-05 16:01:29

标签: sockets paypal timeout paypal-ipn

首先让我说我不是真正的开发者。几年前我将下面的代码拼凑在一起,直到上周我才真正理解它。从上周开始我每次收到PayPal IPN时都会收到110连接超时套接字错误!

如果我直接在浏览器中访问该页面,我会得到以下内容

警告:fsockopen()[function.fsockopen]:无法连接到第37行的paypal_ipn.php5中的ssl://www.paypal.com:443(连接超时)

以下是我的paypal_ipn.php5中的代码,我们将不胜感激。

<?php     
error_reporting(E_ALL ^ E_NOTICE); 
$email = $_GET['ipn_email']; 
$header = ""; 
$emailtext = ""; 
$req = 'cmd=_notify-validate';

if(function_exists('get_magic_quotes_gpc'))
{
   $get_magic_quotes_exists = true;
}
foreach ($_POST as $key => $value)  
{
   if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1)
   {
      $value = urlencode(stripslashes($value));
   }
   else
   {
      $value = urlencode($value);
   }

   $req .= "&$key=$value";
}


// Post back to PayPal to validate new http 1.1
$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 .= "Content-Length: " . strlen($req) . "\r\n"; 
$header .="Connection: closer\n\r\n";


$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);     


if (!$fp)
{   
  mail("save10percent.net@gmail.com", "socket error!", "socket error!",    "$errno $errstr"); 
}

else
{ 

 fputs ($fp, $header . $req);


 while(!feof($fp))  
 {

    $res = fgets ($fp, 1024); 


    if(stristr($res, 'VERIFIED') !== FALSE)
    {
        //good payment process transaction
        //code removed to make my post smaller
    }  

    elseif(stristr($res, 'INVALID') !== FALSE)
    {       
        // If 'INVALID', send an email.             
        mail("save10percent.net@gmail.com", "Live-INVALID IPN", "Invalid    \n\n\n res = $res \n\n\n req= $req",$error_email);          
    }       
  }     
} 

fclose ($fp);   

?>

1 个答案:

答案 0 :(得分:0)

此套接字错误正在尝试通知您PayPal无法将您的SSL证书识别​​为有效,因此无法为您打开套接字。

从此代码段中可以看出,您已设置为1024加密,不再受支持。从2月29日开始,要求所有SSL证书必须支持SHA-256(2048)。这意味着您当前的SHA-128证书不再适用于PayPal的系统。如果您不管理您的Web服务器,您可以联系任何人将证书升级到PayPal支持的证书。

https://devblog.paypal.com/upcoming-security-changes-notice/#ssl