我有一个ipn监听器来更新我的交易(从挂起到完成)和我的合同付款从已完成到付款。太棒了!我还有一个返回页面...从PayPal到我的网站...此页面显示“谢谢”和“允许下载他们上次付费在线合同的按钮”(用PayPal支付)。我的问题是....我的返回页面显示给用户后,有时会出现Ipn监听器....
在本案例的返回页面中。交易和合同是否未支付......当ipn监听器捕获结果时...然后此交易和合同变为付款状态。但是ipn listener是在后端执行的。在我的服务器中。我的返回页面在我的用户之前3到2秒显示。我该怎么办?
我应该在返回页面中添加计时器(延迟),等待ipn更新我的交易和合同状态吗?然后,向用户显示一个按钮“您可以下载上次付款的合同!”。或者更好,我应该忘记这一步。在我的返回页面中,总是没有等待显示给用户“谢谢你的付款”。 “你可以下载你最后一份付款合同!”
答案 0 :(得分:0)
在您实际收到款项之前,您不应该将交易视为完整,或允许任何进一步的商业行为发生,只有IPN会告诉您。
您需要相应调整返回页面上显示的内容。
您真正应该做的就是感谢客户的业务,并告诉他下载或交付或其他任何内容将立即可用PayPal已通知您实际转移。
请注意,它可能需要超过三秒钟。如果他们选择通过银行账户为付款提供资金,则可能需要3-5天,并且由于资金不足,总有可能导致该流程失败。
所以在设计返回页面时不要太乐观。直到钱存入银行才能完成交易。
此页面显示“谢谢”
好。
和“允许下载最后一次付费在线合同的按钮”
坏。这应该是“我的帐户”中的某个地方。
答案 1 :(得分:-2)
我也有我的返回页面等待IPN通知进入我的服务器,如果你做得对,你绝对可以做到这一点。
最初,返回页面轮询我的后端数据库中IPN处理程序更新的字段。然后,当返回页面看到该字段更新时,客户获得他的“这是您支付的项目”。按钮。
我在此过程中也有一分钟超时。当它过期时(虽然我无法记住最后一次实际发生的情况),我会显示一个包罗万象的错误消息('处理您的交易时出现问题')并邀请客户联系我寻求帮助。
我还告诉他们,他们的许可证密钥(在我的情况下,他们正在购买的东西)可能会通过电子邮件发送,因为通常情况下是这样。出于某种原因,IPN通知有时需要一段时间才能到达,但我的IPN处理程序会发送一封确认电子邮件作为备份,以便他们在适当的时候获得。这通常可以解决问题,我很少需要直接介入。
如果PayPal暂停交易,它似乎无法将客户转发到返回页面(我当然从未见过这种情况)。相反,我认为它让客户知道他必须等待资金清理并将其留在那里。
当事务最终清除时,会发送IPN通知 ,然后您可以让您的处理程序发送该电子邮件。
为了避免这听起来像是很多工作,你应该从你的IPN处理程序发送一封电子邮件,因为客户喜欢记录他们的购买记录。一旦你建立了这种机制,剩下的就很容易了。
注意:注意标记为' echeque'的IPN交易。 资金尚未清算,当他们这样做时,您会收到另一个通知。 然后您可以通过电子邮件向他们发送合同。如果内存服务,这个会将它们转发到你的返回页面,所以你必须通过让他们知道他们必须等待来处理它。在实践中,这似乎不经常发生。
建议:让您的脚本在发生意外情况时发送您电子邮件。当PayPal没有明显原因更改传递给IPN处理程序的字段名称时,这已经多次保存了我的培根。
摘要:这是一个实用的,基于经验的关于我的网站工作方式的文章,并且效果很好。我希望这篇文章的读者能够发现它有用,尽管有神秘的暗示。