Как удалить тестовую покупку IAP из Android Google Play

Я настроил бета-аккаунт для тестирования приложения IAP для приложения Google, над которым я работаю, проблема заключается в том, что после того, как я приобрел одноразовые продукты (без единовременной оплаты) тестовый IAP, я не могу "удалить его" как таковой так что теперь, даже когда я удаляю приложение и переустанавливаю, он запоминает покупку, что замечательно в реальном мире для пользователя, но не очень хорошо при попытке исправить ошибки!

Есть ли способ (кроме создания тонны учетных записей Gmail для тестирования) удалить покупку из учетной записи?

Ответ 1

Это старый вопрос, но если кто-то все еще ищет решение, перейдите по ссылке:

Там вы можете вернуть/отменить тестовые покупки. Затем очистите состояние покупки с помощью этой команды:

adb shell pm clear com.android.vending

Ответ 2

Единственный способ, которым я знаю, - заставить потреблять в вашем приложении. Затем вы можете удалить этот код.

Ответ 3

Я использую cc.fovea.cordova.purchase плагин для кордовы для управления моими покупками IAP. Чтобы удалить мой неиспользуемый тест, я изменил свою регистрацию с Неиспользуемый для Расходуемого.

store.register({
      id: this.predatorID,
      alias: 'Predator Pack',
      type: store.CONSUMABLE //store.NON_CONSUMABLE
    });

Кроме того, видимо, есть зарезервированные ключевые слова, которые вы могли бы использовать вместо (если вы в этом). - https://developer.android.com/google/play/billing/billing_testing.html

Ответ 4

if (inventory.getPurchase(ITEM_SKU) != null ) {
                try {
                    mIabHelper.consumeAsync(premiumPurchase, new IabHelper.OnConsumeFinishedListener() {
                        @Override
                        public void onConsumeFinished(Purchase purchase, IabResult result) {
                            Toast.makeText(MainActivity.this, "Consumed the test purchase successfully", Toast.LENGTH_SHORT).show();
                        }
                    });
                } catch (IabHelper.IabAsyncInProgressException e) {
                    e.printStackTrace();
                }
             }

Однако методы refund() и revoke() не поддерживают тестовые покупки, и у вас остается только опция takeAsync().

Ответ 5

У меня была аналогичная проблема. К счастью, приложение, с которым я работаю, основано на WebView, поэтому я могу легко добавить ссылку или кнопку, чтобы запустить Javascript, чтобы перезвонить в приложение, чтобы использовать тестовые заказы. Так как тестовые заказы имеют пустую строку для orderId, их легко идентифицировать, чтобы их использовать. После использования элемент может быть "куплен" снова. Удаление кнопки требует комментирования одной строки кода. НО, если кнопка случайно попадает в окончательное опубликованное приложение, это не вызовет никаких проблем, поскольку код использует только тестовые заказы, то есть реальные заказы не влияют. Эта кнопка будет просто смущать, а не катастрофа.

Я работаю над устройством без связанной с ним кредитной карты. Я установил некоторые промо-коды и использовал параметр "Исправить код" для своих тестовых заказов. Промо-коды не приводят к риску обмена деньгами, и я могу полностью проверить функциональность IAB в своем приложении с реальными продуктами, не прибегая к кодам тестов IAB.

Ничего не видно для меня в Google Кошельке по почте Мартина Кула.

Ответ 6

Просто:

Purchase unlockedPurchase = inventory.getPurchase(SKU_UNLOCKED);
// Log unlockedPurchase.getOrderId();

Перейдите на панель Google Play "Управление заказами", найдите этот идентификатор заказа и верните его (в нем должно быть указано "Тестовый заказ", если это ваш собственный заказ).

Ответ 7

Покупки Google Play Покупки хранятся в Google Кошельке.

https://wallet.google.com

При подписке перейдите в раздел "Сделки" слева. Тестовые покупки могут быть отменены оттуда.