mysparrow
mysparrow
  • 发布:2023-03-07 13:59
  • 更新:2023-03-07 20:35
  • 阅读:724

苹果内购restoreCompletedTransactions无响应

分类:uni-app

之前用的旧的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

2023-03-07 13:59 负责人:DCloud_iOS_WZT 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

内购测试不要热刷新页面

  • 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

要回复问题请先登录注册