txn_id和payment_status使PayPal IPN独一无二?

时间:2015-04-04 15:55:12

标签: paypal paypal-ipn

我正在使用PayPal IPN,我有以下问题:是否可以使用相同的txn_id和payment_status参数获得两条IPN消息?

例如:

  1. IPN:txn_id = 4BB79227HY951745W& payment_status = pending
  2. IPN:txn_id = 4BB79227HY951745W& payment_status = idontknowwhat
  3. IPN:tnx_id = 4BB79227HY951745W& payment_status = pending
  4. IPN:txn_id = 4BB79227HY951745W& payment_status =已完成
  5. 所以我的问题基本上是txn_id和payment_status一起使消息独一无二?

    另一个例子:

    如果我有一个SQL查询,如:

    SELECT * FROM transactions WHERE txn_id = 4BB79227HY951745W AND payment_status = something

    它可以返回多行吗? (如果我没有存储由PayPal重新发送的任何消息,因为缺少200 OK响应消息或响应时间较慢或类似的事情。)

    我之前读过这个帖子:PayPal IPN unique identifier。这听起来这两个参数使消息独一无二,但我不确定。

1 个答案:

答案 0 :(得分:0)

我认为仅txn_idpayment_status不足以使IPN独一无二。因为在您的情况下,您希望保存与给定事务相关的每个IPN,您还应该检查pending_reason值:

假设您使用Authorization - Capture模型创建了一项交易,并且您的交易通过了Instant Payment Review (IPR)。你会有像IPN这样的东西:

IPN 1:TXN进入审核(IPR)

[payment_status] => Pending
[txn_id] => 0CD48848U16230847
[pending_reason] => paymentreview
[txn_type] => express_checkout
[auth_status] => Pending
[ipn_track_id] => 8c7559d39005

IPN 2:TXN已通过IPR(请注意,待处理原因已更改!)

[payment_status] => Pending
[txn_id] => 0CD48848U16230847
[pending_reason] => authorization
[txn_type] => express_checkout
[auth_status] => Pending
[ipn_track_id] => 8c7559d39005