>使用PayPal的IPN模拟器开发时,您可能会遇到验证消息时返回“无效”的情况,无论您设置的编码或所有条件与匹配和有效。
>
PayPal开发人员团队以忽略所有查询而臭名昭著,并且文档很难阅读,因此调试这些问题非常困难,可能会花费您的数小时的时间。我什至到达了一个用于测试IPN模拟器的实时服务器,因为担心Ngrok在本地测试时出现了错误,甚至在端点上添加了证书以使HTTPS启动 - 没有骰子。最后,解决方案是 - 通常 - 简单但晦涩。
如果症状(失败)是由日期域引起的,则该症状是由时区域识别符引起的。但是,所有这些都是由PHP具有两个不同的URL编码 /解码功能的事实引起的:RAW和NON-RAW。
这是一个例子。
说我们在IPN模拟器中有一个日期:>
这是在听众的末端(在您的php代码中)到达:>
Fri Aug 19 2016 09:25:00 GMT+0100 (GMT Daylight Time)
登录后复制
substring GMT 0100是有问题的,因为php函数urldecode将其解释为一个空间,因此将其解码为:>
请注意,丢失了,变成了一个太空字符。Fri%20Aug%2019%202016%2009%3A25%3A00%20GMT+0100%20%28GMT%20Daylight%20Time%29
登录后复制
重新编码以将其发送回PayPal进行验证时,该验证会失败,因为该验证不再是字段中的值 - 丢失了。这是一个非常非常小的细节,在手工指示现场值时很难发现,但它在那里。根据PayPal文档,这足以使验证返回“无效”。
>
Fri Aug 19 2016 09:25:00 GMT 0100 (GMT Daylight Time)
登录后复制
有两种解决方案:
>使用RawUrlencode和RawUrldeCode而不是其非RAW对应物。这些也编码符号,而不是将其变成太空字符,然后所有这些都起作用。
>
>使用包含此内置的PayPal IPN侦听器客户端。我最近向此提交了一个补丁,它的工作方式就像魅力。
- 希望这个小提示能使某人免于许多令人沮丧的谷歌搜索!
>
- 经常询问有关PayPal IPN
的问题(常见问题解答)
> ipn消息状态的重要性是“无效”?> ipn消息的“无效”状态表明该消息不是源自贝宝(PayPal)。这可能是由于许多原因,例如不正确的数据格式,错误编码或交易详细信息中的不匹配。验证IPN消息的真实性以防止欺诈性交易至关重要。>>如何对“无效” IPN消息进行故障排除?
>首先检查IPN消息的数据格式和编码。确保与PayPal提供的规格匹配。另外,将交易详细信息与您的PayPal帐户交叉验证。如果问题持续存在,请考虑使用PayPal提供的IPN模拟器工具进行测试。
>> IPN模拟器在解决IPN问题中的作用是什么?通过PayPal,您可以将伪造的IPN消息发送给听众URL,以进行测试。它可以帮助您确定侦听器的任何问题并在上线之前进行纠正。
>我如何使用IPN模拟器测试我的侦听器?
使用ipn Simulator,您需要日志。在您的PayPal开发人员帐户中,并导航到IPN模拟器页面。输入您的侦听器URL,然后选择要测试的IPN消息类型。单击“发送IPN”以将伪造的IPN消息发送给您的侦听器。
>>如果我的侦听器未接收IPN消息,该怎么办?
如果您的侦听器未接收IPN消息,检查您的听众URL是否有任何错误。另外,请确保您的服务器不会阻止PayPal传入的连接。如果问题持续存在,请考虑从PayPal的技术支持中寻求帮助。
我如何确保我的IPN交易的安全?
确保您的IPN交易的安全性,始终验证的真实性IPN消息。另外,为您的侦听器URL使用安全连接(HTTP),并将PayPal帐户保密。
>>在IPN?
中,“ cmd = _notify-valative”命令的作用是什么?使用“ CMD = _Notify-validate”命令来验证IPN消息。当您使用此命令将IPN消息发送回PayPal时,如果消息是真实的,则贝宝会以“验证”或“无效”响应。 ? PayPal可以在付款更新或重新验证的情况下为同一交易发送多个IPN消息。您应该设计侦听器来处理这些重复的消息并防止对交易进行任何双重处理。>
即使在验证IPN消息后,我将收到“无效”响应,该怎么办?如果您即使在验证IPN消息后也会收到“无效”响应,则表示事务数据中的差异。与您的PayPal帐户交叉验证交易详细信息,并在IPN消息中检查任何错误。>
>如何在Node.js?中处理IPN消息来处理Node中的IPN消息。 JS,您可以使用“ PayPal-IPN”模块。该模块提供了用于验证和解析IPN消息的方法。您可以使用NPM安装它,并在Node.js应用程序中需要它。>
以上是快速提示:PayPal IPN的解决方案总是返回'无效”的详细内容。更多信息请关注PHP中文网其他相关文章!