苹果IAP消耗型商品收据验证时in_app有2条数据,应验证哪条更新订单状态?
苹果IAP消耗型商品多收据验证选择方案
你遇到的in_app字段返回多条记录是消耗型商品验证的常见场景,选择逻辑如下:
- 优先匹配订单关联的
transaction_id:客户端发起支付后会生成唯一交易ID,你需要先将该ID和待验证订单绑定,再从in_app数组中筛选出transaction_id和当前订单存储的交易ID完全一致的条目,用该条目做有效性验证即可。 - 若未提前存储交易ID,按以下优先级过滤:
- 第一步匹配
product_id,排除和当前订单商品ID不符的条目 - 第二步在剩余条目中取
purchase_date_ms(购买时间毫秒级时间戳)最新的条目,同时核验条目中的quantity字段和订单购买数量一致
- 第一步匹配
验证通过完成订单状态更新后,务必将对应
transaction_id存入服务端去重表,避免同一交易被重复核销;同时通知客户端调用finishTransaction方法,后续苹果返回的收据中就不会再携带该条已完成的消耗型交易记录。
附收据数据示例:
内容的提问来源于stack exchange,提问作者Eric Lou
相关产品推荐
相关产品推荐

