Возврат платежа в приложении Android

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

        // Count the number of times the product was purchased
        while (cursor.moveToNext()) {
            int stateIndex = cursor.getInt(2);
            PurchaseState state = PurchaseState.valueOf(stateIndex);
            // Note that a refunded purchase is treated as a purchase. Such
            // a friendly refund policy is nice for the user.
            if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) {
                quantity += 1;
            }
        }

        // Update the "purchased items" table
        updatePurchasedItem(productId, quantity);

он добавляет элемент, даже если он был возмещен, и я понятия не имею, почему это так? Имеет ли возвращенный товар специальный идентификатор или что я упустил? Я только пробовал это еще с продуктами для тестирования, поэтому понятия не имею.

Метод updatePurchasedItem удаляет запись из таблицы, если количество равно 0, что кажется совершенно правильным, поэтому я изменил свой код на этот

        while (cursor.moveToNext()) {
            int stateIndex = cursor.getInt(2);
            PurchaseState state = PurchaseState.valueOf(stateIndex);
            // Note that a refunded purchase is treated as a purchase. Such
            // a friendly refund policy is nice for the user.
            if(Consts.DEBUG)
                Log.v(TAG, state == PurchaseState.PURCHASED ? "purchase" : "refund");

            if (state == PurchaseState.PURCHASED) {
                quantity += 1;
            } else if(state == PurchaseState.REFUNDED) {
                quantity = 0;
            }
        }

        // Update the "purchased items" table
        updatePurchasedItem(productId, quantity);

но я сомневаюсь, что в примере приложения будет неправильный код, поэтому я совершенно не уверен, что делаю это правильно!

Как мне справиться с этим? Пожалуйста помогите!


person Ruuhkis    schedule 11.07.2012    source источник
comment
Это может быть просто ошибка. Измеряет ли переменная количества общее количество покупок определенного типа или только всех покупок (включая тип «возврат»)? Я не удивлюсь, если это ошибка, так как пример подписки, существующий на сайте Android Developer, не работает без настройки.   -  person BDFun    schedule 11.07.2012
comment
Количество соответствует количеству товаров, купленных в тот раз (я не думаю, что можно купить более одного товара одновременно), и по какой-то причине количество увеличивается, даже если товар был возвращен. updatePurchasedItem удаляет запись, если он получает продукт с количеством 0, что, насколько я знаю, должно указывать на возврат, поскольку он больше нигде не использует данные о состоянии. Вы можете ознакомиться с примером здесь developer.android.com /guide/google/play/биллинг/   -  person Ruuhkis    schedule 11.07.2012


Ответы (1)


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

При подсчете покупок состояние «Возвращено» предполагает, что товар был куплен. Затем разработчик должен решить, должен ли пользователь иметь доступ к возмещенным продуктам. (На этом сайте есть пример разработчика, который хочет возместить покупки, сделанные людьми, которые уже пожертвовали деньги, и хотел бы позволить им продолжать использовать продукт).

Если вы не хотите, чтобы возвраты учитывались, вам следует изменить свой код, чтобы добавить количество для покупки, но ничего не делать для возврата. (Не устанавливайте количество равным нулю).

Продукты в приложении представлены в 3-х вариантах:

  1. Управляемый товар: Google не разрешает приобретать такие товары более одного раза. Общее количество может составлять до нуля или только один.

  2. Неуправляемый товар: пользователи могут покупать такие товары много раз. Общее количество может быть равно нулю или больше

  3. Подписки: То же, что и управляемые элементы.

person OferR    schedule 25.07.2012