一次性商品的多商品

本文档介绍了如何将应用与 Play 结算库 (PBL) 的多商品功能集成。

借助一次性商品 (OTP) 的多商品功能,您可以将多个一次性商品组合成一个单元。然后,您可以统一购买、结算和管理这些捆绑产品。您还可以为这些捆绑式 OTP 创建折扣优惠,以激励用户购买商品。

注意事项

创建一次性商品套装时,请注意以下事项:

  • 一次性商品套装中不能包含订阅。
  • 您不能在同一一次性产品套装中同时包含数字内容和服务。
  • 捆绑的一次性商品必须可立即下载。 例如,一次性产品套装无法进行预订购买,因为无法立即下载。
  • 一次性商品的多商品广告不支持租购选项

与 Play 结算库集成

本部分假定您熟悉 PBL 的初始集成步骤,例如向应用添加 PBL 依赖项、初始化 BillingClient连接到 Google Play。本部分重点介绍特定于多产品 OTP 购买交易的 PBL 集成方面。

启动购买流程

如需针对多商品一次性商品启动购买流程,请执行以下步骤:

  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 类用于指定购买流程的详细信息。

    以下示例展示了如何针对多商品一次性购买交易启动结算流程:

    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 APIpurchases.products.get 中的 lineItems 列表。

实时开发者通知

对于多商品 OTP 购买交易,RTDN 中未提供 sku 字段。 多产品 OTP 购买交易表示购买了多种产品。因此,您可以使用 Play Developer API 获取购买数据,并查看其中的所有商品。

退款

在多商品一次性付款购买交易中,用户无法针对单件商品申请退款,您也无法针对单件商品办理退款。不过,允许针对整个多产品 OTP 购买交易申请和发放退款。如果您要为用户取消多商品 OTP 购买交易,则与该购买交易关联的所有授权都会被取消。

财务报告和对账

您可以使用收入报告来核对 Google Payoffs 和 Play 上的交易与您当前有效的多产品一次性付款购买交易。每个交易订单项都有一个订单 ID。对于多商品 OTP 购买交易,“收入”和“估计销售额”报告将包含单独的行(具有相同的订单 ID),用于显示每笔交易(例如费用、税费和退款)以及所涉及的每件商品的费用。

对于 Play 管理中心内的信息中心:

  • 管理中心的财务报告部分中显示的收入统计信息按各个产品细分。

  • 订单管理功能可反映多商品一次性付款购买交易,并显示所购商品的明细列表。在订单管理中,您可以撤消、取消或全额退款给用户。