В биллинге приложений в студии Android всегда возвращайте "BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED"

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

BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED 7 - Невозможность покупки, поскольку товар уже принадлежит

есть ли способ предотвратить это?

Какой продукт вы пытаетесь приобрести? Я имею ввиду управляемую или Подписку ...

jessica 07.06.2018 08:36

управляемые покупки

Sefi Caharon 07.06.2018 08:37

вам нужно употребить его перед повторной покупкой.

jessica 07.06.2018 08:38

использовать эту строку? mBillingManager.consumeAsync (Purchase.getPurchaseToken ());

Sefi Caharon 07.06.2018 08:40

mHelper.consumeAsync (PurchaseObject, mConsumeFinishedListener);

jessica 07.06.2018 08:42

какие бывают типы mHelper, PurchaseObject и mConsumeFiniedListener?

Sefi Caharon 07.06.2018 08:43

Я загрузил ответ.

jessica 07.06.2018 08:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
263
1

Ответы 1

Purchase purchasePremium = null;
// The helper object
IabHelper mHelper; 

@Override
protected void onCreate(Bundle savedInstanceState) {
{
    // Create the helper, passing it our context and the public key to verify signatures with
    Log.d(TAG, "Creating IAB helper.");
    mHelper = new IabHelper(this, base64EncodedPublicKey);
}

public void onConsumePremiumButtonClicked(View arg0) {
    if (purchasePremium != null)
    {
        Log.d(TAG, "We have Premium. Consuming it.");
            try {
                mHelper.consumeAsync(purchasePremium, mConsumeFinishedListener);
            } catch (IabHelper.IabAsyncInProgressException e) {
                complain("Error consuming Premium. Another async operation in progress.");
                writeToLogFile("\nError consuming Premium. Another async operation in progress.");
            }
    }
    else
    {
        alert("Please Subscribe the Product before Consuming it.",TAG,ActivityPurchaseManagedProduct.this);
    }
}


// Called when consumption is complete
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
    public void onConsumeFinished(Purchase purchase, IabResult result) {
        Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);

        // if we were disposed of in the meantime, quit.
        if (mHelper == null) return;


        if (result.isSuccess()) {
            // successfully consumed, so we apply the effects of the item in our
            // game world's logic, which in our case means filling the Premium tank a bit
            alert(" Consume Premium Success full",TAG,ActivityPurchaseManagedProduct.this);;
            purchasePremium = null;
        }
        else {
            complain("Error while consuming: " + result);
        }

        Log.d(TAG, "End consumption flow.");
    }
};

Другие вопросы по теме