PayPal IPN 始终“无效” - 字符集相关


Paypal IPN always "INVALID" - charset related?

我已经阅读了一百个关于这个问题的讨论,到目前为止没有一个有帮助。

我正在使用沙盒,

经过多次挠头,我发现沙盒配置文件中的字符编码设置实际上并没有做任何事情(这真的很愚蠢,为了记录(,所以我一直在尝试找到另一种方法来做到这一点。我对在这种情况下如何处理字符编码的了解有限,因此我正在寻找一些防弹代码示例和/或解释会有所帮助。

我收到 IPN 请求,字符集参数是 windows-1252,而我网站标头中的字符集是 UTF8。我正在使用示例脚本PayPal提供 (https://developer.paypal.com/webapps/developer/docs/classic/ipn/ht_ipn/(,除了在 cURL 请求中使用沙盒 URL 外,没有任何更改,并且我总是收到无效。

Paypals 文档毫无用处,我通过 Google 找到的任何内容都没有帮助,所以有人可以告诉我为什么会失败吗?

如果您使用的是PHP,则问题在于使用urldecodeurlencode函数,而不是rawurlencoderawurldecode。如果从请求中删除日期值(例如,将其设置为 null(,则应该可以正常工作,因为它可能具有时区标识符(如 +0100 GMT (。使用默认urldecodeurlencode函数时,+符号被解释为空格,这会导致发送回略微更改的请求进行验证,因此返回无效。

此处有更详细的描述。