本文說明如何將應用程式與 Play 帳款服務程式庫 (PBL) 的多產品功能整合。
單次產品 (OTP) 的多項產品功能可讓您將多個單次產品合併為單一單位。這些組合產品隨後可一併購買、計費及管理。你也可以為這些套裝組合 OTP 建立折扣優惠,鼓勵消費者購買產品。
注意事項
建立單次產品組合時,請注意下列事項:
- 單次產品組合中不得包含訂閱項目。
- 單次產品組合不得同時包含數位內容和服務。
- 組合包中的一次性產品必須可立即下載。 舉例來說,單次產品套裝組合無法預購,因為無法立即下載。
- 一次性產品的多項產品功能不支援「租借」購買選項。
整合 Play Billing Library
本節假設您已熟悉 PBL 整合的初始步驟,例如將 PBL 依附元件新增至應用程式、初始化 BillingClient,以及連線至 Google Play。本節將著重於 PBL 整合,特別是多產品 OTP 購買交易。
啟動購買流程
如要啟動多項一次性產品的購買流程,請按照下列步驟操作:
使用 QueryProductDetailsParams.Builder.setProductList 方法,建立包含所有單次產品的產品清單。
使用
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()) { // … } } } }); 為每個單次產品設定
ProductDetails物件。在
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 購買交易,並顯示購買項目的詳細清單。在訂單管理中,您可以撤銷、取消或全額退還使用者的購買交易。