uni-app iap苹果内购 订阅 Bug
uni-app iap苹果内购 订阅 Bug
信息类别 | 内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC版本号 | 000 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.98 |
手机系统 | iOS |
手机系统版本 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | 全部 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
- 订阅支付
- 调用restoreCompletedTransactions(然后调用finish)关闭所有状态未1 和2的事务
- 调用requestPayment
预期结果:
支付后返回transaction.transactionState=1 的事务 或 弹出已经购买过的苹果提示 无论如何不应该恢复购买
实际结果:
返回transaction.transactionState=3 的事务
bug描述:
IOS的苹果内购(iap)
https://uniapp.dcloud.net.cn/api/plugins/payment.html
- 上面这个文档给的支付流程中要调用一个restoreCompletedTransactions,用来关闭订单。我明白这样做的目的,因为对于苹果来说一个订单是一个事务,需要关闭。
- 对于苹果来说,它提供restoreCompletedTransactions目的是用于恢复购买的,只不过刚好可以获取到未关闭的事务,便用在了这里,我也可以理解。
- 但是对于订阅类型的商品,我调用restoreCompletedTransactions之后会产生一个transaction.transactionState=3 的事务,当我调起支付时直接把这个事务返回给我了,我需要的是支付后返回一个transaction.transactionState=1的
1 回复
我希望我能自己控制addTransactionObserver,我能在启动app时拿到addTransactionObserver的返回队列