Paypal IPN在沙盒上返回已验证,但在直播中无效



所以我一直在使用贝宝和沙箱模式,一切都很好。然而,当我用真金白银转到live paypal时,IPN返回INVALID。

我在这里使用的是脚本的一个版本(https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt)根据我的需要进行了修改,只有不同的部分是数据库交互等

我在这里发现了这个问题(http://www.hebtech.co.uk/blog/paypal-ipn-invalid-on-live-server-but-valid-on-test-server-fixed/),这似乎是我遇到的问题,基本上说这与地址的可选第二行中的回车有关(在沙箱中的测试帐户上,没有填写)。但是主帖子中的解决方案和评论中的另一个解决方案不起作用,如下

$value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}',$value);

$value = preg_replace('/(.*?)(%0D%0A|%0A)(.*)/i','${1}%0D%0A${3}',$value);

有什么想法吗?把我逼疯了。它并没有停止付款,但它只是意味着在网站上,必须手动将状态更改为已付款。

你可以试试这个:

$value = preg_replace('/%0D%0A|%0A/i','%0D%0A',$value);

我在自定义字段中的字符;也有问题。查看您发送给PayPall的所有字段。还要在所有字段中检查任何不是A-Z或0-9的字符。

您可以尝试的最后一件事是在语言编码选项中设置字符集:https://www.paypal.com/cgi-bin/webscr?cmd=_profile-的语言编码

最新更新