Запуск биллинга не отображается - PullRequest
0 голосов
/ 11 января 2020

Возникли проблемы с реализацией биллинга в приложении, особенно с тестированием запуска Billing Flow.

  • Успешно подключается к службе выставления счетов.
  • Это работало ранее, но только в первый раз, затем мне пришлось вручную удалить покупку из управления заказами.
  • Я также заметил, что onPurchasesUpdated не вызывается.
  • Выполнение внутреннего теста на обновленном и совместимом устройстве.

Запрос сведений о продукте

public void queryProducts() {
        List<String> skuList = new ArrayList<>();
        skuList.add(COINS_5);
        skuList.add(COINS_15);
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

        billingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
                        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
                            for (SkuDetails skuDetails : skuDetailsList) {
                                String sku = skuDetails.getSku();
                                String price = skuDetails.getPrice();

                                flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();

                                if ("coins_5".equals(sku)) {
                                    coins5Price = price;
                                } else if ("coins_15".equals(sku)) {
                                    coins15Price = price;
                                }
                            }
                        }
                    }
                });
}

onPurchasedUpdated

@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (Purchase purchase : purchases) {
                handlePurchase(purchase);
            }
        } 
        else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
        }

        else {
        }

    }

Подтверждение покупки (не думайте, что это влияет на запуск потока выставления счетов)

public void handlePurchase(Purchase purchase) {
        Toast.makeText(CoinsActivity.this, "Handle purchase" , Toast.LENGTH_LONG).show();
        if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
            // Grant entitlement to the user.

            // Acknowledge the purchase if it hasn't already been acknowledged.
            if (!purchase.isAcknowledged()) {
                AcknowledgePurchaseParams acknowledgePurchaseParams =
                        AcknowledgePurchaseParams.newBuilder()
                                .setPurchaseToken(purchase.getPurchaseToken())
                                .build();
                client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);

            }
        }
    }

Буду признателен за любые советы, так как я застрял на этом некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...