3

我目前正在使用 Paypal 的沙箱在 PHP 中测试 IPN 脚本。

它似乎工作正常,除了它似乎每次都被击中两次。我在顶部放了一些代码,只是为了给我发送电子邮件警报,这样我就知道脚本已经执行了。每笔交易我都会收到两次警报。

我什至可以在我的脚本中注释掉除该行之外的所有内容,并且我仍然得到它两次,所以我认为我可以合理地确定问题不在我的 IPN 脚本中,而是在 Paypal 端。

我不知道这是否意味着我的 Paypal 帐户中的某些设置有误,或者我不理解 Paypal 工作的正常部分或发生了什么。不过,我很确定我的 IPN 脚本不应该为每笔交易运行两次。

我的 IPN 脚本会被击中两次是有原因的吗?有什么我可以或应该做的吗?


更新:

  1. 我已经确认每次都会发生双重打击。

  2. 我收到的两封电子邮件实际上存在差异。第一个有一个payment_date变量,第二个有一个subscr_date变量。该subscr_date变量设置为在payment_date.

虽然似乎正在发生的所有事情都是我收到两个通知,一个是付款通知,另一个是订阅开始,但这仍然让我感到奇怪。我对 IPN 脚本的理解是,它的目的是让我可以根据成功的付款在我的数据库(或其他任何东西)中执行更改。如果他们每次都想打我两次,那么我打算执行的任何更改都会进行两次,我认为这显然不是理想的方法。

此外,由于客户购买的是订阅,因此他们似乎每次都给我两个关于同一事物的通知,但名称不同。也比较奇怪。

所以我仍然想知道......这是否正常,我应该怎么做才能防止我的代码被执行两次?

4

1 回答 1

3

您将收到 2 个不同的 IPN 事件 - 1 个确认付款,1 个确认订阅开始。

请参阅此处的 IPN 订阅事件http://www.paypalobjects.com/en_US/ebook/subscriptions/notifications.html#1032718和此处的 IPN 订阅变量http://www.paypalobjects.com/en_US/ebook/subscriptions/Appx -ipn_subscription_variables.html(向下滚动到表 A.2)了解您可以在每种类型中看到的内容。

还有一些 IPN 事件,例如标记订阅结束,这些事件与付款没有直接关系。

于 2012-05-17T15:51:47.920 回答