一次性產品的多產品功能

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

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

注意事項

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

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

整合 Play Billing Library

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

啟動購買流程

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

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

處理購買交易

處理多項產品的 OTP 購買交易,與處理現有單一商品購買交易的方式相同,如「將 Google Play 帳款服務程式庫整合至應用程式」一文所述。唯一不同的是,您必須授予所有產品的權限,而非僅授予多項產品 OTP 購買交易的權限,這樣使用者才能透過單一購買交易取得多項權限。多項產品的 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 購買交易,並顯示購買項目的詳細清單。在訂單管理中,您可以撤銷、取消或全額退還使用者的購買交易。