本文档介绍了如何将应用与 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
类用于指定购买流程的详细信息。以下示例展示了如何针对多商品一次性购买交易启动结算流程:
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 结算库集成到您的应用中中所述。唯一的区别在于,对于多商品一次性购买交易,您需要授予所有商品的授权,而不是仅授予一个商品的授权,这样用户才能通过一次购买交易获得多项授权。多商品一次性购买交易会返回多个商品,您可以使用 Google Play 结算库中的 Purchase.getProducts()
检索这些商品,然后检索 Google Play Developer API 的 purchases.products.get
中的 lineItems
列表。
实时开发者通知
对于多商品 OTP 购买交易,RTDN 中未提供 sku
字段。
多产品 OTP 购买交易表示购买了多种产品。因此,您可以使用 Play Developer API 获取购买数据,并查看其中的所有商品。
退款
在多商品一次性付款购买交易中,用户无法针对单件商品申请退款,您也无法针对单件商品办理退款。不过,允许针对整个多产品 OTP 购买交易申请和发放退款。如果您要为用户取消多商品 OTP 购买交易,则与该购买交易关联的所有授权都会被取消。
财务报告和对账
您可以使用收入报告来核对 Google Payoffs 和 Play 上的交易与您当前有效的多产品一次性付款购买交易。每个交易订单项都有一个订单 ID。对于多商品 OTP 购买交易,“收入”和“估计销售额”报告将包含单独的行(具有相同的订单 ID),用于显示每笔交易(例如费用、税费和退款)以及所涉及的每件商品的费用。
对于 Play 管理中心内的信息中心:
管理中心的财务报告部分中显示的收入统计信息按各个产品细分。
订单管理功能可反映多商品一次性付款购买交易,并显示所购商品的明细列表。在订单管理中,您可以撤消、取消或全额退款给用户。