Android-биллинг, как включить enablePendingPurchases()

Я перешел со старого API биллинга на самый последний на сегодняшний день, и теперь я попытался добавить

  BillingClient.Builder enablePendingPurchases = BillingClient.newBuilder(this).setListener(this);

но я не могу заставить его работать, вот ошибка

   Caused by: java.lang.IllegalArgumentException: Support for pending purchases must be enabled. Enable this by calling 'enablePendingPurchases()' on BillingClientBuilder.
        at com.android.billingclient.api.BillingClient$Builder.build(BillingClient.java:309)
        at com.aplicacion.vivaluganoapp.ar.ponerDineroActivity.setupBillingClient(ponerDineroActivity.java:144)
        at com.aplicacion.vivaluganoapp.ar.ponerDineroActivity.onCreate(ponerDineroActivity.java:125)

полный код:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_poner_dinero);

        recyclerProduct.setHasFixedSize(true);
        recyclerProduct.setLayoutManager(new LinearLayoutManager(this));
        BillingClient.Builder enablePendingPurchases = BillingClient.newBuilder(this).setListener(this);

 enablePendingPurchases.build();
setupBillingClient();
    }




    private void setupBillingClient() {


        billingClient = BillingClient.newBuilder (this).setListener(this).build();

        billingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult responseCode) {
                int maca = BillingClient.BillingResponseCode.OK;
                String maca2 = String.valueOf(maca);

                String maca3 = String.valueOf(responseCode);
                if (maca3 == maca2)
                {
                    Toast.makeText(ponerDineroActivity.this, "WORKS", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(ponerDineroActivity.this, "ERROR", Toast.LENGTH_SHORT).show();
                }

            }

            @Override
            public void onBillingServiceDisconnected() {
                Toast.makeText(ponerDineroActivity.this, "Disconnected from Billing", Toast.LENGTH_SHORT).show();
            }
        });

    }

если я размещаю только:

BillingClient.Builder enablePendingPurchases = BillingClient.newBuilder(this);

ошибка:

Caused by: java.lang.IllegalArgumentException: Please provide a valid listener for purchases updates.

любая помощь? я устал пытаться


person Vampi    schedule 07.06.2019    source источник


Ответы (2)


Из первой трассировки стека в вашем вопросе

Включите это, вызвав 'enablePendingPurchases()'

мы можем найти документацию для метода enablePendingPurchases()

Этот метод требуется для подтверждения того, что ваше приложение было обновлено для поддержки ожидающих покупок. Отложенные покупки не включаются автоматически, поскольку вашему приложению потребуются обновления, чтобы гарантировать, что право не будет предоставлено до того, как платеж будет защищен. Дополнительные сведения о том, как обрабатывать ожидающие транзакции, см. на странице https://developer.android.com/google/play/billing/billing_library_overview

Если этот метод не вызывается, создание экземпляра BillingClient завершается ошибкой.

Ваша строка кода должна быть:-

enablePendingPurchases = BillingClient.newBuilder(this)
   .enablePendingPurchases()
   .setListener(this);

Вместо :-

enablePendingPurchases = BillingClient.newBuilder(this).setListener(this);
person Hardy    schedule 08.06.2019
comment
у меня сработало следующее: billingClient = BillingClient.newBuilder(этот) .setListener(этот) .enablePendingPurchases(). строить (); но благодаря вашему ответу я могу этого добиться - person Vampi; 08.06.2019
comment
enablePendingPurchases и setListener обязательны! - person Yuri Misyac; 17.08.2020
comment
Когда вы включаете отложенные покупки, вам также необходимо проверить объект Purchase на наличие состояния покупки PURCHASED или PENDING, используя getPurchaseState(). Обратите внимание, что вы должны предоставлять право только тогда, когда состояние КУПЛЕНО. developer.android.com/google/play/billing/integrate#pending - person Chris Cartland; 20.07.2021

Это сработало для меня.

Просто добавьте enablePendingPurchases(), как показано ниже:

billingClient = BillingClient.newBuilder(this)
                             .setListener(this)
                             .enablePendingPurchases()
                             .build();
person Donaldo Azemaj    schedule 24.07.2019
comment
Когда вы включаете отложенные покупки, вам также необходимо проверить объект Purchase на наличие состояния покупки PURCHASED или PENDING, используя getPurchaseState(). Обратите внимание, что вы должны предоставлять право только тогда, когда состояние КУПЛЕНО. developer.android.com/google/play/billing/integrate#pending - person Chris Cartland; 20.07.2021