小编Mil*_*efe的帖子

IPN 验证返回 INVALID,因为 PayPal 在 POST 中向 IPN 侦听器发送不正确的字符集

以下所有内容均位于 PayPal 沙箱中:

\n\n

我有一个 PayPal 订阅/定期付款设置,它使用 IPN 侦听器作为在我的网站数据库中创建或更新用户订阅的最后一步。但是,当我收到来自 paypal 的 POST 数据并将其发回进行验证时,我收到的唯一响应是“无效”。

\n\n

我知道我的代码正确地将 POST 数据发送回 PayPal,因为当我通过使用 PayPal\ 上看到的“IPN Message”值硬编码 POST 数据字符串来模仿正确的 POST 到监听器时,我会得到“VERIFIED”响应的 IPN 历史页面。

\n\n

因此,我将 POST 数据发送回 PayPal 进行最终验证的代码有效,并且我的 IPN 侦听器正在接收交易的 POST 变量。我的 IPN 侦听器创建的发送回 PayPal 的 POST 数据字符串与 PayPal 期望接收的 POST 数据字符串之间存在差异。

\n\n

PayPal 规定,IPN 侦听器必须发回其收到的 POST 数据,其值、顺序和编码与 PayPal 发送的数据相同。

\n\n

我认为问题是编码问题,因为在 PayPal POST 中,“charset”的值为“windows-1252”,应该是“UTF-8”。但是,“form_charset”的正确值是“UTF-8”。

\n\n

我已将卖家 PayPal 个人资料上的两个输入字段的编码设置为 UTF-8,并在初始 PayPal 表单/按钮中隐藏了一个名为“charset”和值“UTF-8”的输入。请告诉我是否有其他方法来设置我错过的编码。

\n\n

PayPal 声称要发送的 POST 数据字符串的一部分包括“¬ify_version=3.8”,后跟更多变量。当我手动插入此字符串来测试我的代码时,“¬”在打印到页面时会转换为“\xc2\xac”,据我了解,这意味着正在使用的字符编码是“windows-1252”,因为“\xc2” \xac" 属于 windows-1252 字符集,但 "\xc2\xac" 不属于 UTF-8 字符集,因此如果使用 …

php paypal utf-8 url-encoding paypal-ipn

5
推荐指数
2
解决办法
2063
查看次数

标签 统计

paypal ×1

paypal-ipn ×1

php ×1

url-encoding ×1

utf-8 ×1