Ошибка IAB У вас уже есть этот товар

введите описание изображения здесьСейчас я разрабатываю небольшую игру с помощью службы биллинга Google в приложении.

И я ссылаюсь на пример проекта Trivial Drive из Google. Позвольте мне спросить вас о прерывании соединения во время покупки предметов в Google Play.

Это нормально при запуске потока покупок при нормальном подключении к Интернету.

Я тестировал вот так. Как только начнется процесс покупки, отключите интернет-соединение (отключив LAN маршрутизатора). Примерно через 2-3 минуты отображается время ожидания подключения. В торговом счете денежный перевод выполнен. Но когда я запрашиваю Все принадлежащие предметы, нет принадлежащих им предметов с этим идентификатором (недавно купленных). И когда я снова пытаюсь приобрести этот предмет, появляется сообщение «Ошибка, у вас уже есть этот предмет».

введите описание изображения здесь

Как я могу решить эту проблему? Кто-нибудь сталкивался с такой проблемой?

Пожалуйста помоги. Благодарю за все комментарии и помощь. Спасибо.


person John Nash    schedule 11.05.2013    source источник
comment
Я не думаю, что аккаунт продавца Google и аккаунт Play будут полностью рассинхронизированы на стороне Google; если бы это было так, это было бы широко известно. Но что действительно, так это то, что GP IAB V3 Service использует локальное кэширование, так что ваше приложение должно быть надежным в этом отношении. - К сожалению, то, что вы описываете, не является проблемой само по себе, поэтому, если вы не описываете конкретную проблему, которая у вас есть в этом отношении, единственное возможное предложение - сделать ваше приложение устойчивым к этому.   -  person class stacker    schedule 12.05.2013
comment
Извините за неправильный способ задать вопрос. Спасибо за ваше предложение.   -  person John Nash    schedule 14.05.2013
comment
Я застрял с той же проблемой. У меня возникла проблема с подключением к Wi-Fi, которая привела к ошибке тайм-аута, и теперь у вас уже есть ошибка этого элемента. Теперь это приводит к сбою приложения при запуске. Куда я могу пойти, чтобы очистить токен из моей учетной записи Google lol? (похоже, что у него должна быть панель инструментов где-то, потому что это часто происходит в соответствии со StackOverflow 0.o)   -  person NukeouT    schedule 26.09.2017


Ответы (1)


Потоки Google IAP требуют, чтобы вы вызывали consumePurchase() API после совершения покупки.

Вам нужно вызвать getPurchases() API, он вернет список покупок вместе с purchaseToken. Затем вам нужно перебрать их и вызвать consumePurchase() API для приобретенных неиспользованных продуктов.

Дополнительную информацию см. В справочнике по API.

person Vinay S Shenoy    schedule 11.05.2013
comment
Спасибо за ответ, Винай С. Шеной. Я не смог выразить, что предметы не поддерживаются для употребления. Это просто игровые пакеты, в которые можно только играть. Когда я вызвал этот метод skuList.addAll (inv.getAllOwnedSkus (itemType)); Он всегда возвращал идентификатор продукта, который у меня был. Но в приведенном выше случае он не содержит недавно приобретенного идентификатора. Мне было интересно, почему Google не возвращает уже приобретенный идентификатор (деньги переводятся) в список принадлежащих товаров. - person John Nash; 11.05.2013
comment
Хм .. Я не очень много работал с IAP API .. Если вы вызываете getPurchases(), он возвращается в API? - person Vinay S Shenoy; 11.05.2013
comment
Для пояснения: это просто неправда, что Google IAB требует, чтобы вы позвонили consumePurchase() после совершения покупки. Во-первых, некоторые предметы не будут потреблены, а во-вторых, вопрос, когда именно следует сигнализировать о потреблении, зависит от случая, несмотря на описание, предоставленное Google. - person class stacker; 12.05.2013
comment
@ClassStacker, правда, но в данном случае вроде покупки все расходные товары. - person Vinay S Shenoy; 12.05.2013
comment
Я наконец знаю, почему я не могу получить купленный идентификатор в inv.getAllOwnedSkus (). Он берет ownSkus из локального кеша приложения Google Play. Мне нужно очистить эти кеши, чтобы получить обновленный список ownIDList. Но я не знаю, как получить обновленные данные из Google Play. Это может быть queryInventoryAsync (). Но не уверен ... Спасибо за вашу помощь ... - person John Nash; 13.05.2013
comment
@JohnNash Вы нашли решение, как получать обновленные данные из Google Play? - person MB_iOSDeveloper; 12.12.2014