Android биллинг, как включить enablePendingPurchases () - PullRequest
4 голосов
/ 08 июня 2019

Я перешел от старой версии 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.

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

Ответы [ 3 ]

11 голосов
/ 08 июня 2019

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

Включите это, вызвав '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);
0 голосов
/ 24 июля 2019

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

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

billingClient = BillingClient.newBuilder(this)
                             .setListener(this)
                             .enablePendingPurchases()
                             .build();
0 голосов
/ 05 июля 2019
BillingClient billingClient = 
BillingClient.newBuilder(context!!)
.enablePendingPurchases()
.setListener(this)
 build()
    billingClient.startConnection(object : BillingClientStateListener {
        override fun onBillingSetupFinished(billingResult: BillingResult) {
            if (billingResult.responseCode==BillingClient.BillingResponseCode.OK) {
                skuList =  HashMap()
                skuList.put(BillingClient.SkuType.SUBS, listOf(getString(R.string.subscription_monthly),getString(R.string.subscription_yearly)))

                querySkuDetailsAsync(BillingClient.SkuType.SUBS,skuList.get(BillingClient.SkuType.SUBS),object :SkuDetailsResponseListener{
                    override fun onSkuDetailsResponse(billingResult: BillingResult?, skuDetailsList: MutableList<SkuDetails>?) {

                        DebugLog.e("DATAAA "+skuDetailsList?.size+"")
                    }
                })
            }
        }
        override fun onBillingServiceDisconnected() {
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    })
...