当 PayPal 发送付款通知 (IPN)

Posted

技术标签:

【中文标题】当 PayPal 发送付款通知 (IPN)【英文标题】:When PayPal send the payment notification (IPN) 【发布时间】:2015-01-10 21:22:51 【问题描述】:

我正在为我的网站上的一家新商店工作。我想使用 Paypal IPN,以便我的商店可以自动处理订单。

我使用沙盒对我的代码进行相同的测试,但是我遇到了一些问题(我认为)。当用户点击我商店的购买按钮时,他会被重定向到贝宝网站(在本例中为沙盒页面)。然后用户进行付款(点击“立即购买”),PayPal 会显示一个带有付款概览的页面,在此页面中还有一个返回我的商店网页的链接。

根据我的测试,我了解到只有当用户单击此链接返回我的商店时,才会调用 IPN。即使付款完成,也不会调用替代 IPN。 事实上,如果我不点击 retutn 链接,我的商店不会处理订单,但如果我点击它,一切正常。

如果用户不点击返回链接,我想在实际付款后获取IPN之间的付款信息。

这可能吗?怎么样?

注意:在我的商店中,我使用 html 表单并通过 PayPal 获得付款。

【问题讨论】:

【参考方案1】:

听起来你混淆了Instant Payment Notification (IPN) 和Payment Data Transfer (PDT)。

它们非常相似,因为 PayPal 的服务器会将数据 POST 到您指定的 URL,但无论用户是否返回您的站点,都会触发 IPN。任何交易发生后,PayPal 的服务器都会立即将数据发送到您的 IPN URL。 IPN 不是用户在屏幕上看到的任何东西,它根本不会在浏览器中发生。

PDT 旨在将数据返回到您的返回 URL/感谢页面,以便您可以在该页面上显示它。这发生在浏览器中,并且确实依赖于用户单击该链接或自动返回到您指定的返回 URL。不建议将这用于数据库更新、电子邮件通知等,因为即使启用了自动返回,也不能保证用户会到达那里,然后您的代码将不会针对该订单运行。

听起来您所追求的确实是 IPN,但您只是将 IPN URL 设置为与返回 URL 相同的内容,这不是正确的设置方法。

同样,IPN 是一个永远不会在浏览器中运行的独立脚本。

【讨论】:

以上是关于当 PayPal 发送付款通知 (IPN)的主要内容,如果未能解决你的问题,请参考以下文章

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

设置 PayPal 即时付款通知后,我可以追溯重新发送历史交易的 IPN 吗?

PayPal 即时付款通知 (IPN) 的 C# 处理程序

使用 Paypal ipn 和 pdt 进行付款

PayPal IPN 通知收到同一付款的多个通知

未收到 Paypal 沙箱 IPN 消息