一次性產品的多產品功能

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

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

注意事項

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

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

整合 Play Billing Library

本節假設您熟悉 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 Billing Library 整合至應用程式」一文所述。唯一不同的是,您必須授予所有產品的授權,而非僅授予多項產品一次性購買交易的授權,這樣使用者才能透過單筆交易取得多項授權。多項產品 OTP 購買交易會傳回多個項目,您可以使用 Google Play 帳款服務程式庫中的 Purchase.getProducts() 擷取這些項目,然後使用 Google Play Developer APIpurchases.products.get 中的 lineItems 清單。

即時開發人員通知

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

退款

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

財務報表和對帳

使用收益報表,根據 Google Payoffs 和 Play 交易,核對有效的 OTP 多產品購買交易。每筆交易明細項目都有訂單 ID。如果 OTP 購買交易包含多項產品,收益和預估銷售報表會為每筆交易 (例如費用、稅金和退款) 分別列出資料列 (具有相同的訂單 ID)。

Play 管理中心資訊主頁:

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

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