我的主机上没有收到IPN(HTTP响应代码为NULL)

时间:2014-06-25 21:09:57

标签: php paypal paypal-ipn

我无法在我的服务器上收到任何IPN通知,检查了IPN历史记录页面,我在那里看不到任何HTTP响应代码。一个月前,它工作得很好,然后突然停了下来。我询问了托管人员,他们说没有防火墙阻止任何paypal ip地址(https://ppmts.custhelp.com/app/answers/detail/a_id/92/kw/IPN/related/1)。

我还检查了cPanel的原始访问日志,我找不到对脚本“test-ipn.php”的任何请求。如果我通过浏览器手动运行这个脚本,我在原始访问日志上看到它,但是当我尝试使用模拟器时,它没有显示,这看起来像Paypal根本没有发布。

然而,我在不同的主机上尝试使用不同的网址来测试IPN模拟器并在那里工作,但不能在当前主机上工作。

有什么想法吗?

Plz建议,thx!

以下是“IPN历史记录”页面的屏幕截图:http://www.247autohits.com/paypal.jpg

更新

问题仍然存在,重启apache后不断回来。 我做了一些研究,发现了一个线索,即Firewall端或mod_sec的HTTP-POST有问题。因为,我使用此代码通过PHP cURL发送HTTP POST来测试我的主机,并使用HTTP CODE 0进行响应。

然后我重新启动Apache(临时修复ipn)并重新运行此代码并返回正确的响应代码200.

<?php 
$ch = curl_init("http://www.xxxxxx.com/");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('testing paypal sandbox'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Paypal Sandbox Test Localhost'));
$res = curl_exec($ch);

if(!curl_errno($ch)){
$info = curl_getinfo($ch);
echo '<div>Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'].'</div>';
}

echo "<div><strong>".strval(curl_getinfo($ch, CURLINFO_HTTP_CODE))."</strong></div>";
?>

我认为HTTP-POST受到防火墙或mod_sec的限制,不是在初始级别,而是在一段时间之后,或者在某些事情被调用/警告时,可能会阻止某些攻击或类似的攻击。<​​/ p>

0 个答案:

没有答案