一次性產品的多產品功能

本文說明如何將應用程式與 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 API 的 purchases.products.get 中的 lineItems 清單。

即時開發人員通知

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

退款

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

財務報表和對帳

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

Play 管理中心的資訊主頁:

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

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