PayPal IPN验证停止工作

4
通过IPN API处理PayPal支付的网站今天停止工作了。我使用PayPal提供的示例php脚本来处理IPN。调试后,我发现它缺少确认付款通知请求后收到的VERIFIED响应,也没有收到INVALID响应。
最终,在添加代码跟踪响应后,我发现实际响应有一个尾随的空格。这可能是原因。
if (strcmp ($res, "VERIFIED") == 0)

不会触发。在此之前我添加了。
$res=trim($res);

事情似乎已经恢复正常,但我想知道今天是否还有其他人遇到了这种情况。 (我不确定正在添加的确切字符,但我只知道修剪响应可以解决问题。)


如果修剪可以解决问题,那么字符中有空格。 - Marc B
Marc,如果 $res 是“VERIFIED”,那么 trim 不会修复它吗? - tru7
没错,就是这样。如果通过 trim 运行 $res 可以“修复”问题,那么 $res 中有(/曾经有)空格。 - Marc B
啊!对,我想我有点累了 :-) - tru7
是的,我们的脚本今天也挂了。打算尝试这个修复方法。我错过了API变更的备忘录吗?什么鬼? - Phil Glau
1
$res 后面的该死的空格让我浪费了 24 小时的调试时间。PayPal 怎么能如此无能,提供这个 strcmp() 示例代码却没有 trim(),然后又不能确保他们的服务器响应是干净的。 - adrianTNT
1个回答

1

我也遇到了同样的问题。从2013年7月7日星期日开始,直到今天我们才注意到。很多交易记录都丢失了。感谢Paypal告诉我们!

像上面提到的那样修剪$res可以暂时解决我的IPN脚本问题。但是我的PDT脚本也有问题。该脚本使用strcmp在数组$lines中查找响应消息。以前它是:

if (strcmp ($lines[0], "SUCCESS") == 0){}

但是在检查数组后,似乎响应消息现在位于$lines[1]。因此,我不得不更新以下内容才能使其正常工作。

if (strcmp ($lines[1], "SUCCESS") == 0){}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接