txn_id和payment_状态使PayPal IPN独一无二?
我正在使用PayPal IPN,我有以下问题:是否可能有两条具有相同txn_id和payment_状态参数的IPN消息 例如:txn_id和payment_状态使PayPal IPN独一无二?,paypal,paypal-ipn,Paypal,Paypal Ipn,我正在使用PayPal IPN,我有以下问题:是否可能有两条具有相同txn_id和payment_状态参数的IPN消息 例如: IPN:txn_id=4BB79227HY951745W&付款状态=待定 IPN:txn_id=4BB79227HY951745W&付款状态=idontknowwhat IPN:tnx_id=4BB79227HY951745W&付款状态=待定 IPN:txn_id=4BB79227HY951745W&付款状态=已完成 所以我的问题基本上是txn_id和payment_状
我以前读过这个帖子:。这里听起来这两个参数使消息唯一,但我不确定。我认为
txn\u id
和payment\u status
本身不足以使IPN唯一。由于您希望保存与给定事务相关的每个IPN,因此还应检查pending\u reason
值:
假设您使用授权-捕获
模型创建了一笔交易,并且您的交易通过了即时支付审核(IPR)
。您将有类似于IPN的内容:
IPN 1:TXN进入审查(IPR)
IPN 2:TXN已通过IPR(请注意,挂起的原因已更改!)
IMHO,这与“唯一性”本身无关,因为IPN是一种消息传递服务(在事务状态不断变化的情况下)。它甚至有如中所述的“重试”,这在您引用/链接的帖子的答案中进行了讨论。谢谢您的回答。我理解这一点,但我想存储与事务相关的所有内容,但我不想存储任何内容超过一次。因此,在我以某种方式将事务数据保存到数据库中之后,我必须知道是否因为该事务的某些“更改”而发送了新的IPN消息,或者由于某种原因它只是由PayPal IPN服务重新发送。我已经用数据库时间戳和其他“双重检查”解决了这个问题,但您所说的有意义,并回答了我的问题。认可的!
[payment_status] => Pending
[txn_id] => 0CD48848U16230847
[pending_reason] => paymentreview
[txn_type] => express_checkout
[auth_status] => Pending
[ipn_track_id] => 8c7559d39005
[payment_status] => Pending
[txn_id] => 0CD48848U16230847
[pending_reason] => authorization
[txn_type] => express_checkout
[auth_status] => Pending
[ipn_track_id] => 8c7559d39005