1 回限りのアイテムの複数商品

このドキュメントでは、アプリを Play Billing Library(PBL)の複数アイテム機能と統合する方法について説明します。

1 回限りのアイテム(OTP)の複数アイテム機能を使用すると、複数の 1 回限りのアイテムを 1 つのユニットにまとめることができます。これらのバンドルされたプロダクトは、まとめて購入、請求、管理できます。これらのバンドルされた OTP の割引特典を作成して、プロダクトの購入を促すこともできます。

考慮事項

1 回限りのアイテムのバンドルを作成する際は、次の点を考慮してください。

  • 1 回限りのアイテムのバンドルに定期購入を含めることはできません。
  • デジタル コンテンツとサービスを同じ 1 回限りの商品バンドルに含めることはできません。
  • バンドルされた 1 回限りのアイテムは、すぐにダウンロードできる必要があります。たとえば、1 回限りの商品バンドルはすぐにダウンロードできないため、予約購入はできません。
  • 1 回限りのアイテムのマルチアイテムは、レンタル購入オプションに対応していません。

Play Billing Library と統合する

このセクションでは、アプリに PBL 依存関係を追加するBillingClient を初期化する、Google Play に接続するなど、PBL の初期統合手順について理解していることを前提としています。このセクションでは、マルチプロダクト OTP 購入に固有の PBL 統合の側面について説明します。

購入フローを開始する

複数のアイテムを含む 1 回限りのアイテムの購入フローを開始する手順は次のとおりです。

  1. QueryProductDetailsParams.Builder.setProductList メソッドを使用して、すべての 1 回限りのアイテムを含む商品リストを作成します。

  2. BillingClient.queryProductDetailsAsync メソッドを使用して、1 回限りのアイテムをすべて取得します。

    次のサンプルは、すべての 1 回限りの商品を取得する方法を示しています。

    Java

    billingClient.queryProductDetailsAsync(
    queryProductDetailsParams,
    new ProductDetailsResponseListener() {
      public void onProductDetailsResponse(
          BillingResult billingResult, QueryProductDetailsResult productDetailsResult) {
        // check billingResult
        // …
        // process productDetailsList returned by QueryProductDetailsResult
        ImmutableList productDetailsList = productDetailsResult.getProductDetailsList();
        for (ProductDetails productDetails : productDetailsList) {
          for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails :
              productDetails.getOneTimePurchaseOfferDetailsList()) {
                 // …
          }
        }
      }
    });
  3. 1 回限りのアイテムごとに ProductDetails オブジェクトを設定します。

  4. 1 回限りのアイテムの詳細を BillingFlowParams.Builder.setProductDetailsParamsList メソッドで指定します。BillingFlowParams クラスは、購入フローの詳細を指定します。

    次のサンプルは、複数の商品を含む OTP 購入の課金フローを開始する方法を示しています。

    Java

    BillingClient billingClient =
       BillingClient.newBuilder()
        // set other options
        .build();
    // ProductDetails obtained from queryProductDetailsAsync().
    ProductDetails productDetails1 = ...;
    ProductDetails productDetails2 = ...;
    ArrayList productDetailsList = new ArrayList<>();
    productDetailsList.add(productDetails1);
    productDetailsList.add(productDetails2);
    BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(productDetailsList)
        .build();
    billingClient.launchBillingFlow(billingFlowParams);

購入を処理する

複数アイテムの 1 回限りの購入の処理は、Google Play Billing Library をアプリに統合するで説明されている既存の単一アイテムの購入と同じです。唯一の違いは、複数アイテムの 1 回限りの購入では、ユーザーが 1 回の購入で複数の利用資格を受け取れるように、1 つのアイテムだけでなくすべてのアイテムの利用資格を付与する必要があることです。複数アイテムの OTP 購入では複数のアイテムが返されます。これらのアイテムは、Google Play Billing Library の Purchase.getProducts() と、Google Play Developer APIpurchases.products.getlineItems リストを使用して取得できます。

リアルタイム デベロッパー通知

複数商品の OTP 購入の場合、RTDNsku フィールドが提供されません。複数商品の OTP 購入は、複数の商品を表します。そのため、Play Developer API を使用して購入データを取得し、その中のすべてのアイテムを確認できます。

払い戻し

複数の商品を含む 1 回限りの購入の場合、ユーザーは個々のアイテムの払い戻しをリクエストできず、デベロッパーも個々のアイテムの払い戻しを行うことはできません。ただし、複数のプロダクトの OTP 購入全体に対する払い戻しのリクエストと発行は許可されます。ユーザーの複数アイテムの OTP 購入をキャンセルすると、購入に関連付けられているすべての利用資格がキャンセルされます。

財務レポートと照合

収益レポートを使用して、有効なマルチプロダクト OTP の購入と Google Payoffs および Google Play での取引を照合します。各トランザクション明細項目には注文 ID があります。複数のプロダクトの OTP 購入の場合、収益と予想販売レポートには、各アイテムの請求、手数料、税金、払い戻しなどの各取引について、個別の行(同じ注文 ID)が含まれます。

Google Play Console のダッシュボードの場合:

  • コンソールの [財務レポート] セクションに表示される収益の統計情報は、個々のプロダクトごとに分類されています。

  • 注文管理には、複数の商品を含む OTP 購入が反映され、購入された商品の明細リストが表示されます。注文管理では、ユーザーの購入を取り消したり、キャンセルしたり、全額払い戻ししたりできます。