我目前正在使用 Paypal 的沙箱在 PHP 中测试 IPN 脚本。
它似乎工作正常,除了它似乎每次都被击中两次。我在顶部放了一些代码,只是为了给我发送电子邮件警报,这样我就知道脚本已经执行了。每笔交易我都会收到两次警报。
我什至可以在我的脚本中注释掉除该行之外的所有内容,并且我仍然得到它两次,所以我认为我可以合理地确定问题不在我的 IPN 脚本中,而是在 Paypal 端。
我不知道这是否意味着我的 Paypal 帐户中的某些设置有误,或者我不理解 Paypal 工作的正常部分或发生了什么。不过,我很确定我的 IPN 脚本不应该为每笔交易运行两次。
我的 IPN 脚本会被击中两次是有原因的吗?有什么我可以或应该做的吗?
更新:
我已经确认每次都会发生双重打击。
我收到的两封电子邮件实际上存在差异。第一个有一个
payment_date
变量,第二个有一个subscr_date
变量。该subscr_date
变量设置为在payment_date
.
虽然似乎正在发生的所有事情都是我收到两个通知,一个是付款通知,另一个是订阅开始,但这仍然让我感到奇怪。我对 IPN 脚本的理解是,它的目的是让我可以根据成功的付款在我的数据库(或其他任何东西)中执行更改。如果他们每次都想打我两次,那么我打算执行的任何更改都会进行两次,我认为这显然不是理想的方法。
此外,由于客户购买的是订阅,因此他们似乎每次都给我两个关于同一事物的通知,但名称不同。也比较奇怪。
所以我仍然想知道......这是否正常,我应该怎么做才能防止我的代码被执行两次?