In-App Billing v3 — Не обнаруживать возврат средств

Я прошел обучение по "In-App Billing v3" от Google. Я могу купить товар, но у меня проблема.

https://developer.android.com/training/in-app-billing/index.html

Я отменил покупку и вернул деньги, но приложение определило покупку как истинную. Я не могу продолжать тестирование своего приложения, потому что я всегда определяю, как приобрел товар.

Единственная ошибка, которую я нашел в logCat, следующая:

[3687] InAppBillingService.logResponseBundle: пакет не содержит кода ответа

Появляется после запуска mHelper.queryInventoryAsync(mGotInventoryListener).

Есть идеи?


person JMPergar    schedule 13.12.2012    source источник
comment
Хороший вопрос. Вы уже нашли ответ?   -  person lstipakov    schedule 14.12.2012
comment
Ничего не нашел, и я не знаю, где искать больше.   -  person JMPergar    schedule 14.12.2012
comment
Я нахожусь в той же лодке с этим - возвращенная покупка (для тестового пользователя), и система продолжает полагать, что пользователь имеет лицензию. v3 API вообще почти ничего не говорит о возмещении - пример приложения не решает их - еще один API Google, выпущенный наполовину для нас, для тестирования морской свинки - мы должны начать выставлять им счета за это...   -  person    schedule 17.12.2012
comment
У меня такая же проблема даже через 15 часов, после очистки кеша приложения Google Play на Nexus7 и даже после новой установки TrivialDrive на моем Nexus One более чем через 15 часов после обработки отмены заказа и получения подтверждения по электронной почте от Checkout. Похоже, что Google НЕ передает этот измененный статус со своих серверов в приложение Google Play; очевидно, это не имеет ничего общего с кэшированием Google Play значения. См. также stackoverflow.com/questions/14303850/   -  person Carl    schedule 20.01.2013


Ответы (4)


p.s. - это говорит о том, что для обновления возврата требуется время

http://code.google.com/p/marketbilling/issues/detail?id=88#makechanges

Но я не уверен - я понимаю, что они кэшируют данные о покупках на устройстве, но 24 часа - это долго...

Обновлено, чтобы добавить, что более чем через 24 часа после того, как я отменил «тестовые» транзакции, эти учетные записи все еще лицензированы!

Обновил еще раз - через 36 часов приложение ВСЕ ЕЩЕ было лицензировано. Я удалил и переустановил, и он ВСЕ ЕЩЕ был лицензирован!

ОБНОВЛЕНО! - Я сбросил настройки устройства, вошел в систему, установил приложение, и оно оказалось нелицензионным...

И еще одно обновление — ответ от Google предполагает, что возвраты обрабатываются «автоматически», но обновление на устройстве может занять «до 72 часов» — другого пути для обнаружения возврата нет, поэтому игроки получают до 3 дней. бесплатно», если они вернут деньги - хм, хорошо, это покупка в приложении, а не покупка приложения, но все же это кажется НЕМНОГО чрезмерным?

person Community    schedule 16.12.2012
comment
У меня тоже было такое, но я не торопился делать сброс до заводских настроек. Через несколько дней он был лишен лицензии. Не уверен, что это было 3 дня или больше, хотя... - person grebulon; 24.12.2012
comment
Я считаю, что «в конечном итоге» он делает нелицензионные вещи, но вы, безусловно, смотрите на дни. Я не уверен, какова политика Google по возврату средств в приложениях — если они собираются раздавать легкие возмещения, и клиенты понимают это (1-3 дня бесплатного использования), то я думаю, что у нас есть проблема здесь. .. - person ; 29.12.2012
comment
Это хорошо знать! Меня не очень волнуют эти три дня, пока это в конце концов происходит. Что касается политики возврата денег Google, Джон, насколько я понимаю, для покупок в приложении нет возмещения средств через Google — единственный выход клиента — отправить электронное письмо разработчику с просьбой о возврате средств, что dev предоставляет по своему усмотрению. - person Carl; 20.01.2013
comment
@shrewdlogarithm Возврат и отмена заказа через Google Merchant Center — это одно и то же? Потому что прошла неделя с тех пор, как я вернул заказ на свой тестовый аккаунт, а состояние покупки (Премиум-автомобиль) все еще в собственности. Тем не менее, мне предоставляется возможность отменить мой заказ сейчас... Не может ли отмена заказа (но возмещение) быть причиной, почему? - person DaveNOTDavid; 29.04.2016
comment
Просто добавлю к этому... Я вернул деньги за продукт (12.05.18, 8:27) сейчас (15.05.18, 17:56), и продукт по-прежнему лицензирован... Я это знаю когда-нибудь это произойдет, но все же.... - person ClassA; 15.05.2018

Прождав около 12 часов и перепробовав все, что предлагалось здесь и в подобных темах, я все еще сталкивался с той же проблемой. Что мне помогло, так это следующая команда adb:

adb shell pm очистить com.android.vending

person lalit_sam    schedule 27.10.2015
comment
Команда у меня не сработала. Товар по-прежнему считается купленным. - person OroshiX; 10.04.2018

Вы можете легко отказаться от покупки в тестовых целях, потребляя предмет.

Используя пример Trivial Drive, я добавил следующий код в MainActivity.java, который будет «потреблять» премиум-обновление при запуске приложения:

        // Do we have the premium upgrade?
        Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
        mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
        Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));

        // dss added for test: Consume the premium upgrade for test purposes.
        boolean testConsume = true;
        if (mIsPremium && testConsume) {
            Log.d(TAG, "NOT FOR PRODUCTION: We have a premium upgrade. Consuming it.");
            mHelper.consumeAsync(inventory.getPurchase(SKU_PREMIUM), mConsumeFinishedListener);
            mIsPremium = false;
        } //dss end add

В качестве бонуса вы получаете бесплатную четверть бака бензина при потреблении обновления только потому, что образец рассматривает все потребление как бензин в другом месте. Найдите MainActivity для «Provisioning», чтобы найти, где.

person David Springer    schedule 12.04.2016

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

person Tyler    schedule 06.04.2013