2011-06-11 148 views
0

这可能是疲劳设置,但我对使用IPN交易中的交易ID有点困惑。Paypal IPN交易ID的

据我所知,PayPal分配了一个交易ID和POSTs以及所有其他的gumf。但是,它还规定,单个交易可能会生成多个IPN消息(即,当付款状态从PENDING变为CONFIRMED时)。在这种情况下,可能接收到具有相同事务ID的多条消息。

我的困惑是围绕所有提供的样本(通过PayPal自己以及PayPalTech)。我看过的每个脚本只处理通过IPN接收到的第一条消息 - 如果事务ID已经存在(尤其是将IPN事务写入数据库时​​),那么它将被有效忽略。

如果是这种情况,他们是否可能错过了那些开始PENDING并且变得确认的交易?

我是否错过了某些东西,或者只是让它比需要的更复杂?

回答

0

当您使用信用卡进行购物时,会生成额外的交易ID。那么有一个TransId为CC充电,另一个是将货币发送给接收器的TransId。但接收者只看到“他的”TransId,而不是CC相关的。所以总会有一个TransId返回。当交易状态发生变化时(未决/确认等),交易ID不会改变。

+0

那是我的观点。如果是这种情况,示例脚本不会忽略任何新消息,因为它们具有相同的事务ID?脚本全部检查数据库中是否已存在事务标识。如果是这样,他们什么都不做。检查交易ID和交易状态是否相同会更好吗? – 2011-06-11 09:16:29

+1

如果TransId已经存在,那么再次存储它就没有意义了。但是,如果没有确认,重新查询状态可能是有意义的。但是大多数样本不能很好地处理错误情况。 – Haukman 2011-06-11 09:18:18

+1

好的,那是我的想法。只是清醒检查真的。欢呼@霍克曼 – 2011-06-11 09:22:36