PayPal IPN在付款完成后数小时发送多个通知

use*_*244 8 paypal paypal-ipn

在IPN文档中有这样一行:

为了处理传输和接收延迟或失败的可能性,IPN消息服务实现了一种重试机制,该机制以不同的间隔重新发送消息,直到您确认消息已成功接收为止.

IPN发送相同的通知9次...我需要发回什么?我的脚本没有错误.如果我使用IPN模拟器,我会收到以下消息:

IPN发送成功

那么似乎模拟器可以告诉消息正在正确发送但真正的通知器不能?

我使用沙盒,如果这有什么区别?

收到通知后是否需要打印任何内容?

Dam*_*ran 11

无需担心多重通知.首先发回IPN消息然后处理它.处理时检查先前未处理过txn_id的检查.如果已经处理,则它是来自Paypal的重复IPN消息,您可以忽略该处理.有关更多信息,请参阅pdf文件: IPNGuide.pdf

编辑: 收到通知后是否需要打印任何内容?无需打印任何内容,但如果要记录详细信息,则可以记录它们.从我上面提到的pdf文件(第10页)

您的听众必须回复每条消息,无论您是否打算对其进行任何操作. 如果您没有回复,PayPal会假定未收到该消息并重新发送该消息.PayPal会定期重新发送消息,直到您的侦听器发回正确的消息,尽管重新发送的消息之间的间隔每次都会增加.该消息最多可以重发四天.此重新发送算法可能导致PayPal在您发回原始邮件时重新发送IPN邮件的情况.在这种情况下,您应该再次发送您的回复,以涵盖PayPal第一次没有真正收到您的回复的可能性.您还应确保不要两次处理与消息关联的事务.重要提示:PayPal希望在30秒内收到对IPN消息的响应.在响应IPN消息之前,您的侦听器不应执行耗时的操作,例如创建进程

请参阅第19-20页.您的监听软件必须

  • 等待来自PayPal的HTTP帖子.

  • 创建一个请求,该请求包含完全相同的IPN变量和值,顺序为cmd = _notify-validate.

  • 将请求发布到paypal.com或sandbox.paypal.com,具体取决于您是在线还是在沙箱中测试您的听众.

  • 等待来自PayPal的响应,该响应是VERIFIED或INVALID.

  • 如果响应是VERIFIED,请执行以下检查:

  • 确认付款状态为"已完成".PayPal也会发送待处理和拒绝付款的IPN消息; 在付款清算之前不要发货.

  • 使用事务ID验证事务尚未处理,从而防止处理重复事务.

  • 通常,您将事务ID存储在数据库中,以便您知道您只处理唯一的事务.

  • 验证接收者的电子邮件地址是否已注册.此检查提供额外的防欺诈保护.

  • 验证价格,商品描述等是否与您网站上的交易相匹配.此检查提供额外的防欺诈保护.

  • 如果验证的响应通过了检查,则根据txn_type变量的值(如果存在)执行操作; 否则,根据reason_code变量的值采取行动.

  • 如果响应为INVALID,请保存该消息以供进一步调查

  • 感谢您的答复.我正在做所有要求的事情.我使用_notify-validate按顺序返回IPN变量,这是我的脚本做的第一件事.我收到了VERIFIED回复.你说我不需要担心多个通知.这将推广到数千个客户.1个通知和9个通知之间的差异将是每周大约200k废弃的通知..在计划中没有大量的交易但是如果可能的话就想避免它. (2认同)