В этом документе содержатся примечания к выпуску библиотеки Google Play Billing.
навыки Android
Просмотреть на GitHub Обновить библиотеку Play Billing.
android skills add --skill play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.
Выпуск библиотеки Google Play Billing 9.1.0 (18.06.2026)
Теперь доступна версия 9.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Новые API для системы выбора способа оплаты :
- Добавлен
BillingClient.getBillingChoiceInfoAsync()для получения информации о доступных пользователю вариантах оплаты. - Добавлен класс
BillingChoiceInfo, содержащий подробную информацию об ответе, включая URL-адреса изображений и данные о программе лояльности. - Добавлена
GetBillingChoiceInfoParamsдля настройки запроса. - Добавлен
BillingChoiceInfoResponseListenerдля приема обратного вызова. - Добавлена функция приостановки работы расширения Kotlin
BillingClient.getBillingChoiceInfo(). - Добавлена
BillingClient.showBillingProgramInformationDialog()для отображения информационного диалога для программы выставления счетов. - Добавлены параметры диалога
BillingProgramInformationDialogParamsдля настройки диалога. - Добавлен обработчик
BillingProgramInformationDialogListenerдля приема обратного вызова. - Добавлена информация о доступности вариантов оплаты в
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails. - Добавлен
ChoiceScreenTypeдля указания типа экрана выбора.
- Добавлен
Выпуск библиотеки Google Play Billing 9.0.0 (19.05.2026)
Вышла версия 9.0.0 библиотеки Google Play Billing Library и расширений Kotlin. Если вы хотите перейти с предыдущих версий PBL, ознакомьтесь с руководством по миграции на PBL 9 .
Краткое описание изменений
Обновлены коды ошибок для заблокированных приложений Play Store : коды ошибок для заблокированных приложений Play Store были обновлены. В случаях, когда приложение Play Store блокируется системой (например, в детском режиме, настроенном производителем), код ответа изменился с
ERRORнаBILLING_UNAVAILABLE. Кроме того, в таких случаяхBillingResultтеперь отображает отладочное сообщение о блокировке Play Store .Обновление параметра `@Nullable` для предоставляемых разработчиком платежей : метод `
DeveloperProvidedBillingDetails.getLinkUri()теперь имеет параметр@Nullable. Это изменение поддерживает сценарии, когда прямая ссылка URI для внешних платежей недоступна на этапе выбора способа оплаты.Для безопасной обработки этого изменения убедитесь, что ваш интеграционный код обрабатывает как значения
null, так и пустые строковые значения ("") из методаDeveloperProvidedBillingDetails.getLinkUri()перед анализом или запуском намерений браузера.Обновлена версия
targetSdkVersionдо 35.Теперь вы можете использовать внутриигровые сообщения , чтобы уведомлять пользователей о предстоящем повышении цен, на которое они могут согласиться. Это позволяет пользователям подтвердить повышение цены, не покидая приложение. Сообщение о предстоящем повышении цен, на которое пользователь может согласиться, отображается начиная с первого дня, когда он может принять повышение цены, и отображается максимум один раз в 7 дней.
Выпуск библиотеки Google Play Billing 8.3.0 (23.12.2025)
Теперь доступна версия 8.3.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Новые API для внешних платежей :
- Добавлены классы для поддержки обработки внешних платежей:
- Добавлена
enableBillingProgram(EnableBillingProgramParams)для включения внешних платежей. - Добавлена
BillingFlowParams.Builder.enableDeveloperBillingOptionдля запуска процесса внешних платежей.
Выпуск библиотеки Google Play Billing 8.2.1 (15.12.2025)
Теперь доступна версия 8.2.1 библиотеки Google Play Billing Library и расширений Kotlin.
Исправлены ошибки
- Исправлена ошибка в
isBillingProgramAvailableAsyncиcreateBillingProgramReportingDetailsAsync. Для использования этих API, представленных в версии 8.2.0, обновите приложение до версии 8.2.1.
Выпуск библиотеки Google Play Billing 8.2.0 (09.12.2025)
Вышла версия 8.2.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Новые API для внешних ссылок на контент и внешних предложений :
- Добавлена
enableBillingProgramдля настройкиBillingClientдля этих программ. - Добавлена
isBillingProgramAvailableAsyncдля определения права пользователя на участие в программе. - Добавлена
createBillingProgramReportingDetailsAsyncдля создания внешнего токена транзакции, который необходимо использовать для формирования отчетов. - Добавлена
launchExternalLinkдля инициализации внешней ссылки на предложение цифрового контента или загрузку приложения.
- Добавлена
Изменения в программе внешних предложений :
- Внесены изменения в политику программы внешних предложений. Подробности см. в разделе «Изменения в программе» . Чтобы понять, как запускать потоки внешних предложений с помощью новых API, см. руководство по интеграции .
- API
BillingClient.Builder.enableExternalOfferобъявлен устаревшим. - API
isExternalOfferAvailableAsyncобъявлен устаревшим. - API
createExternalOfferReportingDetailsAsyncобъявлен устаревшим. - API
showExternalOfferInformationDialogобъявлен устаревшим.
Выпуск библиотеки Google Play Billing 8.1.0 (06.11.2025)
Вышла версия 8.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Приостановленные подписки
В метод
BillingClient.queryPurchasesAsync()добавлен новый параметр, позволяющий учитывать приостановленные подписки при запросе информации о подписках. Приостановленные подписки по-прежнему приписываются пользователю, но не активны, либо потому что пользователь приостановил подписку, либо потому что способ оплаты продления был отклонен.Объект
Purchaseвозвращаемый в обработчике событий, вернетisSuspended() = trueдля всех приостановленных подписок. В этом случае не следует предоставлять доступ к приобретенной подписке, а вместо этого направить пользователя в центр подписок , где он сможет управлять способами оплаты или приостановить подписку для ее повторной активации.Обновления подписок :
Объект
BillingFlowParams.ProductDetailsParamsтеперь имеет методsetSubscriptionProductReplacementParams(), в котором можно указать информацию о замене на уровне продукта.Объект
SubscriptionProductReplacementParamsимеет два метода-сеттера:-
setOldProductId: Старый товар, который необходимо заменить товаром из текущихProductDetails. -
setReplacementMode: Это режим замены на уровне элемента. Режимы по сути те же, что и в SubscriptionUpdateParams, но сопоставление значений было обновлено. Введен новый режим заменыKEEP_EXISTING, который позволяет сохранить существующий график платежей без изменений для элемента.
-
Метод `SubscriptionUpdateParams setSubscriptionReplacementMode` устарел. Вместо него следует использовать
SubscriptionProductReplacementParams.setReplacementMode.
Обновлена
minSdkVersionдо 23.Включены API для предварительных заказов товаров, приобретаемых разово.
Теперь доступен для использования API-функция
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails(), которая получает информацию о предварительном заказе.Библиотека Google Play Billing теперь поддерживает Kotlin версии 2.2.0 .
Выпуск библиотеки Google Play Billing 8.0.0 (30.06.2025)
Вышла версия 8.0.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Теперь внутриигровые товары будут называться разовыми продуктами .
Множество вариантов покупки и предложений для товаров, приобретаемых разово.
Теперь вы можете предлагать несколько вариантов покупки и акций для своих разовых товаров. Это обеспечивает гибкость в способах продажи вашей продукции и упрощает управление ею.
Улучшен метод
queryProductDetailsAsync().До версии PBL 8.0.0 метод
queryProductDetailsAsync()не возвращал товары, которые не удалось получить. Это могло быть связано с такими причинами, как отсутствие товара или отсутствие доступных пользователю предложений. В версии PBL 8.0.0 неполученные товары возвращаются с новым кодом состояния на уровне товара, который предоставляет информацию о неполученных товарах. Обратите внимание, что произошла сигнатура методаProductDetailsResponseListener.onProductDetailsResponse(), что требует внесения изменений в ваше приложение. Для получения дополнительной информации см. раздел «Обработка результата» .Автоматическое восстановление соединения.
Новый параметр конструктора
BillingClient.Builder.enableAutoServiceReconnection()позволяет разработчикам включить автоматическое переподключение к сервису, что упрощает управление соединениями, обрабатывая переподключения к Play Billing Service автоматически и устраняя необходимость вручную вызыватьstartConnection()в случае разрыва соединения. Для получения дополнительной информации см. раздел «Автоматическое восстановление соединения» .Подкоды ответа для метода
launchBillingFlow().Теперь объект BillingResult, возвращаемый функцией
launchBillingFlow(), будет содержать поле с кодом подответа. Это поле будет заполняться только в некоторых случаях для указания более конкретной причины сбоя. Поле подответа может принимать следующие значения:-
PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- Возвращается, когда на счету пользователя меньше стоимости товара, который он пытается приобрести. -
USER_INELIGIBLE— Возвращается, если пользователь не соответствует заданным требованиям для получения подписки. -
NO_APPLICABLE_SUB_RESPONSE_CODE— значение по умолчанию, возвращаемое, если ни один другой код подответа не применим.
-
Удалён метод
queryPurchaseHistory().Метод
queryPurchaseHistory(), ранее помеченный как устаревший, теперь удален. Подробную информацию об альтернативных API-интерфейсах см. в разделе «Запрос истории покупок» .Удалён метод
querySkuDetailsAsync().Метод
querySkuDetailsAsync(), ранее помеченный как устаревший, теперь удален. Вместо него следует использовать queryProductDetailsAsync .Удалён метод
BillingClient.Builder.enablePendingPurchases().Метод
enablePendingPurchases()без параметров, ранее помеченный как устаревший, теперь удален. Вместо него следует использоватьenablePendingPurchases(PendingPurchaseParams params). Обратите внимание, что устаревший методenablePendingPurchases()функционально эквивалентенenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).Удалён перегруженный метод
queryPurchasesAsync(), принимающий в качестве параметра skuType .Метод
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)ранее помеченный как устаревший, теперь удален. В качестве альтернативы используйтеqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener).
Выпуск библиотеки Google Play Billing 7.1.1 (03.10.2024)
Теперь доступна версия 7.1.1 библиотеки Google Play Billing Library и расширений Kotlin.
Исправлены ошибки
- Исправлена ошибка в Play Billing Library 7.1.0, связанная с тестированием кодов ответа
BillingResult.
Выпуск библиотеки Google Play Billing 7.1.0 (19.09.2024)
Вышла версия 7.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Улучшена безопасность потоков, связанных со состоянием и управлением соединениями.
- Внесены частичные изменения в тестирование кодов ответов
BillingResult, которые полностью включены в Play Billing Library 7.1.1. Для тестирования интеграции с использованием этой функции необходимо обновить Play Billing Library до версии 7.1.1. Существует ошибка, которая затронет только приложения с включенным тестированием переопределения платежей и не повлияет на обычное использование. Для получения дополнительной информации см. раздел «Тестирование кодов ответовBillingResult.
Выпуск библиотеки Google Play Billing 7.0.0 (14.05.2024)
Вышла версия 7.0.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Добавлены API для поддержки подписок в рассрочку.
- Добавлена информация о базовых планах рассрочки
ProductDetails.InstallmentPlanDetails, доступных пользователям для покупки. Этот API помогает вашему приложению идентифицировать план рассрочки и настройки обязательств, чтобы предоставить пользователю соответствующую информацию. Для получения дополнительной информации см. наше руководство по рассрочке подписки .
- Добавлена информация о базовых планах рассрочки
Добавлены
PendingPurchasesParamsиBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)для заменыBillingClient.Builder.enablePendingPurchases(), который устарел в этом релизе.- Устаревшая функция
enablePendingPurchases()функционально эквивалентнаenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
- Устаревшая функция
Добавлены API для поддержки незавершенных транзакций по предоплаченным тарифным планам подписки:
- Используйте
PendingPurchasesParams.Builder.enablePrepaidPlans()вместе сBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)чтобы включить обработку ожидающих транзакций для предоплаченных тарифных планов подписки. При добавлении поддержки убедитесь, что ваше приложение также корректно управляет жизненным циклом подписки. Для получения дополнительной информации см. наше руководство по ожидающим покупкам . - Добавлены
Purchase.PendingPurchaseUpdateиPurchase.getPendingPurchaseUpdate()для получения информации о незавершенном пополнении, обновлении или понижении уровня существующей подписки.
- Используйте
Удалены
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListenerиAlternativeChoiceDetails.- Разработчикам следует использовать
BillingClient.Builder.enableUserChoiceBilling()сUserChoiceBillingListenerиUserChoiceDetailsв функции обратного вызова слушателя.
- Разработчикам следует использовать
Удалены
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()иBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().- Разработчикам следует использовать
BillingFlowParams.SubscriptionUpdateParams.ReplacementModeсBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)вместо этого.
- Разработчикам следует использовать
Удален метод
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken().- Разработчикам следует использовать
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)вместо этого.
- Разработчикам следует использовать
BillingClient.queryPurchaseHistoryAsync()устарел и будет удален в будущих версиях. Разработчикам следует использовать следующие альтернативы:- Подтвержденные и ожидающие подтверждения покупки: используйте
BillingClient.queryPurchasesAsync()для получения активных покупок. - Использованные покупки: Разработчики должны отслеживать использованные покупки на своих собственных серверах.
- Отменённые покупки: воспользуйтесь API для разработчиков, позволяющим отменять покупки .
- Для получения более подробной информации см. раздел «История покупок по запросу».
- Подтвержденные и ожидающие подтверждения покупки: используйте
Теперь
BillingFlowParams.ProductDetailsParams.setOfferToken()выдает исключение, если разработчики указывают пустойofferToken.Обновлены значения
minSdkVersionдо 21 иtargetSdkVersionдо 34.
Выпуск библиотеки Google Play Billing 6.2.1 (16.04.2024)
Теперь доступна версия 6.2.1 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Исправлена ошибка в
BillingClient.showAlternativeBillingOnlyInformationDialog(), из-за которой в некоторых случаях после завершения диалога мог не вызываться обработчикAlternativeBillingOnlyInformationDialogListener.
Выпуск библиотеки Google Play Billing 6.2.0 (06.03.2024)
Вышла версия 6.2.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Добавлены API для поддержки внешних предложений.
- Добавлена
BillingClient.Builder.enableExternalOffer(), позволяющая предоставлять внешние предложения. - Добавлена функция
BillingClient.isExternalOfferAvailableAsync()для проверки доступности функциональности предоставления внешних предложений. - Добавлена
BillingClient.showExternalOfferInformationDialog()для отображения информационного диалога пользователям перед тем, как вывести их из приложения. - Добавлена
BillingClient.createExternalOfferReportingDetailsAsync()для создания данных, необходимых для формирования отчетов о транзакциях, совершенных через внешние предложения.
- Добавлена
Выпуск библиотеки Google Play Billing 6.1.0 (14.11.2023)
Вышла версия 6.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Добавлены API для поддержки только альтернативных способов оплаты (т.е. без выбора пользователя).
- Добавлена функция
BillingClient.Builder.enableAlternativeBillingOnly(), позволяющая предлагать только альтернативные способы оплаты. - Добавлена
BillingClient.isAlternativeBillingOnlyAvailableAsync()для проверки возможности предоставления только альтернативных способов оплаты. - Добавлена
BillingClient.showAlternativeBillingOnlyInformationDialog()для отображения информационного диалога, информирующего пользователей о том, что используется только альтернативная система выставления счетов. - Добавлен
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()для создания данных, необходимых для формирования отчетов о транзакциях, совершенных только через альтернативный способ выставления счетов.
- Добавлена функция
- Обновлены API для управления платежами по выбору пользователя.
- Добавлен
UserChoiceBillingListenerдля замены AlternativeBillingListener , который был помечен как устаревший. - Добавлен
UserChoiceDetailsдля замены классаAlternativeChoiceDetails, который был помечен как устаревший. - Добавлена
BillingClient.Builder.enableUserChoiceBilling()для замены функцииBillingClient.Builder.enableAlternativeBilling(), которая была помечена как устаревшая.
- Добавлен
- Добавлена
BillingClient.getBillingConfigAsync()для получения информации о стране в Google Play.
Выпуск библиотеки Google Play Billing 6.0.1 (22.06.2023)
Вышла версия 6.0.1 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Обновите библиотеку Play Billing для обеспечения совместимости с Android 14.
Выпуск библиотеки Google Play Billing 6.0 (10.05.2023)
Вышла версия 6.0.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Добавлен новый перечислимый тип
ReplacementModeдля заменыProrationMode.Обратите внимание, что
ProrationModeпо-прежнему доступен для обеспечения обратной совместимости.Удалены идентификаторы заказов для
PENDINGпокупок.Ранее идентификатор заказа всегда создавался, даже если покупка находилась в статусе "Ожидание". Начиная с версии 6.0.0, идентификатор заказа для ожидающих покупок создаваться не будет, и для таких покупок он будет заполняться после того, как покупка перейдет в состояние
PURCHASED".Удалены методы
queryPurchasesиlaunchPriceConfirmationFlow.Методы
queryPurchasesиlaunchPriceConfirmationFlow, ранее помеченные как устаревшие, теперь удалены в Play Billing Library 6.0.0. Разработчикам следует использоватьqueryPurchasesAsyncвместоqueryPurchases. АльтернативыlaunchPriceConfirmationFlowсм. в разделе « Изменения цен» .Добавлен новый код ответа об ошибке сети.
Начиная с версии PBL 6.0.0, добавлен новый код ошибки сети —
NETWORK_ERROR. Этот код возвращается при возникновении ошибки, связанной с проблемами сетевого подключения. Ранее такие ошибки сетевого подключения обозначались какSERVICE_UNAVAILABLE.Обновлены значения
SERVICE_UNAVAILABLEиSERVICE_TIMEOUT.Начиная с версии PBL 6.0.0, ошибки, вызванные превышением времени обработки, будут возвращаться как
SERVICE_UNAVAILABLEвместо текущего значенияSERVICE_TIMEOUT.В более ранних версиях PBL это поведение не изменилось.
Удален
SERVICE_TIMEOUT.Начиная с версии PBL 6.0.0,
SERVICE_TIMEOUTбольше не будет возвращаться. В предыдущих версиях PBL этот код по-прежнему возвращался.Добавлено дополнительное логирование.
В релизе Play Billing Library 6 добавлено дополнительное логирование, позволяющее получить представление об использовании API (например, об успешности и неудаче) и проблемах с подключением к сервису. Эта информация будет использована для повышения производительности Play Billing Library и улучшения поддержки при возникновении ошибок.
Выпуск библиотеки Google Play Billing 5.2.1 (22.06.2023)
Теперь доступна версия 5.2.1 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Обновите библиотеку Play Billing для обеспечения совместимости с Android 14.
Выпуск библиотеки Google Play Billing 5.2 (06.04.2023)
Вышла версия 5.2.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
- Добавлены классы для поддержки альтернативных способов оплаты на мобильных устройствах/планшетах для пользователей из Южной Кореи:
- Добавлен метод
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()для указания внешнего идентификатора транзакции исходной подписки. - Добавлен метод
BillingClient.Builder.enableAlternativeBilling(), позволяющий пользователям в Южной Корее выбирать альтернативный способ оплаты.
Выпуск библиотеки Google Play Billing 5.1 (31.10.2022)
Вышла версия 5.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Данная версия содержит следующие изменения.
Краткое описание изменений
- Добавлен метод
ProductDetails.SubscriptionOfferDetails.getOfferId()для получения идентификатора предложения. - Добавлен метод
ProductDetails.SubscriptionOfferDetails.getBasePlanId()для получения идентификатора базового плана. - Обновлена переменная
targetSdkVersionдо 31.
Выпуск библиотеки Google Play Billing 5.0 (11.05.2022)
Вышла версия 5.0.0 библиотеки Google Play Billing Library и расширений Kotlin.
Данная версия содержит следующие изменения.
Краткое описание изменений
- Введена новая модель подписок, включающая новые сущности, позволяющие создавать несколько предложений для одного продукта подписки. Для получения дополнительной информации см. руководство по миграции .
- Добавлена
BillingClient.queryProductDetailsAsync()вместоBillingClient.querySkuDetailsAsync(). - Добавлен метод
setIsOfferPersonalized()для соответствия требованиям ЕС к раскрытию персонализированной цены. Подробнее об использовании этого метода см. в разделе «Указание персонализированной цены» . - Удален
queryPurchases(), который ранее считался устаревшим, и заменен методом queryPurchasesAsync, представленным в библиотеке Google Play Billing Library версии 4.0.0. -
launchPriceChangeFlowустарела и будет удалена в будущих версиях. Для получения дополнительной информации об альтернативах см. раздел «Запуск процесса подтверждения изменения цены» . - Удалён
setVrPurchaseFlow(), который ранее использовался при создании экземпляра процесса покупки. В предыдущих версиях этот метод перенаправлял пользователя на устройство Android для завершения покупки. После удаления этого метода пользователи будут завершать покупку через стандартный процесс покупки.
Выпуск библиотеки Google Play Billing 4.1 (23.02.2022)
Вышла версия 4.1.0 библиотеки Google Play Billing Library и расширений Kotlin.
Данная версия содержит следующие изменения.
Краткое описание изменений
- Добавлена
BillingClient.showInAppMessages()для обработки отказов в оплате подписки. Подробнее об использовании внутриигровых сообщений для обработки отказов в оплате подписки см. в разделе «Обработка отказов в оплате» .
Выпуск библиотеки Google Play Billing 4.0 (18.05.2021)
Вышла версия 4.0.0 библиотеки Google Play Billing Library и расширений Kotlin.
Краткое описание изменений
Добавлен
BillingClient.queryPurchasesAsync()вместоBillingClient.queryPurchases(), который будет удален в будущей версии.Добавлен новый режим замены подписки
IMMEDIATE_AND_CHARGE_FULL_PRICE.Добавлен метод
BillingClient.getConnectionState()для получения состояния подключения библиотеки Play Billing.Обновлены Javadoc и реализация, чтобы указать, в каком потоке можно вызвать метод и в каком потоке публикуются результаты.
Добавлен
BillingFlowParams.Builder.setSubscriptionUpdateParams()в качестве нового способа инициирования обновления подписки. Он заменяетBillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationModeиBillingFlowParams.Builder#setOldSku, которые были удалены.Добавлены
Purchase.getQuantity()иPurchaseHistoryRecord.getQuantity().Добавлены
Purchase#getSkus()иPurchaseHistoryRecord#getSkus(). Они заменяютPurchase#getSkuиPurchaseHistoryRecord#getSku, которые были удалены.Удалены
BillingFlowParams#getSku,BillingFlowParams#getSkuDetailsиBillingFlowParams#getSkuType.
Выпуск библиотеки Google Play Billing 3.0.3 (12.03.2021)
Вышла версия 3.0.3 библиотеки Google Play Billing Library, расширения Kotlin и плагина Unity.
Исправлены ошибки в Java и Kotlin.
- Исправлена утечка памяти при вызове функции
endConnection(). - Исправлена ошибка, возникающая при использовании библиотеки Google Play Billing приложениями, работающими в режиме запуска одной задачи. При возобновлении работы приложения из лаунчера Android, если диалоговое окно оплаты было видно до приостановки, будет вызываться обратный вызов
onPurchasesUpdated()
Исправлены ошибки в Unity
- Обновление до версии Java 3.0.3 исправляет утечку памяти и устраняет проблему, препятствующую совершению покупок при возобновлении работы приложения из лаунчера Android, если диалоговое окно оплаты было видно до приостановки.
Выпуск библиотеки Google Play Billing 3.0.2 (24.11.2020)
Теперь доступна версия 3.0.2 библиотеки Google Play Billing Library и расширения Kotlin.
Исправлены ошибки
- Исправлена ошибка в расширении Kotlin, из-за которой сопрограмма завершалась с ошибкой "Already resumed".
- Исправлены неразрешенные ссылки при использовании расширения Kotlin с библиотекой kotlinx.coroutines версии 1.4 и выше.
Выпуск библиотеки Google Play Billing 3.0.1 (30.09.2020)
Теперь доступна версия 3.0.1 библиотеки Google Play Billing Library и расширения Kotlin.
Исправлены ошибки
- Исправлена ошибка, из-за которой при закрытии и повторном запуске приложения во время процесса выставления счетов
PurchasesUpdatedListenerмог не вызываться с результатом покупки.
Выпуск Google Play Billing Library 3.0 (08.06.2020)
Вышла версия 3.0.0 библиотеки Google Play Billing Library, расширения Kotlin и плагина Unity.
Краткое описание изменений
- Удалена поддержка SKU, за которые начислялись награды.
- Удалены параметры
ChildDirectedиUnderAgeOfConsent. - Удалены устаревшие методы полезной нагрузки для разработчиков.
- Удалены устаревшие методы
BillingFlowParams.setAccountId()иBillingFlowParams.setDeveloperId(). - Удалены устаревшие методы
BillingFlowParams.setOldSkus(String oldSku)иBillingFlowParams.addOldSku(String oldSku). - Добавлены аннотации, указывающие на возможность присвоения значения null.
Исправлены ошибки
-
SkuDetails.getIntroductoryPriceCycles()теперь возвращаетintвместоString. - Исправлена ошибка, из-за которой процесс выставления счетов рассматривался как имеющий дополнительные параметры, даже если дополнительные параметры не были заданы.
Выпуск библиотеки Google Play Billing 2.2.1 (2020-05-20)
Вышла версия 2.2.1 библиотеки Google Play Billing.
Исправлены ошибки
- Обновлена версия библиотеки Java Play Billing по умолчанию, от которой зависит расширение Kotlin.
Выпуск библиотеки Google Play Billing версии 2.2.0 и поддержка Unity (23.03.2020)
В версии 2.2.0 Google Play Billing добавлена функциональность, которая помогает разработчикам гарантировать, что покупки будут привязаны к правильному пользователю. Эти изменения устраняют необходимость в создании пользовательских решений на основе данных, предоставленных разработчиком. В рамках этого обновления функциональность, связанная с данными разработчика, устарела и будет удалена в будущем релизе. Для получения дополнительной информации, включая рекомендуемые альтернативы, см. раздел «Данные разработчика» .
Библиотека Google Play Billing 2 для Unity
В дополнение к текущим версиям библиотеки Google Play Billing Library 2 для Java и Kotlin, мы выпустили версию библиотеки для использования с Unity. Разработчики игр, использующие API внутриигровых покупок Unity, могут обновить библиотеку уже сейчас, чтобы воспользоваться всеми её функциями и упростить последующие обновления до будущих версий.
Для получения более подробной информации см. раздел «Использование Google Play Billing с Unity» .
Краткое описание изменений
- Библиотека Java для оплаты в Google Play
- В классе
AcknowledgePurchaseParamsметодыsetDeveloperPayload()иgetDeveloperPayload()объявлены устаревшими. - В
ConsumeParamsметодыsetDeveloperPayload()иgetDeveloperPayload()объявлены устаревшими. - В
BillingFlowParamssetAccountId()была переименована вsetObfuscatedAccountId(), а также задокументировано ограничение длины в 64 символа и запрет на использование персональных данных в этом поле.setAccountId()помечена как устаревшая и будет удалена в будущей версии библиотеки. - В
BillingFlowParamsдобавленаsetObfuscatedProfileId(), которая работает аналогичноsetObfuscatedAccountId(). Для получения дополнительной информации см. раздел «Обновления и альтернативы полезной нагрузки для разработчиков» . - В
Purchaseдобавлен методgetAccountIdentifiers(), возвращающий зашифрованные идентификаторы учетных записей, заданные вBillingFlowParams. - В
BillingClientметодloadRewardedSku()помечен как устаревший в рамках процесса устаревания SKU с вознаграждением. Дополнительную информацию об устаревании можно найти в Справочном центре Play Console .
- В классе
Выпуск библиотеки Google Play Billing Library версии 2.1.0 и расширения Kotlin Extension версии 2.1.0 (10.12.2019)
Вышла версия 2.1.0 библиотеки Google Play Billing и новое расширение для Kotlin. Расширение Play Billing Library для Kotlin предоставляет идиоматические альтернативы API для использования в Kotlin, отличающиеся улучшенной защитой от нулевых значений и сопрограммами. Примеры кода см. в разделе «Использование библиотеки Google Play Billing» .
Данная версия содержит следующие изменения.
Краткое описание изменений
- В
BillingFlowParamssetOldSku(String oldSku)объявлен устаревшим и заменен наsetOldSku(String oldSku, String purchaseToken), чтобы исключить неоднозначность в случаях, когда несколько учетных записей на устройстве владеют одним и тем же артикулом.
Выпуск библиотеки Google Play Billing 2.0.3 (05.08.2019)
Вышла версия 2.0.3 библиотеки Google Play Billing.
Исправлены ошибки
- Исправлена ошибка, из-за которой метод
querySkuDetailsAsync()иногда завершался с ошибкойDEVELOPER_ERRORвместо возврата успешного результата.
Выпуск библиотеки Google Play Billing 2.0.2 (08.07.2019)
Вышла версия 2.0.2 библиотеки Google Play Billing. В этом релизе обновлена справочная документация, но функциональность библиотеки не изменена.
Выпуск библиотеки Google Play Billing 2.0.1 (06.06.2019)
Вышла версия 2.0.1 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Исправлены ошибки
- Исправлена ошибка, из-за которой отладочные сообщения в некоторых случаях возвращались как
null. - Исправлена потенциальная проблема утечки памяти.
Выпуск Google Play Billing Library 2.0 (07.05.2019)
Вышла версия 2.0 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Подтверждение покупки необходимо предоставить в течение трех дней.
Google Play поддерживает покупку товаров как внутри приложения (в приложении), так и вне его (вне приложения). Для обеспечения единообразного процесса покупки независимо от того, где пользователь приобретает ваш продукт, необходимо как можно скорее после предоставления пользователю права на покупку подтвердить все покупки, полученные через библиотеку платежей Google Play. Если вы не подтвердите покупку в течение трех дней, пользователь автоматически получит возврат средств, а Google Play аннулирует покупку. Для незавершенных транзакций (новинка версии 2.0) трехдневный срок начинается с момента перехода покупки в состояние PURCHASED и не применяется, пока покупка находится в состоянии PENDING .
При оформлении подписки необходимо подтвердить каждую покупку, для которой требуется новый токен покупки. Это означает, что все первоначальные покупки, изменения тарифных планов и повторные подписки должны быть подтверждены, но подтверждение последующих продлений не требуется. Чтобы определить, требуется ли подтверждение покупки, проверьте поле подтверждения в описании покупки.
Объект Purchase теперь включает метод isAcknowledged() , который указывает, была ли покупка подтверждена. Кроме того, API разработчиков Google Play включает логические значения подтверждения для объектов Purchases.products и Purchases.subscriptions . Перед подтверждением покупки обязательно воспользуйтесь этими методами, чтобы определить, была ли покупка уже подтверждена.
Подтвердить покупку можно одним из следующих способов:
- Для расходуемых продуктов используйте
consumeAsync(), доступный в клиентском API. - Для товаров, которые не были потреблены, используйте
acknowledgePurchase(), доступную в клиентском API. - В API сервера также появился новый метод
acknowledge().
Метод BillingFlowParams.setSku() был удален.
В этом релизе удален ранее устаревший метод BillingFlowParams#setSku() . Теперь перед отображением товаров в процессе покупки необходимо вызвать BillingClient.querySkuDetailsAsync() , передав полученный объект SkuDetails в BillingFlowParams.Builder.setSkuDetails() .
Примеры кода см. в разделе «Использование библиотеки Google Play Billing» .
Поддерживается полезная нагрузка разработчика.
В версии 2.0 библиотеки Google Play Billing добавлена поддержка полезной нагрузки разработчика — произвольных строк, которые можно прикреплять к покупкам. Вы можете прикрепить параметр полезной нагрузки разработчика к покупке, но только когда покупка подтверждена или совершена. Это отличается от полезной нагрузки разработчика в AIDL, где полезная нагрузка могла быть указана при запуске процесса покупки. Поскольку теперь покупки могут инициироваться извне вашего приложения , это изменение гарантирует, что у вас всегда будет возможность добавить полезную нагрузку к покупкам.
Для доступа к содержимому новой библиотеки объекты Purchase теперь включают метод getDeveloperPayload() .
Постоянные предложения
Теперь, когда вы предлагаете товар со скидкой, Google Play возвращает его первоначальную цену, чтобы вы могли показать пользователям, что они получают скидку.
SkuDetails появились два новых метода для получения исходной цены товара:
-
getOriginalPriceAmountMicros()- Возвращает неформатированную исходную цену товара до применения скидки.
-
getOriginalPrice()- Возвращает исходную цену с дополнительным форматированием валюты.
Незавершенные транзакции
В версии 2.0 библиотеки Google Play Billing необходимо поддерживать покупки, для которых требуется дополнительное действие перед предоставлением права на использование. Например, пользователь может выбрать покупку вашего внутриигрового продукта в физическом магазине за наличные. Это означает, что транзакция завершается вне вашего приложения. В этом случае право на использование следует предоставлять только после того, как пользователь завершит транзакцию.
Чтобы включить отложенные покупки, вызовите enablePendingPurchases() в процессе инициализации приложения.
Используйте Purchase.getPurchaseState() , чтобы определить, находится ли состояние покупки в PURCHASED или PENDING . Обратите внимание, что право на покупку следует предоставлять только тогда, когда состояние покупки — PURCHASED . Для проверки обновлений статуса Purchase выполните следующие действия:
- При запуске приложения вызовите
BillingClient.queryPurchases(), чтобы получить список неиспользованных товаров, связанных с пользователем. - Вызывайте метод
Purchase.getPurchaseState()для каждого возвращенного объектаPurchase. - Реализуйте метод
onPurchasesUpdated()для реагирования на изменения в объектахPurchase.
Кроме того, API для разработчиков Google Play включает состояние PENDING для Purchases.products . Для подписок ожидающие транзакции не поддерживаются.
В этом релизе также представлен новый тип уведомлений для разработчиков в режиме реального времени — OneTimeProductNotification . Этот тип уведомления содержит одно сообщение, значение которого может быть либо ONE_TIME_PRODUCT_PURCHASED , либо ONE_TIME_PRODUCT_CANCELED . Уведомления этого типа отправляются только для покупок, связанных с отложенными формами оплаты, такими как наличные.
При подтверждении ожидающих покупок обязательно подтверждайте покупку только тогда, когда ее статус — PURCHASED , а не PENDING .
изменения API
Версия 2.0 библиотеки Google Play Billing содержит ряд изменений в API для поддержки новых функций и уточнения существующей функциональности.
consumeAsync
Теперь consumeAsync() принимает объект ConsumeParams вместо purchaseToken . Объект ConsumeParams содержит purchaseToken , а также необязательную полезную нагрузку для разработчика.
В этом релизе удалена предыдущая версия функции consumeAsync() .
queryPurchaseHistoryAsync
Чтобы избежать путаницы, queryPurchaseHistoryAsync() теперь возвращает объект PurchaseHistoryRecord вместо объекта Purchase . Объект PurchaseHistoryRecord идентичен объекту Purchase , за исключением того, что он отражает только значения, возвращаемые методом queryPurchaseHistoryAsync() , и не содержит полей autoRenewing , orderId и packageName . Обратите внимание, что с возвращаемыми данными ничего не изменилось — метод queryPurchaseHistoryAsync() возвращает те же данные, что и раньше.
Возвращаемые значения BillingResult
API, которые ранее возвращали целочисленное значение BillingResponse теперь возвращают объект BillingResult . BillingResult содержит целочисленное значение BillingResponse , а также отладочную строку, которую можно использовать для диагностики ошибок. Отладочная строка использует локаль en-US и не предназначена для отображения конечным пользователям.
Исправлены ошибки
-
SkuDetails.getIntroductoryPriceAmountMicros()теперь возвращает типlongвместоString.
Выпуск библиотеки Google Play Billing 1.2.2 (07.03.2019)
Вышла версия 1.2.2 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Исправлены ошибки
- Исправлена проблема с многопоточностью, появившаяся в версии 1.2.1. Фоновые вызовы больше не блокируют основной поток.
Другие изменения
- Хотя использование основного потока по-прежнему рекомендуется, теперь вы можете создавать экземпляры библиотеки Google Play Billing из фонового потока.
- Процесс создания экземпляров полностью перенесен в фоновый поток, чтобы снизить вероятность возникновения ошибок ANR.
Play Billing Library 1.2.1 Release (2019-03-04)
Вышла версия 1.2.1 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Основные изменения
- Добавлена поддержка продуктов с системой вознаграждений . Для получения дополнительной информации о вариантах монетизации см. раздел «Добавление функций, специфичных для продуктов с системой вознаграждений» .
Другие изменения
- Добавлены открытые конструкторы для
PurchasesResultиSkuDetailsResultдля упрощения тестирования. - Объекты
SkuDetailsмогут использовать новый методgetOriginalJson(). - Теперь все вызовы сервисов AIDL обрабатываются фоновыми потоками.
Исправлены ошибки
- Обработчики событий, возвращающие значение null, больше не передаются в публичные API.
Выпуск библиотеки Google Play Billing 1.2 (18.10.2018)
Вышла версия 1.2 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Краткое описание изменений
- Библиотека Google Play Billing теперь распространяется под лицензией Android Software Development Kit License Agreement .
- Добавлен API
launchPriceChangeConfirmationFlow, который предлагает пользователям проверить ожидающее изменения изменение цены подписки. - Добавлена поддержка нового режима пропорционального распределения,
DEFERRED, при повышении или понижении уровня подписки пользователя. - В классе
BillingFlowParamssetSku()была заменена наsetSkuDetails(). - Исправлены мелкие ошибки и оптимизирован код.
Подтверждение изменения цены
Теперь вы можете изменять цену подписки в Google Play Console и предлагать пользователям ознакомиться с новой ценой и принять её при входе в ваше приложение.
Для использования этого API создайте объект PriceChangeFlowParams , используя skuDetails продукта подписки, а затем вызовите метод launchPriceChangeConfirmationFlow() . Реализуйте PriceChangeConfirmationListener для обработки результата после завершения процесса подтверждения изменения цены, как показано в следующем фрагменте кода:
Котлин
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
В процессе подтверждения изменения цены отображается диалоговое окно с новой информацией о ценах, предлагающее пользователям принять новую цену. Этот процесс возвращает код ответа типа BillingClient.BillingResponse .
Новый режим пропорционального распределения
При повышении или понижении уровня подписки пользователя можно использовать новый режим пропорционального распределения — DEFERRED . В этом режиме подписка пользователя обновляется при следующем продлении. Подробнее о настройке этого режима пропорционального распределения см. в разделе «Настройка режима пропорционального распределения» .
Новый способ указания сведений об артикуле товара.
В классе BillingFlowParams метод setSku() объявлен устаревшим. Это изменение направлено на оптимизацию процесса оплаты в Google Play.
При создании нового экземпляра BillingFlowParams в вашем приложении для выставления счетов мы рекомендуем работать непосредственно с JSON-объектом, используя setSkuDetails() , как показано в следующем фрагменте кода:
В классе BillingFlowParams Builder метод setSku() устарел. Вместо него используйте метод setSkuDetails() , как показано в следующем фрагменте кода. Объект, передаваемый в setSkuDetails() поступает из метода querySkuDetailsAsync() .
Котлин
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
Java
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Play Billing Library 1.1 Release (2018-05-07)
Вышла версия 1.1 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Краткое описание изменений
- Добавлена возможность указания режима пропорционального распределения в
BillingFlowParamsпри обновлении/понижении уровня существующей подписки. - Логический флаг
replaceSkusProrationвBillingFlowParamsбольше не поддерживается. Вместо него используйтеreplaceSkusProrationMode. - Теперь
launchBillingFlow()запускает функцию обратного вызова для получения неудачных ответов.
Изменения в поведении
В версии 1.1 библиотеки Google Play Billing внесены следующие изменения в работу.
Разработчики могут установить replaceSkusProrationMode в классе BillingFlowParams
ProrationMode предоставляет более подробную информацию о типе пропорционального распределения при повышении или понижении уровня подписки пользователя.
Котлин
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play поддерживает следующие режимы пропорционального распределения:
IMMEDIATE_WITH_TIME_PRORATION | Замена вступает в силу немедленно, а новый срок действия будет рассчитан пропорционально и зачислен или списан с пользователя. Это текущее поведение по умолчанию. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | Замена вступает в силу немедленно, и расчетный период остается прежним. Будет взиматься плата за оставшийся период. Примечание : Эта опция доступна только при переходе на платную подписку. |
IMMEDIATE_WITHOUT_PRORATION | Замена вступает в силу немедленно, и новая цена будет списана при следующем подключении. Расчетный период остается прежним. |
replaceSkusProration больше не поддерживается в классе BillingFlowParams
Ранее разработчики могли установить логический флаг для пропорционального начисления платы за запрос на обновление подписки. В связи с тем, что мы поддерживаем ProrationMode , который содержит более подробные инструкции по пропорциональному начислению, этот логический флаг больше не поддерживается.
launchBillingFlow() теперь вызывает функцию обратного вызова для получения неудачных ответов.
Библиотека Billing всегда будет вызывать обратный вызов PurhcasesUpdatedListener и асинхронно возвращать объект BillingResponse . Синхронное возвращаемое значение BillingResponse также сохраняется.
Исправлены ошибки
- Корректно завершает работу асинхронных методов при отключении сервиса.
- Объекты параметров
Builderбольше не изменяют построенные объекты. - Проблема 68087141 :
launchBillingFlow()теперь запускает обратный вызов для неудачных ответов.
Выпуск библиотеки Google Play Billing 1.0 (19.09.2017, анонс )
Вышла версия 1.0 библиотеки Google Play Billing. Эта версия содержит следующие изменения.
Важные изменения
- Встроенное разрешение на выставление счетов в манифест библиотеки. Больше нет необходимости добавлять разрешение
com.android.vending.BILLINGв манифест Android. - В класс
BillingClient.Builderдобавлен новый конструктор. - Введен паттерн "построитель" для класса
SkuDetailsParams, предназначенный для использования в методах, запрашивающих информацию о товарных позициях (SKU). - Для обеспечения единообразия были обновлены несколько методов API (те же имена и порядок возвращаемых аргументов).
Изменения в поведении
В версии 1.0 библиотеки Google Play Billing внесены следующие изменения в работу.
Класс BillingClient.Builder
Теперь BillingClient.Builder инициализируется с помощью шаблона newBuilder:
Котлин
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Метод launchBillingFlow теперь вызывается с использованием класса BillingFlowParams.
Для запуска процесса выставления счетов за покупку или подписку метод launchBillingFlow() получает экземпляр BillingFlowParams , инициализированный параметрами, специфичными для запроса:
Котлин
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
Новый способ запроса информации о доступных товарах.
Аргументы для методов queryPurchaseHistoryAsync() и querySkuDetailsAsync() были обернуты в шаблон проектирования Builder:
Котлин
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
Для вашего удобства и обеспечения единообразия во всем нашем API результат теперь возвращается в виде кода результата и списка объектов SkuDetails вместо прежнего класса-обертки:
Котлин
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Изменен порядок параметров в методе onConsumeResponse()
Порядок аргументов для onConsumeResponse из интерфейса ConsumeResponseListener был изменен для обеспечения единообразия во всем нашем API:
Котлин
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Развернутый объект PurchaseResult
Для обеспечения единообразия во всем нашем API PurchaseResult был преобразован в условную оболочку:
Котлин
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Исправлены ошибки
- В пакете PURCHASES_UPDATED отсутствует код ответа.
- Исправлены ошибки ProxyBillingActivity и PurchasesUpdatedListener при повороте устройства.
Выпуск первой предварительной версии для разработчиков (12.06.2017, анонс )
Запущена предварительная версия для разработчиков, призванная упростить процесс разработки в части выставления счетов, позволяя разработчикам сосредоточить свои усилия на реализации логики, специфичной для Android-приложений, такой как архитектура приложения и структура навигации.
Библиотека включает в себя несколько удобных классов и функций, которые вы можете использовать при интеграции ваших Android-приложений с API Google Play Billing. Библиотека также предоставляет уровень абстракции поверх сервиса Android Interface Definition Language (AIDL), что упрощает разработчикам определение интерфейса между приложением и API Google Play Billing.