之前用的旧的iap经常掉单,最近发现3.5.1更新了iap 2.0后想改成新的iap代码。但是卡在restoreCompletedTransactions那里一直没反应,我想问的问题如下:
1、我的是消耗型的商品,那restoreCompletedTransactions对消耗型商品有用吗?
2、我的逻辑是:用户点击支付按钮后先调用restoreCompletedTransactions,然后没问题再调用payment,这样的逻辑有问题吗?为啥这restoreCompletedTransactions就一直没响应,连reject信息都没有。
翻了下论坛说是沙箱账号的问题,检查账号登录都正常没问题。
还有说是store connect内有没点击的税务确认信息,登录进去也同意没发现有问题。
另外指出两点官方文档的错误。
1、https://uniapp.dcloud.net.cn/api/plugins/payment.html#iap内
if (this._iap.ready) {
this.restore();
}
这的ready应该是_ready,iap.js内写的就是_ready,外面用ready获取不到值。
2、1、https://uniapp.dcloud.net.cn/api/plugins/payment.html#iap内
官方写的文档那么不严谨的吗?
下面是运行结果
又测试了下,遇到了另一位同志遇到的问题,我把基座删除后重新安装,restoreCompletedTransactions是有响应并且有返回数据的。但是我随便在一个页面内加个空格然后差量化编译后restoreCompletedTransactions又没有响应了。我得把基座删了再重新安装才有响应,我感觉这是不是一个bug。那位同志的帖子如下:https://ask.dcloud.net.cn/question/158130
mysparrow (作者)
原来如此,另外还有个问题。restoreCompletedTransactions的时候不论username是什么内容,出来的都是同一个已经支付过的订单,那个订单除了transactionReceipt不一样之外,其他transactionDate,transactionIdentifier, "transactionState": "1"都一样的。这个又是为什么呢?
const transaction = await this._iap.restoreCompletedTransactions({
username: this.orderNo
});
console.log(transaction)
2023-03-08 09:04
obn
回复 mysparrow: 你好 我也遇到了这个问题,请问你解决了吗?谢谢。
2023-03-22 11:08