我已经阅读了一百个关于这个问题的讨论,到目前为止没有一个有帮助。
我正在使用沙盒,经过多次挠头,我发现沙盒配置文件中的字符编码设置实际上并没有做任何事情(这真的很愚蠢,为了记录(,所以我一直在尝试找到另一种方法来做到这一点。我对在这种情况下如何处理字符编码的了解有限,因此我正在寻找一些防弹代码示例和/或解释会有所帮助。
我收到 IPN 请求,字符集参数是 windows-1252,而我网站标头中的字符集是 UTF8。我正在使用示例脚本PayPal提供 (https://developer.paypal.com/webapps/developer/docs/classic/ipn/ht_ipn/(,除了在 cURL 请求中使用沙盒 URL 外,没有任何更改,并且我总是收到无效。
Paypals 文档毫无用处,我通过 Google 找到的任何内容都没有帮助,所以有人可以告诉我为什么会失败吗?
如果您使用的是PHP,则问题在于使用urldecode
和urlencode
函数,而不是rawurlencode
和rawurldecode
。如果从请求中删除日期值(例如,将其设置为 null(,则应该可以正常工作,因为它可能具有时区标识符(如 +0100 GMT
(。使用默认urldecode
和urlencode
函数时,+
符号被解释为空格,这会导致发送回略微更改的请求进行验证,因此返回无效。
此处有更详细的描述。