php - Paypal IPN 总是 "INVALID"- 字符集相关?

标签 php curl paypal paypal-ipn

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

我正在使用 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,问题在于使用 urldecodeurlencode 函数而不是 rawurlencoderawurldecode。如果您从请求中删除日期值(例如,将其设置为 null),事情应该会起作用,因为它可能有一个时区标识符(如 +0100 GMT)。当使用默认的 urldecodeurlencode 函数时,+ 符号被解释为一个空格,这导致一个稍微改变的请求被发回验证,因此返回无效。

更详细的描述here .

关于php - Paypal IPN 总是 "INVALID"- 字符集相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19136996/

相关文章:

paypal - 网站作为Paypal支付的桥梁

PHP Curl 错误 35 - 同行报告不兼容或不受支持的协议(protocol)版本

javascript - Ajax 找不到 php 文件..为什么?

java - 使用 java 库设置摘要 http 请求

php - 将 curl stdout 捕获到 PHP 中的变量中

paypal - PayPal 的 "custom"变量必须是唯一的吗?

laravel - Payum - Laravel 4 的包。如何使用 Eloquent 而不是 FilesystemStorage 创建模型数据?

PHP - 在 MySQL 数据库中存储文本

php - file_get_contents 无法打开流 : HTTP request failed only for SPECIFIC web page

php - 多部分表单文件上传 POST PHP cURL