Curl / php来自PayPal IPN网址的空响应

问题描述 投票:1回答:2

[在过去几天中,我们的PayPal IPN已停止工作,并收到PayPal的空响应。服务器或我们的代码中没有任何更改。

尝试使用PayPal IPN url只是返回一个空响应。

$url = "https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

$data = curl_exec($ch);
curl_close($ch);

print $data;

以上代码应返回“ INVALID”,并且可以在我的本地主机和其他服务器上正常工作。将URL更改为PayPal以外的任何其他域也可以正常工作。

所以它似乎只收到了来自paypal.com的空响应

我想知道是否有人遇到了这个问题,或者可以指出希望解决的地方?

亲切的问候Musaffar

php curl paypal paypal-ipn
2个回答
0
投票

我也许会开始检查curl是否给您任何错误。在这种情况下,PHP为您提供curl_errno($ch)curl_error($ch),它们将返回一条消息或错误代码。

如果没有可疑之处。我也许会尝试验证您是否能够在服务器上的CLI中运行上述命令。 (需要对其进行SSH访问)

curl -H "User-Agent: ..." "https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate"

我希望这为您提供了一个良好的起点。如果这有帮助,或者您需要更多想法,请告诉我。

Edit#2:在作者的注释后:

cUrl确实返回错误:错误35,错误消息如下:

error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

在这种情况下,我猜您的系统已经过时,并且不支持来自Paypal的SSL密码。您可以尝试强制使用特定的TLS版本。截至目前,贝宝Web服务器仅支持TLS1.2或TLS1.3。这是强制的方法:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_3);

另外,@ Preston PHX在评论中提到了来自贝宝的此问题的很好参考:


0
投票

看来Paypal在周末进行了一些安全更改。自星期天以来,一些oscommerce用户已经收到类似的症状,结果是curl错误:

SSL证书问题:无法获取本地颁发者证书

在他们的情况下,这是由于本地证书副本仅具有Paypal证书,而没有根证书或中间证书,以及用于更新它的解决方案。

可以在以下位置找到工作证书:OSCOM Phoenix github

© www.soinside.com 2019 - 2024. All rights reserved.