购买订阅产品,按照正常支付流程没有问题,但是第一次购买订阅产品成功后,手动在App Store中手动取消产品订阅,再回到app内中复购则无法成功拉起支付,并且transaction 中username字段会出现丢失的情况
// 开发者服务器创建订单返回username信息
const orderId = await this.createOrder({
productId: this.productId
});
// 请求苹果支付
const transaction = await this._iap.requestPayment({
productid: this.productId,
manualFinishTransaction: true,
username: username + orderId
});
vonfly (作者)
订阅产品复购问题这个如何处理呢?就是用户在App Store中手动取消产品订阅,再回到app内中复购则无法成功拉起支付的问题
2024-01-29 11:26
DCloud_iOS_WZT
回复 vonfly: 用restore 每次点击购买前先restore看有没有历史
2024-01-29 11:34
vonfly (作者)
回复 DCloud_iOS_WZT: 我现在的逻辑是初次进入支付页面的时候,也会用restore。处理逻辑为transactionState 为1的情况就会关闭订单,但是订阅产品会出现transactionState 为3的情况 这个时候支付也没有办法拉起
2024-01-29 11:55
DCloud_iOS_WZT
回复 vonfly: 为3的时候标识已经购买过了 你拿到这个票据去服务器校验
2024-01-29 12:19
vonfly (作者)
回复 DCloud_iOS_WZT: 我现在拿到3的场景为 首次订阅成功后 我手动在苹果手机 设置->App Store->沙盒账户里面取消了订阅,再回到app内购买连续包月产品 这个时候就无法拉起支付了
2024-01-30 17:18
DCloud_iOS_WZT
回复 vonfly: 取消订阅是指到期后不自动续费了 而不是这次支付的产品退款
2024-01-30 18:16
DCloud_iOS_WZT
回复 vonfly: https://uniapp.dcloud.net.cn/api/plugins/payment.html#%E6%B2%99%E7%AE%B1%E8%B4%A6%E5%8F%B7
看下沙箱账号 上面的注意事项 沙箱环境重复购买商品 需要清除购买记录或重新添加沙盒测试账号
2024-01-30 18:19
vonfly (作者)
回复 DCloud_iOS_WZT: 想确认下 透传的username是每笔订单都不一样,还是可以和用户身份挂钩,就是同一个用户每笔订单的username都是一样的?
2024-02-06 11:11
DCloud_iOS_WZT
回复 vonfly: 你可以用来当做订单号传 但是要处理好 username丢失的场景,苹果官方对于这个字段定义 是用来防刷的不是用来绑定业务的 可以参考苹果官网和https://tech.gotokeep.com/post/2018/12/in-app-purchase/
2024-02-18 12:40
vonfly (作者)
回复 DCloud_iOS_WZT: 有ios 版的hello uniapp iap的支付代码demo吗,想参考一下
2024-02-18 18:42
vonfly (作者)
回复 DCloud_iOS_WZT: 我后续的测试发现了一个问题,就是订阅产品首次购买后transactionState为1,交易成功了,也通过了苹果服务器的校验。但是后面再进入订阅产品购买页面使用restoreCompletedTransactions api检测未关闭的订单时候发现之前购买的订阅产品记录还有,并且transactionState 变为了3 是什么意思呢?
2024-02-20 11:11
DCloud_iOS_WZT
回复 vonfly: 你自己没有finish订单吧
2024-02-20 12:54
DCloud_iOS_WZT
回复 vonfly: 3是已购
2024-02-20 12:55
vonfly (作者)
回复 DCloud_iOS_WZT: 确认是已经关闭了的,因为购买消耗类产品成功后再使用restoreCompletedTransactions api检测是返回的空数组,但是购买订阅的产品就是不行。
2024-02-20 13:46
DCloud_iOS_WZT
回复 vonfly: 这个没问题 订阅类的会有存在的历史记录 怕你换设备查不到
2024-02-20 15:06
vonfly (作者)
回复 DCloud_iOS_WZT: 苹果手机 设置->App Store->沙盒账户里面取消了订阅,再回到app内购买订阅产品 这个时候就无法拉起支付了,会直接返回支付的结果,同时复购也没有真正成功是怎么回事呢?
2024-02-20 15:45
PenGuin1
回复 vonfly: 请问解决了吗 我碰到了一样的问题
2024-11-05 17:08
vonfly (作者)
回复 PenGuin1: 官方的处理机制应该是有问题
2024-11-11 09:47