Статья представляет собой подробное руководство по переходу с библиотеки Google Play Billing версии 7 на версию 8, а также по подготовке к будущей версии 9. Основное внимание уделяется срокам устаревания, изменениям в API, обновленным потокам подключения, запросов и покупок, а также новым возможностям, появившимся в версиях 8–8.3.
Ключевым моментом является график устаревания: после 31 августа 2026 года Google Play Console перестанет принимать новые приложения или обновления, скомпилированные с использованием Play Billing Library v7. Это означает, что разработчикам необходимо завершить миграцию до этой даты, чтобы избежать проблем с публикацией.
В версии 8 были удалены несколько устаревших API, таких как querySkuDetailsAsync(), queryPurchaseHistoryAsync() и enablePendingPurchases() (без аргументов). Для каждого удаленного API приведены соответствующие замены или рекомендации по альтернативным подходам, например, отслеживание истории покупок на стороне сервера.
Процесс миграции включает в себя несколько шагов. На первом этапе необходимо обновить зависимость Gradle и, при необходимости, `minSdkVersion` до 23, начиная с версии 8.1.0. Далее следует миграция `enablePendingPurchases()`, которая теперь требует явного указания категорий продуктов, для которых требуется поддержка отложенных покупок.
Обновления коснулись и методов запроса информации о продуктах. queryProductDetailsAsync() теперь имеет измененный колбэк ProductDetailsResponseListener, который возвращает QueryProductDetailsResult с разделением на успешно полученные и не полученные продукты. Также произошли терминологические изменения: «in app items» теперь называются «one time products», что отражает возможность наличия нескольких вариантов покупки и предложений для них.
Версия 8 также вводит новые поведенческие аспекты, которые стоит принять. Например, «one time products» теперь могут иметь несколько предложений, как и подписки. Кроме того, упоминается переход от «alternative billing» к «user choice billing», что требует обновления соответствующих слушателей.
Статья также затрагивает изменения в версиях 8.1, 8.2 и 8.3, которые добавляют дополнительный функционал. Наконец, даются рекомендации по подготовке к версии 9, даже до того, как ее API-интерфейс будет полностью опубликован, что позволяет разработчикам быть на шаг впереди.

