Мультипакеты для контента, оплачиваемого однократно

В этом документе рассказывается, как интегрировать в приложение функцию поддержки нескольких продуктов из библиотеки Play Платежей (PBL).

Функция "Несколько товаров для разовой покупки" позволяет объединять несколько товаров для разовой покупки в один. После этого их можно будет покупать, оплачивать и администрировать вместе. Вы также можете создать предложения со скидкой для этих пакетов, чтобы стимулировать покупку товаров.

Что нужно учесть

При создании разовых наборов продуктов учитывайте следующее:

  • В пакет контента для однократных покупок нельзя добавлять подписки.
  • Нельзя объединять цифровой контент и сервис в одном пакете контента для однократных покупок.
  • Контент, оплачиваемый однократно, должен быть доступен для скачивания сразу после покупки. Например, для контента для однократных покупок нельзя оформить предзаказ, поскольку его нельзя скачать сразу.
  • Для контента, оплачиваемого однократно, не поддерживается аренда.

Как интегрировать библиотеку Play Платежей

В этом разделе предполагается, что вы знакомы с начальными этапами интеграции библиотеки Google Play Платежей, например добавлением зависимости 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 содержит сведения о процессе покупки.

    В приведенном ниже примере показано, как запустить процесс оплаты для покупки нескольких товаров с помощью одноразового пароля:

    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 Платежей в приложение. Единственное отличие заключается в том, что для покупок нескольких товаров с разовой оплатой нужно предоставить права на все товары, а не на один. При покупке нескольких товаров с помощью одноразового кода возвращается несколько объектов, которые можно получить с помощью Purchase.getProducts() в библиотеке Google Play Платежей, а затем списка lineItems в purchases.products.get Google Play Developer API.

Уведомления для разработчиков в режиме реального времени

Поле sku не указано в RTDN для покупок с несколькими продуктами с помощью одноразового кода. Покупки с помощью одноразового пароля, включающие несколько товаров. Поэтому вы можете использовать Play Developer API, чтобы получать данные о покупках и просматривать все товары в них.

Возврат средств

При покупке нескольких товаров с разовой оплатой пользователи не могут запрашивать возврат средств за отдельные товары, и вы тоже не можете его оформить. Однако можно запросить и оформить возврат средств за всю покупку с несколькими товарами. Если вы отменяете покупку нескольких продуктов с одноразовой оплатой для пользователя, отменяются все права, связанные с этой покупкой.

Финансовая отчетность и сверка

С помощью отчета о доходах можно сопоставить активные покупки с разовой оплатой нескольких продуктов с выплатами Google и транзакциями в Google Play. У каждой позиции в строке транзакции есть идентификатор заказа. Если пользователь приобрел несколько товаров с помощью одноразового кода, в отчетах о доходах и расчетных продажах будут отдельные строки (с одинаковым идентификатором заказа) для каждой транзакции, например списания средств, комиссии, налога и возврата, для каждого товара.

Для панелей управления в Play Console:

  • Статистика дохода, представленная в разделе Финансовые отчеты консоли, разбита по отдельным продуктам.

  • В управлении заказами отражаются покупки нескольких товаров с помощью одноразового кода, а также списки приобретенных товаров. В разделе управления заказами можно отозвать, отменить или полностью вернуть средства за покупку пользователя.