在PayPal网站的PHP代码中处理IPN,他们会做一些小的检查,然后就下一步做什么发表一些评论。
其中一条评论是
// check that txn_id has not been previously processed
表示如果已经处理,则有问题。
当payment_status从“待定”变为“已完成”时会发生什么,它肯定会发送相同的txn_id不是吗?您如何识别交易并更新数据库中的记录以及针对该特定IPN消息发布了什么“txn_type”?
IPN已存在多年,但在大多数地方,文档仍然如此模糊和严格解释。他们让你猜测在很多场景中会发生什么,而不是详细解释。
任何帮助都会非常感谢。
答案 0 :(得分:1)
交易ID应该是发生的交易的唯一ID,您注意到的逻辑是确保交易不重复(例如,未在系统中多次插入),交易更新应该具有相同的交易ID。因此,您应检查事务ID是否存在,如果您认为合适,则根据字段进行更新。