2016-08-08 10 views
24

До 20 июня 2016 года я смог отменить пробные покупки, выполненные в моем приложении. Выполнение нескольких покупок в приложении (не расходуемых) из одной и той же тестовой учетной записи позволило легко разработать и протестировать код без чрезмерного шума.Как отменить покупку в приложении на Android?

После 20 июня 2016 года покупки не показывались на моем торговом счете и Мне не удалось сделать более одной покупки у моей тестовой учетной записи. Все, что я получил, это сообщение: «У вас уже есть этот товар».

Я зарегистрировал запрос в группу поддержки разработчиков Google, и ответ был:

Начиная с 20 июня 2016, мы изменили проверочные закупки в течение одного времени в приложение покупки (ИПД). Раньше тестировались покупки для разовых идентификаторов заказа IAP. Начиная с 20 июня 2016 года одноразовые IAP не генерируют официальные идентификаторы заказов (если вообще) и не будут отображаться в Merchant Center. Такое поведение уже применяется к IAP подписки. Вы можете узнать больше о тестировании в приложение биллинга в Android Developers Справочный центр: https://developer.android.com/google/play/billing/billing_testing.html#testing-purchases

Allright .. поэтому я иду к указанной ссылке и Theres раздел там: Отмена завершения испытаний покупки в котором говорится :

Google Play накапливает завершенные тестовые покупки для каждого пользователя, но не передает их на финансовую обработку. В некоторых случаях вы можете вручную отменить пробную покупку для продолжения тестирования. Для этого откройте страницу приложения в Play Маркете. Если тестовая покупка, которую вы хотите отменить, является подпиской, вы также можете использовать метод cancel() API Buy Purchases.subscriptions. Важно: методы refund() и revoke() API Purchases.subscriptions не поддерживают тестовые покупки.

Итак, я перехожу на страницу приложения в игровом магазине ... и выполняю то, что именно? на веб-странице не указано, что я должен делать там. Кто-нибудь знает?

он действительно говорит: вы также можете использовать метод cancel() API-интерфейсов Purchases.subscriptions.

, который указывает, что использование метода cancel() не является единственным методом.

Как решить это без добавления дополнительного кода в мое приложение?

+1

Привет, вы решили это ?. Я также сталкиваюсь с таким же сценарием после проведения тестовой покупки. –

+1

вы можете открыть все тестовые покупки по следующей ссылке: https: //play.google.com/store/account? Feature = gp_receipt, на этой странице я нашел только способ отменить использование кнопки «Сообщить о проблеме». –

+0

@Ramesh_D Сообщение о проблеме дает мне: «Произошла непредвиденная ошибка. Повторите попытку позже». Любые другие идеи? – galgo

ответ

3

Я нашел решение, которое не очень удобно, но работает. Похоже, вы можете потреблять непривлекательные продукты, и таким образом вы можете их снова купить. Я работаю с PhoneGap, так что я только пример кода для плагина Cordova-плагин-покупки:

store.when("your.product.id").updated(product => { 
    if(product.owned) { 
     var transaction = product.transaction; 
     product.transaction = null; 
     store.inappbilling.consumePurchase(
      function() { // success 
       alert("consume success"); 
      }, 
      function(err, code) { // error 
       alert("consume error " + err) 
      }, 
      product.id, 
      transaction.id 
     ); 
    } 
}); 

Обновленный обратного вызова вызывается при вызове store.refresh() или купить продукт. Поэтому, в зависимости от вашего варианта использования, вы захотите реализовать дополнительный метод проверки, когда следует использовать продукт.

У меня нет опыта работы со встроенными приложениями для Android в приложении, но, очевидно, вы сможете также использовать там продукты.

Редактировать: Извините, я просто прочитал, что вы не хотите включать дополнительный код в свой проект.Я не думаю, что это возможно на данный момент, но я хотел бы оставить здесь свой ответ, потому что это может помочь другим людям попробовать протестировать платежи в приложениях.

+0

Что такое 'store.inappbilling.consumePurchase', эквивалентное Java? –

+0

Второй вариант решения cordova. Я просто меняю тип на CONSUMABLE, запускаю приложение, позволяю ему потреблять его, закрывать его, менять его и повторно запускать. – trueicecold

0

Не нашли решение для этого. Мое обходное решение просто удаляет текущего пользователя теста из списка тестовых пользователей, совершает реальную покупку, а затем отменяет его с помощью консоли продавца.

+0

Где вы все еще находитесь в Бета/Альфа? – powder366

+0

Нет, производство. – Eli

+0

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

9

Все управляемые продукты in-app расходуются.

как указано в docs.

Это означает, что вы можете использовать принадлежащий вам товар вместо того, чтобы отменить покупку и купить ее снова и снова. Я предлагаю запрашивая инвентаризации в момент запуска приложения:

mIabHelper.queryInventoryAsync(this);

Вы можете потреблять принадлежащий элемент в функцию обратного вызова:

@Override 
public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 
    Purchase purchase = inventory.getPurchase(MY_SKU); 
    boolean isBought = (purchase != null && verifyDeveloperPayload(purchase)); 
    if (isBought) { 
     mIabHelper.consumeAsync(purchase, new OnConsumeFinishedListener() { 
      @Override 
      public void onConsumeFinished(Purchase purchase, IabResult result) { 
       //Clear the purchase info from persistent storage 
      } 
     }); 
    } 
} 

Это нормально для тестирования IAB потока, но убедитесь, для удаления этого кода из версии выпуска.

+0

это помогло! спасибо –

+0

Что вы подразумеваете под ** // Очистить информацию о покупке от постоянного хранилища **? –

+1

Это зависит от вашей реализации. В моем случае у меня были данные о покупке, хранящиеся в общих настройках, поэтому я могу проверить другие действия. –

4

Я зашел на главную страницу консоли Google Play и нажал на Управление заказами. В соответствии с этим я смог выбрать все тестовые покупки и вернуть их. Я являюсь основным разработчиком приложения, поэтому у меня есть доступ. Если вы являетесь тестировщиком, вам, вероятно, придется обратиться в службу поддержки и попросить вернуть заказ.

+1

Блестящий, блестящий ответ! Работает отлично. После того, как транзакция была отмечена как «Возвращенная», я Force-Quitted Play Store и очистил ее данные кэша и приложения. Тогда я был не подписан и мог повторно приобрести подписку. –

 Смежные вопросы

  • Нет связанных вопросов^_^