React-native-iap: 两次购买相同的产品会报错

创建于 2018-04-18  ·  5评论  ·  资料来源: dooboolab/react-native-iap

react-native-iap 的版本

0.3.13

您遇到错误的平台(IOS 或 Android 或两者?)

iOS

预期行为

预计购买没有问题的产品

实际行为

我第一次在“新”设备上购买 product_A - 它有效。
我第二次尝试购买相同的产品_A(无论我是否重新启动应用程序)
不管用。 错误消息是:“发生未知或意外错误。请稍后再试。”

重现行为的步骤

1.按照自述文件中的方式实施 IAP。

try {
      const msg = await RNIap.prepare()
      const products = await RNIap.getProducts([`${productId}`])
      const purchase = await RNIap.buyProduct(productId)
      this.props.purchaseCoinsPack(coinsPack)
      await RNIap.consumePurchase(purchase.transactionReceipt)
    } catch (err) {
      alert(err.message);
    }

_以防万一我的 componentDidMount() 和 componentWillUnmount() 中有此代码:_

getPurchases = async () => {
    try {
      const purchases = await RNIap.getAvailablePurchases();
      purchases.forEach(async purchase => {
        const boughtPack = R.find(R.propEq('androidStoreId', purchase.productId))(this.props.coinsPacks)
        if (boughtPack) {
          this.props.purchaseCoinsPack(boughtPack);
          await RNIap.consumePurchase(purchase.transactionReceipt);
        }
      })
    } catch (err) {
      console.warn(err); // standardized err.code and err.message available
    } finally {
      this.setState({ isLoading: false })
    }
  }

  async componentDidMount() {
    try {
      await RNIap.prepare()
    } catch (err) {
      console.warn(err);
    }
    this.getPurchases()
  }

  async componentWillUnmount() {
    RNIap.endConnection()
  }

2.第一次购买工作正常。
请稍后再试。”

最有用的评论

最新的 v0.3.15 会给你error code和一条消息。
那么您能否再次尝试最新版本,错误代码是什么?
如果错误代码为 -1001,则可能是 Apple 的临时沙盒问题。
我也会看看这个问题。

所有5条评论

产品是消耗品还是非消耗品?

@JJMoon消耗品。
2018-04-19_07h40_09

最新的 v0.3.15 会给你error code和一条消息。
那么您能否再次尝试最新版本,错误代码是什么?
如果错误代码为 -1001,则可能是 Apple 的临时沙盒问题。
我也会看看这个问题。

更新到 0.3.15 后,问题在 iOS 上消失了。
安卓也很好用。
谢谢!

很高兴听到!
这可能是 Apple 的一个临时问题,因为新版本除了日志之外没有任何改变。
当我们用沙盒进行测试时,出现了很多问题。
大多数情况不会发生在 App Store 发布的产品中。

此页面是否有帮助?
0 / 5 - 0 等级