Android потребляемый: «уже принадлежит этот элемент», но inventory.hasPurchase () – false

Я застрял с Google In App v3 – я протестировал покупку без потребления (например, когда приложение падает между покупкой и потреблением) – теперь я не нахожу выход.

Если я попытаюсь снова купить, он говорит: «У вас уже есть этот предмет». Но когда я проверяю право собственности, он говорит, что я не владею им:

Inventory inv = mHelper.queryInventory(false, null); inv.getPurchase(sku); // null inv.hasPurchase(sku); // false 

Я тоже не могу потреблять, потому что у меня нет покупки, чтобы потреблять. Как продолжить здесь?

РЕДАКТИРОВАТЬ Воспроизведите его следующим образом: купите расходные материалы в приложении, а затем отключите подключение к Интернету. После этого вы не сможете приобрести продукт снова в течение нескольких часов. Просто проверенный с помощью популярного приложения из игрового магазина (Diamond Digger Saga), у меня было такое же поведение. Неужели нет возможности избежать этого?

Solutions Collecting From Web of "Android потребляемый: «уже принадлежит этот элемент», но inventory.hasPurchase () – false"

Я столкнулся с этой точной проблемой. У меня было два аккаунта Google на телефоне, один из которых был учетной записью разработчика (для которой я глупо использовал свою личную учетную запись), а другой – тестовую учетную запись, зарегистрированную в консоли разработчика. Я удалил и повторно добавил аккаунт разработчика из своих учетных записей на телефоне, что позволило мне совершить пробные покупки из моего приложения, подумав, что если учетная запись разработчика была второй в этом списке, она будет использовать первую для покупок.

Увы, после нескольких запусков приложения я столкнулся с вашей проблемой. Я отказался от попыток иметь и удалить аккаунт разработчика с моего телефона. Хотя это невероятно неудобно, это избавилось от этой проблемы и позволило мне проверить покупку, потребление, запрос и т. Д.

Если вы все делаете правильно, а ваш код в порядке – скорее всего, проблема связана с кэшированными данными Google Play Services.

Например, когда вы совершаете пробную покупку на своем устройстве A – на вашем устройстве B (с тем же аккаунтом Google), вы будете получать inventory без покупки в течение некоторого времени. И ваш inventory.getPurchase(sku) вернет null и inventory.hasPurchase(sku) вернет false ;

Чтобы исправить эту попытку, откройте Google Play и закройте ее с помощью кнопки «Недавние приложения» (щелкните ее, а затем проведите по экрану). Это приведет к тому, что приложение будет быстрее, чем обычно, «назад». Затем выключите устройство на пару минут.

Наша цель – сделать Google Play обновленным кешем.

Убедитесь, что вы подключены к Wi-Fi, потому что он редко обновляется, если вы находитесь на мобильных данных. В конце концов данные будут обновлены, и вы получите свою покупку. В моем случае это произошло через 5 минут или немного.