web-dev-qa-db-ja.com

BillingFlowParams.Builder setSkuDetailsは、静的なGoogle Play請求応答をテストします

静的なGoogle Play請求をテストするために予約済みの3つの製品IDを使用してアプリ内購入をテストしています responses

  • Android.test.purchased
  • Android.test.canceled
  • Android.test.item_unavailable

ただし、setSkuおよびsetTypeは、BillingFlowParams.Builderclass では非推奨のようです。代わりに、setSkuDetails(SkuDetails)を使用する必要があります。

サンプルコードのBillingFlowParamsを変更して、テスト製品IDにSkuDetailsを使用するにはどうすればよいですか?

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

billingClient.querySkuDetailsAsyncからSkuDetailsを取得する必要があります。サンプルコードは次のようになります。

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 = billingClient.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 もご覧ください

11
Renkuei