iOS内购服务器验证:多笔同product_id的in_app订单处理疑问
关于iOS内购收据中两笔独立订单的有效期判断
首先直接给你结论:这确实是用户的两次独立购买行为,你可以将其视为总有效期2年的订阅权益,你的理解方向是对的,但需要先明确这两笔订单的核心性质:
- 从收据里的
original_transaction_id字段来看,两笔订单的该值完全不同——这是判断的关键依据。在iOS内购体系中,自动续期订阅的所有续订订单都会沿用首次购买的original_transaction_id;只有当用户主动再次购买同一个非自动续期订阅产品(或手动重复购买可多次购买的订阅/一次性付费产品)时,才会生成全新的original_transaction_id,代表一笔独立的新订单。 - 结合你的收据数据,两笔订单的购买时间仅间隔23分钟,对应同一个1年订阅产品,说明用户在短时间内两次主动付费购买了该服务,属于两次独立的交易行为。
关于有效期的处理建议
这类场景下,APP的常规处理逻辑有两种,你可以根据自身产品规则选择:
- 有效期叠加:将两次1年的时长累加,总有效期从第一笔订单的
purchase_date(2017-06-12 21:31:03)开始计算2年;如果第一笔订阅尚未到期,也可以设置为在第一笔到期后自动续上第二笔的1年时长。 - 独立生效:允许用户同时拥有两个独立的1年订阅权益(这种情况多见于支持多份订阅叠加权限的产品,但相对少见)。
额外提醒
如果你的产品定位是自动续期订阅,却出现了这种original_transaction_id不同的情况,需要检查内购项目配置是否出错(比如误将自动续期订阅创建成了非自动续期类型),但从当前收据数据来看,更符合用户重复购买非自动续期订阅的场景。
内容的提问来源于stack exchange,提问作者Roman Borovets
相关产品推荐
相关产品推荐

