前一段时间在 Flutter 应用接入 apple 内购时遇到了一些问题,目前搞清楚了大概,在这里简单总结记录下,希望帮助其他 V 友少陷入点困惑,以下总结可能仍有错误的地方,若有发现,欢迎指出。
Apple 的内购机制存在两个版本:StoreKit V1
和StoreKit V2
这两个版本对于我目前可知的影响是,用户购买之后代码中拿到的待验证收据信息的格式不同。如果是 V1 版本,则返回的是 base64 字符串,请求 server api ,获取到全部交易信息如果是 V2 版本,返回的是 JWT 格式(可以解析获取到原始 payload ,里面会有交易信息),请求 server api 获取到历史信息或本次交易信息;
关于请求后获取到的交易信息,V1 V2 也有不同:
V1 版本:调用 verify 接口,返回的交易信息是所有交易信息,包含所有时间段内的订阅、一次性购买信息
V2 版本:若调用inApps/v1/verifyTransaction
可获得本次的交易信息;若调用inApps/v2/history
(需要传入原始交易 id - originalTransactionId ),则根据这个原始 id 获得所有续订、升级、退订记录,另外这是一个分页接口,你可以传入 revision 游标参数来获取分页信息
此部分也有不同的解决方案:
1
justtokankan 17 天前
直接支持 iOS15 storekit2 是最简单的,对账都是端对端
|