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