React-native-iap: Не позволяет повторно купить товар Android на тестовой учетной записи

Созданный на 13 апр. 2018  ·  16Комментарии  ·  Источник: dooboolab/react-native-iap

Версия react-native-iap

0.3.10

Платформы, на которых вы столкнулись с ошибкой (IOS или Android или оба?)

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

Самый полезный комментарий

У меня возникла та же проблема, что и у


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 А .. Простите, что запуталась. На самом деле, если это non-consumable продукт, вы не можете его повторно купить. Если бы это было возможно в 0.2.17 который, должно быть, работает неуклюже ... Только расходные материалы могут его перекупить. То же самое на обеих платформах (ios и android). Если пользователь хочет восстановить элемент, он должен сделать это по желанию, но, как и в LINK , он не будет снова взимать с пользователя плату. Поэтому, если вы разрабатываете продукты для продажи в приложении, которые вы хотите взимать с пользователей путем повторной покупки, я думаю, вам следует создать продукт consumable .

@ilyakar У меня есть отзыв от моего друга-разработчика, и он тоже столкнулся с той же проблемой. Поэтому я придумал решение использовать метод refreshItems который встречается только в android . Вы можете использовать это в [email protected] . Попробуйте использовать его после метода prepare . Мой друг столкнулся с этой проблемой, потому что не смог найти токен купленного продукта для потребления. Следовательно, этот method предназначен только для вашего удобства, если вам не важна история покупок, которая зависит от playstore . Если у вас есть собственный сервер, собирающий историю покупок, это поможет вам решить проблему. Я должен взглянуть на это еще более жестко. Кроме того, вам поможет следующее: readme . Спасибо за ваш доклад!

PS Я думаю, что вышеуказанный метод будет работать и на продукте non-consumable . Также эта статья поможет вам понять, что решит вам refeshItems .

Я думаю, что это уже решено, поскольку я не думаю, что IAP работает с тестовой учетной записью

И решение @dooboolab refreshItems - это то, что нужно

Один вопрос новичков @dooboolab, поскольку я только один раз реализовал IAP в приложении для Android, но никогда не пробовал, если он работает 😂

Можем ли мы купить товар, не тратя денег, например, $ 0❓

Да, @ deadcoder0904 , в этом вся концепция тестовых учетных записей Android (https://developer.android.com/google/play/billing/billing_testing.html). Что отлично работает с плагином, но, как я уже указал, вы не можете совершить одну и ту же покупку дважды.

@ilyakar Вы говорите, что все еще не работает. Вы пробовали позвонить в refreshItems после покупки товара? Как описано здесь , это может вызвать некоторую задержку в игровом магазине. Однако вы можете заставить потреблять продукт, чтобы снова совершить повторную покупку. Мне также любопытно, почему это работает ... Также будьте осторожны, если вы полагаетесь на покупки в истории игр Google, а не на сбор ее в своем бэкэнде.

Привет, @dooboolab , я как раз отвечал на @ deadcoder0904 своими предыдущими знаниями. Боюсь, я не пробовал ваше решение и, вероятно, не буду в течение некоторого времени, поскольку это не срочное решение. Но я дам вам знать в будущем, когда у меня будет.

@ilyakar будьте осторожны, используя refreshItems потому что он потребляет все продукты, купленные пользователем. Вы можете использовать его только в том случае, если вам не важна эта информация, хранящаяся в игровом магазине, потому что у вас есть выигранный сервер. Кроме того, эта проблема возникает, как я писал 13 дней назад отсюда , если пользователь вернул товар, пользователь не может повторно купить тот же товар в течение 24 часов.

У меня возникла та же проблема, что и у


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 У меня не получилось.

@ root-ai Какую версию вы используете? Также, пожалуйста, обратитесь к коду, который мы предоставили в example .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги