React-native-iap: 不允许在测试帐户上重新购买Android项目

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

版本的react-native-iap

0.3.10

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

安卓系统

预期行为

由于我只是在测试,因此应该能够根据我的需要重新购买物品多次

实际行为

退货

Error: You already own this item.
    at createErrorFromErrorData (59522b9c-ca17-4e00-9e00-05cc989b1199:2016)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:1968
    at MessageQueue.__invokeCallback (59522b9c-ca17-4e00-9e00-05cc989b1199:2410)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:2155
    at MessageQueue.__guardSafe (59522b9c-ca17-4e00-9e00-05cc989b1199:2323)
    at MessageQueue.invokeCallbackAndReturnFlushedQueue (59522b9c-ca17-4e00-9e00-05cc989b1199:2154)
    at t (RNDebuggerWorker.js:1)

重塑行为者的步骤

使用测试帐户多次购买商品

🙏 help wanted

最有用的评论

我遇到了与@ilyakar相同的问题,并且使用下面的代码,我可以清除非消耗性的购买并再次进行测试。


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

所有16条评论

@ilyakar这是消耗品吗? 您应该消耗Item来重新购买它。 请阅读一些有关IAP如何在Android中工作的指南。

@dooboolab ,您好,这不是消耗品。 用户永远拥有它。 有一种方法可以还原产品,因此最好在生产中告知用户,由于他们已经购买了产品,因此无法再次购买该产品。 但是出于测试目的,每次购买所有商品时都必须使用不同的帐户感到非常不舒服。

我认为我在0.2.17中没有这个问题

@ilyakar Ah ..对不起,我很困惑。 实际上,如果它是non-consumable产品,则实际上无法重新购买。 如果在0.2.17中可能出现这种情况,那么它必须笨拙地工作。.只有可消费的产品才能重新购买它。 在两个平台(ios和android)上都是相同的。 如果用户想要恢复该项目,则必须选择执行该操作,但是如LINK所示,它不会再次向用户收费。 因此,如果您正在设计要通过重新购买向用户收费的应用内商品,我认为您应该创建consumable产品。

@ilyakar我从我的朋友开发人员那里得到了反馈,他也面临着同样的问题。 因此,我想出了使用refreshItems方法的解决方案,该方法仅在android 。 您可以在[email protected] 。 在prepare方法之后尝试使用它。 我的朋友面临此问题,因为他找不到要消费的购买产品的令牌。 因此,如果您不关心依赖playstore的购买历史,则此method只是为了您的方便。 当您自己的后端收集购买历史记录时,这将帮助您解决问题。 我必须进一步看待这一难题。 另外,遵循readme也可以为您提供帮助。 感谢您的报告!

附言:我认为上述方法也适用于non-consumable产品。 此外,本文还将帮助您了解refeshItems将解决您的问题。

我认为此问题已经解决,因为我认为IAP无法与测试帐户配合使用

@dooboolabrefreshItems解决方案是必经之路

一个菜鸟问题

我们可以购买产品而不花费$ 0❓吗?

@ deadcoder0904 ,这就是Android测试帐户的整个概念(https://developer.android.com/google/play/billing/billing_testing.html)。 哪种插件可以正常工作,但是正如我所指出的,您不能两次进行相同的购买。

@ilyakar您是说它仍然无法正常工作。 购买产品后,您是否尝试致电refreshItems ? 作为描述在这里,它可能会导致在Play商店中的一些延迟。 但是,您可以强制消费该产品以重新购买。 我也很好奇为什么这行得通..还请注意,如果您依赖Google Play历史记录上的购买并将其不收集在您的后端中。

@dooboolab ,我只是用我以前的知识来回复@ deadcoder0904 。 恐怕我还没有尝试过您的解决方案,而且可能不是一段时间,因为这不是紧急解决方案。 但是以后我会告诉你的。

@ilyakar请谨慎使用refreshItems因为它将消耗用户购买的所有产品。 仅当您不关心存储在playstore中的那些信息时才可以使用它,因为您拥有赢取的服务器。 另外,这种问题的发生方式就像我在13天前从这里发布的一样,如果用户退还了该商品,则用户可能无法在24小时内再次购买同一商品。

我遇到了与@ilyakar相同的问题,并且使用下面的代码,我可以清除非消耗性的购买并再次进行测试。


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

@TylerNoblett此解决方案目前无法使用。

  • 我尝试使用consumeAllItemsAndroid而不是consumeAllItems
    任何进一步的帮助表示赞赏。

控制台输出为:

setUpDeveloperTools.js:73 TypeError: _reactNativeIap.default.consumeAllItems is not a function
    at loadPurchases$ (NewGameScreen.js:167)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at tryCatch (runtime.js:45)
    at invoke (runtime.js:135)
    at runtime.js:145
    at tryCallOne (core.js:37)
    at core.js:123
    at JSTimers.js:289

在:

    "react": "16.9.0",
    "react-native": "0.61.3",
    "react-native-iap": "^4.3.0",

@tulpn看起来您没有正确安装我们的模块,因为consumeAllItemsAndroid应该可以正常工作。

@hyochan不是为我工作。

@ roots-ai您正在使用什么版本? 另外,请同时参考我们在example提供的代码。

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