本文說明如何將應用程式與 Play 帳款服務程式庫 (PBL) 的多產品功能整合。
一次性產品 (OTP) 的多產品功能可讓你將多個一次性產品組合成單一單位。這些組合產品隨後可一併購買、計費及管理。你也可以為這些組合式 OTP 建立折扣優惠,鼓勵消費者購買產品。
注意事項
建立一次性產品組合時,請注意下列事項:
- 一次性產品組合無法包含訂閱項目。
- 一次性產品組合中不得同時包含數位內容和服務。
- 組合包中的一次性產品必須可立即下載。 舉例來說,一次性產品套裝組合無法預購,因為無法立即下載。
- 一次性產品的多項產品功能不支援租借購買選項。
整合 Play 帳款服務程式庫
本節假設您已熟悉初始 PBL 整合步驟,例如在應用程式中新增 PBL 依附元件、初始化 BillingClient,以及連線至 Google Play。本節將著重於多產品 OTP 購買交易專屬的 PBL 整合面向。
啟動購買流程
如要啟動多產品一次性產品的購買流程,請按照下列步驟操作:
使用 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);
處理購買交易
處理多項產品的一次性購買交易,與處理現有單一商品購買交易的方式相同,如「將 Google Play 帳款服務程式庫整合至應用程式」一文所述。唯一不同的是,您必須授予所有產品的權限,而非僅授予多項產品一次性購買交易的權限,這樣使用者才能透過單筆交易取得多項權限。多項產品 OTP 購買交易會傳回多個項目,您可以使用 Google Play 帳款服務程式庫中的 Purchase.getProducts()
擷取這些項目,然後使用 Google Play Developer API 的 purchases.products.get
中的 lineItems
清單。
即時開發人員通知
多產品 OTP 購買交易的 RTDN 中未提供 sku
欄位。
多產品一次性購買交易代表購買多項產品。因此,您可以使用 Play Developer API 取得購買資料,並查看其中的所有項目。
退款
如果使用者透過 OTP 購買多項產品,無法針對個別商品申請退款,您也無法針對個別商品核發退款。不過,如果購買多項產品時使用一次性密碼,則可以申請並核發整筆交易的退款。如果為使用者取消多產品 OTP 購買交易,與該交易相關的所有權利都會取消。
財務報表和對帳
使用收益報表,根據 Google 付款和 Play 交易,核對有效的多產品 OTP 購買交易。每筆交易明細項目都有訂單 ID。如果購買多項產品時使用一次性密碼,收益和預估銷售報表會為每筆交易 (例如費用、稅金和退款) 顯示個別列 (具有相同訂單 ID),以及每項產品的相關資訊。
Play 管理中心的資訊主頁:
管理中心的「財務報表」部分會顯示個別產品的收益統計資料。
訂單管理功能會反映多項產品的 OTP 購買交易,並顯示所購商品的明細清單。在訂單管理中,您可以撤銷、取消或全額退還使用者的購買交易。