一次性產品的多產品功能

本文說明如何將應用程式與 Play 帳款服務程式庫 (PBL) 的多產品功能整合。

一次性產品 (OTP) 的多產品功能可讓你將多個一次性產品組合成單一單位。這些組合產品隨後可一併購買、計費及管理。你也可以為這些組合式 OTP 建立折扣優惠,鼓勵消費者購買產品。

注意事項

建立一次性產品組合時,請注意下列事項:

  • 一次性產品組合無法包含訂閱項目。
  • 一次性產品組合中不得同時包含數位內容和服務。
  • 組合包中的一次性產品必須可立即下載。 舉例來說,一次性產品套裝組合無法預購,因為無法立即下載。
  • 一次性產品的多項產品功能不支援租借購買選項

整合 Play 帳款服務程式庫

本節假設您已熟悉初始 PBL 整合步驟,例如在應用程式中新增 PBL 依附元件、初始化 BillingClient,以及連線至 Google Play。本節將著重於多產品 OTP 購買交易專屬的 PBL 整合面向。

啟動購買流程

如要啟動多產品一次性產品的購買流程,請按照下列步驟操作:

  1. 使用 QueryProductDetailsParams.Builder.setProductList 方法,建立包含所有一次性產品的產品清單。

  2. 使用 BillingClient.queryProductDetailsAsync 方法擷取所有一次性產品。

    以下範例說明如何擷取所有一次性商品:

    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. 為每個一次性產品設定 ProductDetails 物件。

  4. 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);

處理購買交易

處理多項產品的一次性購買交易,與處理現有單一商品購買交易的方式相同,如「將 Google Play 帳款服務程式庫整合至應用程式」一文所述。唯一不同的是,您必須授予所有產品的權限,而非僅授予多項產品一次性購買交易的權限,這樣使用者才能透過單筆交易取得多項權限。多項產品 OTP 購買交易會傳回多個項目,您可以使用 Google Play 帳款服務程式庫中的 Purchase.getProducts() 擷取這些項目,然後使用 Google Play Developer APIpurchases.products.get 中的 lineItems 清單。

即時開發人員通知

多產品 OTP 購買交易的 RTDN 中未提供 sku 欄位。 多產品一次性購買交易代表購買多項產品。因此,您可以使用 Play Developer API 取得購買資料,並查看其中的所有項目。

退款

如果使用者透過 OTP 購買多項產品,無法針對個別商品申請退款,您也無法針對個別商品核發退款。不過,如果購買多項產品時使用一次性密碼,則可以申請並核發整筆交易的退款。如果為使用者取消多產品 OTP 購買交易,與該交易相關的所有權利都會取消。

財務報表和對帳

使用收益報表,根據 Google 付款和 Play 交易,核對有效的多產品 OTP 購買交易。每筆交易明細項目都有訂單 ID。如果購買多項產品時使用一次性密碼,收益和預估銷售報表會為每筆交易 (例如費用、稅金和退款) 顯示個別列 (具有相同訂單 ID),以及每項產品的相關資訊。

Play 管理中心的資訊主頁:

  • 管理中心的「財務報表」部分會顯示個別產品的收益統計資料。

  • 訂單管理功能會反映多項產品的 OTP 購買交易,並顯示所購商品的明細清單。在訂單管理中,您可以撤銷、取消或全額退還使用者的購買交易。