BillingFlowParams.Builder setSkuDetails для тестирования статических ответов Google Play Billing - PullRequest
0 голосов
/ 28 октября 2018

Я тестирую покупку в приложении, используя три зарезервированных идентификатора продукта для тестирования статического Google Play Billing отклики :

  • android.test.purchased
  • android.test.canceled
  • android.test.item_unavailable

Однако setSku и setType в классе BillingFlowParams.Builder * 1017 устарели*.Вместо этого мы должны использовать setSkuDetails(SkuDetails).

Как мне изменить BillingFlowParams в примере кода, чтобы использовать SkuDetails для идентификаторов тестируемого продукта?

BillingFlowParams flowParams = BillingFlowParams.newBuilder()
     .setSku(skuId)
     .setType(SkuType.INAPP) 
     .build();
int responseCode = mBillingClient.launchBillingFlow(flowParams);

1 Ответ

0 голосов
/ 28 октября 2018

Вы должны получить SkuDetails из BillingClient.querySkuDetailsAsync, пример кода может выглядеть следующим образом:

    private BillingClient mBillingClient;

    // ....

    mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() {
        @Override
        public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
            if (responseCode == BillingClient.BillingResponse.OK
                    && purchases != null) {

                // do something you want

            } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
            } else {
            }
        }
    }).build();


    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
            if (billingResponseCode == BillingClient.BillingResponse.OK) {
                // The billing client is ready. You can query purchases here.

                List<String> skuList = new ArrayList<>();
                skuList.add("android.test.purchased");

                SkuDetailsParams skuDetailsParams = SkuDetailsParams.newBuilder()
                        .setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();
                mBillingClient.querySkuDetailsAsync(skuDetailsParams,
                        new SkuDetailsResponseListener() {
                            @Override
                            public void onSkuDetailsResponse(int responseCode,
                                                             List<SkuDetails> skuDetailsList) {

                                BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                                        .setSkuDetails(skuDetailsList.get(0))
                                        .build();
                                int billingResponseCode = mBillingClient.launchBillingFlow(SkuActivity.this, flowParams);
                                if (billingResponseCode == BillingClient.BillingResponse.OK) {
                                    // do something you want
                                }
                            }
                        });

            }
        }

        @Override
        public void onBillingServiceDisconnected() {
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    });

Вы также можете взглянуть на https://developer.android.com/google/play/billing/billing_library_overview

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