【发布时间】:2012-05-19 17:01:11
【问题描述】:
我目前正在使用 Paypal 的沙箱在 PHP 中测试 IPN 脚本。
它似乎工作正常,只是它似乎每次都被击中两次。我在顶部放了一些代码,只是为了给我发送电子邮件警报,这样我就知道脚本已经执行了。每笔交易我都会收到两次提醒。
我什至可以在我的脚本中注释掉除该行之外的所有内容,但我仍然得到两次,所以我认为我可以合理地确定问题不在我的 IPN 脚本中,而是在 Paypal 端。
我不知道这是否意味着我的 Paypal 帐户中的某些设置有误,或者我不理解 Paypal 工作的正常部分或发生了什么。不过,我很确定我的 IPN 脚本不应该为每个事务运行两次。
我的 IPN 脚本会被击中两次是有原因的吗?有什么我可以或应该做的吗?
更新:
我已经确认,连击每次都会发生。
我收到的两封电子邮件实际上存在差异。第一个有一个
payment_date变量,第二个有一个subscr_date变量。subscr_date变量设置为在payment_date之后几秒钟的时间。
虽然我似乎收到了两条通知,一条用于付款,另一条用于订阅开始,但这仍然让我感到奇怪。我对 IPN 脚本的理解是,它的目的是让我可以根据成功的付款在我的数据库(或其他任何东西)中执行更改。如果他们每次都打算打我两次,那么我打算执行的任何更改都会进行两次,我认为这显然不是理想的方法。
此外,由于客户购买的是订阅,因此他们似乎每次都给我两个关于同一事物的不同名称的通知。也比较奇怪。
所以我还是想知道...这是否正常,我应该怎么做才能防止我的代码被执行两次?
【问题讨论】:
-
您使用什么方法进行测试? PayPal 两次发送给您的所有变量是否完全相同?
-
@animuson:我不知道如何回答你的第一个问题,只是说我设置了一个 Paypal 的“订阅”按钮,然后我通过按下它来完成购买,使用 Paypal 付款(沙盒),然后返回我的网站。对于第二个问题,据我所知,是的,变量完全相同。
-
根据您的测试方式,PayPal 将允许您手动指定付款的“类型”,例如信用卡、电子支票等。我已经阅读了许多说明PayPal 有时只会发送两次,而您对此无能为力,但绝不会每次发送两次。
-
@nithi:我不认为这是重复的。在那个问题中,提问者得到两个不同的回答,有效和无效。我收到两个重复的响应,都是有效的。