В этом документе приведены примечания к выпускам библиотеки Google Play Платежей.
Навыки работы с Android
Посмотреть на GitHubКак обновить библиотеку Play Платежей
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Выпуск библиотеки Google Play Платежей версии 9.1.0 (18.06.2026)
Доступны версия 9.1.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
- Новые API для выбора платежной системы:
- Добавлен метод
BillingClient.getBillingChoiceInfoAsync()для получения информации о вариантах оплаты, доступных пользователю. - Добавлен класс
BillingChoiceInfo, содержащий сведения об ответе, в том числе URL изображений и информацию о программе лояльности. - Добавлена функция
GetBillingChoiceInfoParamsдля настройки запроса. - Добавлен номер
BillingChoiceInfoResponseListenerдля обратного звонка. - Добавлена функция расширения Kotlin
BillingClient.getBillingChoiceInfo(). - Добавлен элемент
BillingClient.showBillingProgramInformationDialog(), позволяющий показывать диалоговое окно с информацией о платежной программе. - Добавлен параметр
BillingProgramInformationDialogParamsдля настройки диалогового окна. - Добавлен номер
BillingProgramInformationDialogListenerдля обратного звонка. - Добавлен раздел
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsс информацией о доступности выбора платежной системы. - Добавлен параметр
ChoiceScreenType, позволяющий указать тип экрана выбора.
- Добавлен метод
Выпуск библиотеки Google Play Платежей версии 9.0.0 (19.05.2026)
Доступна версия 9.0.0 библиотеки Google Play Платежей и расширений Kotlin. Если вы хотите перейти с предыдущих версий PBL, ознакомьтесь с руководством по переходу на PBL 9.
Обзор изменений
Обновленные коды ошибок для заблокированных действий в Google Play. Коды ошибок для заблокированных приложений Google Play были обновлены. Если приложение Google Play заблокировано системой (например, в детском режиме, настроенном производителем устройства), код ответа изменится с
ERRORнаBILLING_UNAVAILABLE. Кроме того, в таких случаях вBillingResultтеперь показывается сообщение об ошибке Google Play заблокирован.Обновление допустимости значения NULL для платежной системы, предоставленной разработчиком. Метод
DeveloperProvidedBillingDetails.getLinkUri()теперь может возвращать нулевые значения (@Nullable). Это изменение позволяет поддерживать ситуации, когда URI прямой ссылки для внешних платежей недоступен на этапе выбора способа оплаты.Чтобы безопасно обработать это изменение, убедитесь, что код интеграции обрабатывает значения
nullи пустую строку (""), возвращаемые методомDeveloperProvidedBillingDetails.getLinkUri(), прежде чем выполнять синтаксический анализ или запускать намерения браузера.Значение параметра "
targetSdkVersion" изменено на 35.Теперь вы можете использовать сообщения в приложении, чтобы уведомлять пользователей о предстоящем повышении цены с запросом согласия. Это позволяет пользователям подтверждать повышение цены, не покидая приложение. Сообщение о повышении цены с запросом согласия показывается с первого дня, когда пользователь может принять новую цену, но не чаще одного раза в семь дней.
Выпуск библиотеки Google Play Платежей версии 8.3.0 (23.12.2025)
Теперь доступны версия 8.3.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Новые API для внешних платежей:
- Добавлены классы для поддержки внешних платежей:
- Добавлено
enableBillingProgram(EnableBillingProgramParams), чтобы включить внешние платежи. - Добавлен параметр
BillingFlowParams.Builder.enableDeveloperBillingOptionдля запуска процесса внешних платежей.
Улучшена категоризация ошибок при отказе от внешних платежей:
- Если пользователь переходит из процесса покупки в другое приложение (например, электронный кошелек), чтобы совершить платеж, и не возвращается, код ответа, который возвращается клиенту, теперь
BillingResponseCode.USER_CANCELED(1) с сообщением отладкиBILLING_ACTIVITY_PAUSED(ранее по умолчанию использовался кодBillingResponseCode.ERROR(6)).
- Если пользователь переходит из процесса покупки в другое приложение (например, электронный кошелек), чтобы совершить платеж, и не возвращается, код ответа, который возвращается клиенту, теперь
Выпуск библиотеки Google Play Платежей 8.2.1 (15.12.2025)
Теперь доступны версия 8.2.1 библиотеки Google Play Платежей и расширения Kotlin.
Исправлены ошибки.
- Исправлена ошибка в
isBillingProgramAvailableAsyncиcreateBillingProgramReportingDetailsAsync. Чтобы использовать эти API, добавленные в версии 8.2.0, обновите SDK до версии 8.2.1.
Выпуск библиотеки Google Play Платежей версии 8.2.0 (09.12.2025)
Теперь доступны версия 8.2.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Новые API для ссылок на внешний контент и внешних предложений:
- Добавлен
enableBillingProgramдля настройкиBillingClientдля этих программ. - Добавлен параметр
isBillingProgramAvailableAsync, позволяющий определять, соответствует ли пользователь требованиям. - Добавлен параметр
createBillingProgramReportingDetailsAsync, позволяющий создать токен внешней транзакции, который необходимо использовать для отчетности. - Добавлен тег
launchExternalLink, чтобы инициировать переход по внешней ссылке на предложение цифрового контента или скачивание приложения.
- Добавлен
Изменения в программе внешних предложений:
- Изменения в правилах программы внешних предложений. Подробнее об изменениях в программе… Чтобы узнать, как запускать внешние предложения с помощью новых API, ознакомьтесь с руководством по интеграции.
- Прекращена поддержка API
BillingClient.Builder.enableExternalOffer. - Прекращена поддержка API
isExternalOfferAvailableAsync. - Прекращена поддержка API
createExternalOfferReportingDetailsAsync. - Прекращена поддержка API
showExternalOfferInformationDialog.
Выпуск библиотеки Google Play Платежей 8.1.0 (06.11.2025)
Теперь доступны версия 8.1.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Приостановленные подписки
В метод
BillingClient.queryPurchasesAsync()добавлен новый параметр, позволяющий включать приостановленные подписки при запросе подписок. Приостановленные подписки по-прежнему связаны с пользователем, но неактивны, поскольку пользователь приостановил подписку или способ оплаты для ее продления был отклонен.Объект
Purchase, возвращаемый в прослушивателе, будет возвращатьisSuspended() = trueдля всех приостановленных подписок. В этом случае не предоставляйте доступ к купленной подписке, а перенаправьте пользователя в центр подписок, где он сможет изменить способы оплаты или приостановить подписку, чтобы активировать ее повторно.Изменения в подписках:
В объект
BillingFlowParams.ProductDetailsParamsдобавлен методsetSubscriptionProductReplacementParams(), с помощью которого можно указать информацию о замене на уровне товара.У объекта
SubscriptionProductReplacementParamsесть два метода установки:setOldProductId: старый товар, который нужно заменить товаром из текущего объектаProductDetails.setReplacementMode– режим замены на уровне товара. Эти режимы по сути аналогичны SubscriptionUpdateParams, но сопоставление значений было обновлено. Добавлен новый режим заменыKEEP_EXISTING, который позволяет сохранить существующий график платежей для товара.
SubscriptionUpdateParams setSubscriptionReplacementMode будет объявлен устаревшим. Вместо него используйте
SubscriptionProductReplacementParams.setReplacementMode.
Обновлено
minSdkVersionдо версии 23.Включены API для предзаказа контента, оплачиваемого однократно.
Теперь можно использовать
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API, чтобы получать информацию о предзаказах.Библиотека Google Play Платежей теперь поддерживает Kotlin версии 2.2.0.
Выпуск библиотеки Google Play Платежей версии 8.0.0 (30.06.2025)
Теперь доступны версия 8.0.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Контент для продажи через приложение теперь называется контентом для однократных покупок.
Несколько способов покупки и предложений для товаров, оплачиваемых однократно.
Теперь для контента, оплачиваемого однократно, можно настроить несколько способов покупки и предложений. Это позволяет вам гибко подходить к продажам и упрощает управление товарами.
Улучшен метод
queryProductDetailsAsync().До версии PBL 8.0.0 метод
queryProductDetailsAsync()не возвращал товары, которые не удалось получить. Это может быть связано с тем, что товар не найден или пользователю недоступны предложения. В версии PBL 8.0.0 для товаров, которые не были получены, возвращается новый код статуса на уровне товара, содержащий информацию о таких товарах. Обратите внимание, что подписьProductDetailsResponseListener.onProductDetailsResponse()изменилась, поэтому вам нужно внести изменения в приложение. Подробнее о том, как обрабатывать результат…Автоматическое восстановление подключения к сервису.
Новый параметр
BillingClient.Builder.enableAutoServiceReconnection()builder позволяет разработчикам включить автоматическое повторное подключение к сервису Play Платежи. Это упрощает управление подключением, поскольку в случае его разрыва не нужно вручную вызыватьstartConnection(). Подробнее о том, как автоматически восстановить подключение…Коды дополнительных ответов для метода
launchBillingFlow().BillingResult, возвращаемый из
launchBillingFlow(), теперь будет включать поле кода подзапроса. Это поле заполняется только в некоторых случаях, чтобы указать более точную причину ошибки. Поле sub-response может иметь следующие значения: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 Платежей версии 7.1.1 (03.10.2024)
Теперь доступны версия 7.1.1 библиотеки Google Play Платежей и расширения Kotlin.
Исправлены ошибки.
- Исправлена ошибка в библиотеке Play Платежей версии 7.1.0, связанная с кодами ответов
BillingResultдля тестирования.
Выпуск библиотеки Google Play Платежей версии 7.1.0 (19.09.2024)
Теперь доступны версия 7.1.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
- Улучшена безопасность потоков, связанных со статусом подключения и управлением.
- Внедрены частичные изменения для тестирования кодов ответа
BillingResult, которые полностью реализованы в библиотеке Play Платежей версии 7.1.1. Чтобы протестировать интеграцию с помощью этой функции, вам нужно обновить библиотеку Play Платежей до версии 7.1.1. Обнаружена ошибка, которая влияет только на приложения с включенным тестированием переопределений платежей и не затрагивает обычное использование. ПодробнееBillingResultо кодах ответов…
Выпуск библиотеки Google Play Платежей 7.0.0 (14.05.2024)
Теперь доступны версия 7.0.0 библиотеки Google Play Платежей и расширения 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(), чтобы получить список активных покупок. - Покупки с использованием: разработчики должны отслеживать такие покупки на собственных серверах.
- Отмененные покупки: используйте voided-purchases API для разработчиков.
- Подробнее о том, как запросить историю покупок…
- Обработанные и ожидающие покупки: используйте
BillingFlowParams.ProductDetailsParams.setOfferToken()теперь вызывает исключение, когда разработчики указывают пустойofferToken.Значение
minSdkVersionизменено на 21, аtargetSdkVersion– на 34.
Выпуск библиотеки Google Play Платежей версии 6.2.1 (16.04.2024)
Теперь доступны версия 6.2.1 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
- Устранена ошибка в
BillingClient.showAlternativeBillingOnlyInformationDialog(), из-за которойAlternativeBillingOnlyInformationDialogListenerмог не вызываться в некоторых случаях после закрытия диалогового окна.
Выпуск библиотеки Google Play Платежей версии 6.2.0 (06.03.2024)
Теперь доступны версия 6.2.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
- Добавлены API для поддержки внешних предложений.
- Добавлена возможность
BillingClient.Builder.enableExternalOffer(), позволяющая показывать внешние предложения. - Добавлен параметр
BillingClient.isExternalOfferAvailableAsync(), позволяющий проверить, доступна ли функция внешних предложений. - Добавлено в
BillingClient.showExternalOfferInformationDialog(), чтобы показывать пользователям информационное диалоговое окно перед переходом за пределы приложения. - Добавлен
BillingClient.createExternalOfferReportingDetailsAsync()для создания полезной нагрузки, необходимой для передачи данных о транзакциях, совершенных в рамках внешних предложений.
- Добавлена возможность
Выпуск библиотеки Google Play Платежей версии 6.1.0 (14.11.2023)
Теперь доступны версия 6.1.0 библиотеки Google Play Платежей и расширения 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 Платежей версии 6.0.1 (22.06.2023)
Теперь доступны версия 6.0.1 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Обновите библиотеку Play Платежей, чтобы она была совместима с Android 14.
Выпуск библиотеки Google Play Платежей версии 6.0 (10.05.2023)
Теперь доступны версия 6.0.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Добавлен новый перечисляемый тип
ReplacementMode, который заменитProrationMode.Обратите внимание, что
ProrationModeпо-прежнему доступен для обеспечения обратной совместимости.Удален идентификатор заказа для покупок
PENDING.Раньше идентификатор заказа создавался всегда, даже если покупка была в ожидании. Начиная с версии 6.0.0, идентификатор заказа не будет создаваться для покупок, находящихся в состоянии ожидания. Для таких покупок идентификатор заказа будет заполняться после того, как покупка перейдет в состояние
PURCHASED.Удалены методы
queryPurchasesиlaunchPriceConfirmationFlow.Методы
queryPurchasesиlaunchPriceConfirmationFlow, ранее отмеченные как устаревшие, теперь удалены из библиотеки платежей Google Play версии 6.0.0. Разработчикам следует использоватьqueryPurchasesAsyncвместоqueryPurchases. Альтернативы дляlaunchPriceConfirmationFlowописаны в разделе Изменение цен.Добавлен новый код ответа на ошибку сети.
В версии PBL 6.0.0 и более поздних добавлен новый код ошибки сети:
NETWORK_ERROR. Этот код возвращается, когда возникает ошибка из-за проблем с подключением к сети. Ранее ошибки подключения к сети обозначались какSERVICE_UNAVAILABLE.Обновлено
SERVICE_UNAVAILABLEиSERVICE_TIMEOUT.Начиная с версии 6.0.0, ошибки, связанные с истечением времени ожидания при обработке, будут возвращаться как
SERVICE_UNAVAILABLEвместоSERVICE_TIMEOUT.В более ранних версиях PBL поведение не меняется.
Удалено:
SERVICE_TIMEOUT.Начиная с версии 6.0.0,
SERVICE_TIMEOUTбольше не будет возвращаться. Предыдущие версии библиотеки Google Play Платежей также будут возвращать этот код.Добавлены дополнительные журналы.
В библиотеке Play Платежей версии 6 добавлено ведение журнала, которое позволяет отслеживать использование API (например, успешные и неудачные вызовы) и проблемы с подключением к сервису. Эта информация будет использоваться для повышения эффективности библиотеки Play Платежей и улучшения поддержки при возникновении ошибок.
Выпуск библиотеки Google Play Платежей 5.2.1 (22.06.2023)
Теперь доступны версия 5.2.1 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Обновите библиотеку Play Платежей, чтобы она была совместима с Android 14.
Выпуск библиотеки Google Play Платежей версии 5.2 (06.04.2023)
Теперь доступны версия 5.2.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
- Добавлены классы для поддержки альтернативных платежных систем на мобильных устройствах и планшетах для пользователей из Южной Кореи:
- Добавлен метод
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId(), позволяющий указать внешний идентификатор исходной транзакции подписки. - Добавлен метод
BillingClient.Builder.enableAlternativeBilling(), позволяющий пользователям из Южной Кореи выбирать альтернативную платежную систему.
Выпуск библиотеки Google Play Платежей версии 5.1 (31.10.2022)
Теперь доступны версия 5.1.0 библиотеки Google Play Платежей и расширения Kotlin.
В этой версии внесены следующие изменения:
Обзор изменений
- Добавлен метод
ProductDetails.SubscriptionOfferDetails.getOfferId()для получения идентификатора предложения. - Добавлен метод
ProductDetails.SubscriptionOfferDetails.getBasePlanId()для получения идентификатора основного плана. - Обновлено значение
targetSdkVersionдо 31.
Выпуск библиотеки Google Play Платежей версии 5.0 (11.05.2022)
Теперь доступны версия 5.0.0 библиотеки Google Play Платежей и расширения Kotlin.
В этой версии внесены следующие изменения:
Обзор изменений
- Добавлена новая модель подписок, включающая новые объекты, которые позволяют создавать несколько предложений для одного продукта с подпиской. Подробную информацию об этом вы найдете в руководстве по переходу.
- Добавлен параметр
BillingClient.queryProductDetailsAsync()вместоBillingClient.querySkuDetailsAsync(). - Добавлен метод
setIsOfferPersonalized()для требований о раскрытии информации о персонализированных ценах в ЕС. Подробнее о том, как указать персонализированную цену… - Удален метод
queryPurchases(), который ранее был признан устаревшим и заменен на метод queryPurchasesAsync, добавленный в библиотеку Google Play Платежей версии 4.0.0. launchPriceChangeFlowбольше не поддерживается и будет удален. Подробнее о подтверждении изменения цены…- Удален метод
setVrPurchaseFlow(), который ранее использовался при инициализации процесса покупки. В предыдущих версиях этот метод перенаправлял пользователя для завершения покупки на устройство Android. После удаления этого метода пользователи будут совершать покупки в рамках стандартного процесса покупки.
Выпуск библиотеки Google Play Платежей версии 4.1 (23.02.2022)
Теперь доступны версия 4.1.0 библиотеки Google Play Платежей и расширения Kotlin.
В этой версии внесены следующие изменения:
Обзор изменений
- Добавлен параметр
BillingClient.showInAppMessages(), который помогает обрабатывать отклоненные платежи за подписку. Подробнее о том, как использовать сообщения в приложении для обработки отклоненных платежей за подписку, рассказывается в статье Обработка отклоненных платежей.
Выпуск библиотеки Google Play Платежей версии 4.0 (18.05.2021)
Теперь доступны версия 4.0.0 библиотеки Google Play Платежей и расширения Kotlin.
Обзор изменений
Добавлено правило
BillingClient.queryPurchasesAsync()вместо правилаBillingClient.queryPurchases(), которое будет удалено в будущем выпуске.Добавлен новый режим замены подписки:
IMMEDIATE_AND_CHARGE_FULL_PRICE.Добавлен метод
BillingClient.getConnectionState()для получения статуса подключения библиотеки Play Платежей.Обновлены 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 Платежей 3.0.3 (12.03.2021)
Теперь доступны версии 3.0.3 библиотеки Google Play Платежей, расширения Kotlin и плагина Unity.
Исправления ошибок в Java и Kotlin
- Устранена утечка памяти при вызове
endConnection(). - Исправлена проблема, при которой библиотека Google Play Платежей использовалась приложениями с режимом запуска одной задачи. A
onPurchasesUpdated()Обратный вызов будет активирован, когда приложение будет возобновлено из панели запуска Android и платежное диалоговое окно было видно до приостановки.
Исправление ошибок Unity
- Обновите Java до версии 3.0.3, чтобы устранить утечку памяти и проблему, из-за которой нельзя совершать покупки, когда приложение возобновляет работу из панели запуска Android, а диалоговое окно оплаты было открыто до приостановки.
Выпуск библиотеки Google Play Платежей версии 3.0.2 (24.11.2020)
Теперь доступны версия 3.0.2 библиотеки Google Play Платежей и расширение Kotlin.
Исправлены ошибки.
- Исправлена ошибка в расширении Kotlin, из-за которой сопрограмма завершалась с ошибкой "Уже возобновлено".
- Исправлены неразрешенные ссылки при использовании расширения Kotlin с библиотекой kotlinx.coroutines версии 1.4 или более поздней.
Выпуск библиотеки Google Play Платежей 3.0.1 (30.09.2020)
Теперь доступны версия 3.0.1 библиотеки Google Play Платежей и расширение Kotlin.
Исправлены ошибки.
- Исправлена ошибка, из-за которой при закрытии и восстановлении приложения во время процесса оплаты функция
PurchasesUpdatedListenerмогла не вызываться с результатом покупки.
Выпуск библиотеки Google Play Платежей 3.0 (8 июня 2020 г.)
Теперь доступны версии 3.0.0 библиотеки Google Play Платежей, расширения Kotlin и плагина Unity.
Обзор изменений
- Удалена поддержка SKU с вознаграждением.
- Удалены параметры
ChildDirectedиUnderAgeOfConsent. - Удалены устаревшие методы для работы с данными разработчика.
- Удалены устаревшие методы
BillingFlowParams.setAccountId()иBillingFlowParams.setDeveloperId(). - Удалены устаревшие методы
BillingFlowParams.setOldSkus(String oldSku)иBillingFlowParams.addOldSku(String oldSku). - Добавлены аннотации о допустимости значения NULL.
Исправлены ошибки.
SkuDetails.getIntroductoryPriceCycles()теперь возвращаетintвместоString.- Исправлена ошибка, из-за которой платежный процесс считался имеющим дополнительные параметры, даже если они не были заданы.
Выпуск библиотеки Google Play Платежей 2.2.1 (20.05.2020)
Доступна версия 2.2.1 библиотеки Google Play Платежей.
Исправлены ошибки.
- Обновлена версия библиотеки Google Play Платежей для Java, от которой зависит расширение Kotlin.
Выпуск библиотеки Google Play Платежей 2.2.0 и поддержка Unity (23 марта 2020 г.)
Версия 2.2.0 Google Play Платежей позволяет разработчикам связывать покупки с нужными пользователями. Эти изменения позволяют отказаться от создания специальных решений на основе полезной нагрузки разработчика. В рамках этого обновления функция полезной нагрузки разработчика была признана устаревшей и будет удалена в будущем выпуске. Подробнее о полезной нагрузке разработчика…
Библиотека Google Play Платежей 2 для Unity
Помимо текущих версий библиотеки Google Play Платежей 2 на Java и Kotlin, мы выпустили версию для Unity. Разработчики игр, использующие API для покупок в приложении Unity, могут перейти на библиотеку Google Play Платежей версии 2, чтобы воспользоваться всеми ее функциями и упростить переход на будущие версии.
Подробнее о том, как использовать Google Play Платежи с Unity…
Обзор изменений
- Библиотека Google Play Платежей для Java
- В
AcknowledgePurchaseParams, устаревшие методыsetDeveloperPayload()иgetDeveloperPayload(). - В
ConsumeParams, устаревшие методыsetDeveloperPayload()иgetDeveloperPayload(). - В
BillingFlowParams, переименованоsetAccountId()вsetObfuscatedAccountId(), а также добавлено ограничение на длину в 64 символа и запрет на использование в этом поле информации, позволяющей идентифицировать личность.setAccountId()помечен как устаревший и будет удален в будущей версии библиотеки. - В
BillingFlowParamsдобавлен параметрsetObfuscatedProfileId(), который работает так же, какsetObfuscatedAccountId(). Подробнее об изменениях в полезной нагрузке разработчика и альтернативных решениях… - В
Purchaseдобавлен методgetAccountIdentifiers()для возврата обфусцированных идентификаторов аккаунтов, заданных вBillingFlowParams. - В
BillingClientметодloadRewardedSku()помечен как устаревший в связи с прекращением поддержки SKU с вознаграждением.
- В
Выпуск библиотеки Google Play Платежей 2.1.0 и расширения Kotlin 2.1.0 (10 декабря 2019 г.)
Теперь доступны версия 2.1.0 библиотеки Google Play Платежей и новое расширение Kotlin. Расширение Kotlin для библиотеки платежей Play предоставляет идиоматические альтернативы API для использования в Kotlin, отличающиеся более высоким уровнем безопасности при работе с нулевыми значениями и сопрограммами. Примеры кода можно найти в разделе Как использовать библиотеку Google Play Платежей.
В этой версии внесены следующие изменения:
Обзор изменений
- В
BillingFlowParamsустаревший параметрsetOldSku(String oldSku)был заменен наsetOldSku(String oldSku, String purchaseToken), чтобы устранить неоднозначность, когда несколько аккаунтов на устройстве имеют один и тот же SKU.
Выпуск библиотеки Google Play Платежей 2.0.3 (5 августа 2019 г.)
Доступна версия 2.0.3 библиотеки Google Play Платежей.
Исправлены ошибки.
- Исправлена ошибка, из-за которой иногда не удавалось выполнить команду
querySkuDetailsAsync()с кодомDEVELOPER_ERRORвместо того, чтобы вернуть успешный результат.
Выпуск библиотеки Google Play Платежей 2.0.2 (08.07.2019)
Доступна версия 2.0.2 библиотеки Google Play Платежей. В этой версии обновлена справочная документация. Функциональность библиотеки не изменилась.
Выпуск библиотеки Google Play Платежей 2.0.1 (6 июня 2019 г.)
Доступна версия 2.0.1 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Исправлены ошибки.
- Исправлена ошибка, из-за которой в некоторых случаях отладочные сообщения возвращались как
null. - Устранена потенциальная утечка памяти.
Выпуск библиотеки Google Play Платежей версии 2.0 (07.05.2019)
Теперь доступна версия 2.0 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Подтверждать покупки нужно в течение трех дней
В Google Play поддерживаются покупки товаров как в приложении, так и за его пределами. Чтобы обеспечить единообразный процесс покупки независимо от того, где пользователь приобретает ваш продукт, вы должны подтверждать все покупки, совершенные через библиотеку Google Play Платежей, как можно скорее после предоставления пользователю доступа к контенту. Если вы не подтвердите покупку в течение трех дней, средства будут автоматически возвращены пользователю, а Google Play отменит покупку. Для ожидающих транзакций (новая функция версии 2.0) трехдневный период начинается, когда покупка переходит в состояние PURCHASED, и не применяется, пока она находится в состоянии PENDING.
Для подписок необходимо подтверждать все покупки с новым токеном покупки. Это означает, что вам нужно подтверждать все первоначальные покупки, смены тарифного плана и повторные регистрации, но не нужно подтверждать последующие продления. Чтобы узнать, нужно ли подтверждение покупки, проверьте поле acknowledgement в объекте Purchase.
Объект Purchase теперь включает метод isAcknowledged(), который указывает, подтверждена ли покупка. Кроме того, Google Play Developer API включает логические значения подтверждения для атрибутов Purchases.products и Purchases.subscriptions.
Прежде чем подтверждать покупку, убедитесь, что она ещё не подтверждена.
Подтвердить покупку можно одним из следующих способов:
- Для расходуемых товаров используйте параметр
consumeAsync(), который можно найти в клиентском API. - Для товаров, которые не расходуются, используйте
acknowledgePurchase(), найденный в клиентском API. - В Server API также доступен новый метод
acknowledge().
Метод BillingFlowParams.setSku() удален
В этой версии удален ранее признанный устаревшим метод BillingFlowParams#setSku(). Прежде чем показывать товары в процессе покупки, вы должны вызвать метод BillingClient.querySkuDetailsAsync(), передав полученный объект SkuDetails методу BillingFlowParams.Builder.setSkuDetails().
Примеры кода можно найти в разделе Как использовать библиотеку Google Play Платежей.
Поддерживается полезная нагрузка разработчика
В версии 2.0 библиотеки платежной системы Google Play добавлена поддержка полезной нагрузки разработчика – произвольных строк, которые можно прикреплять к покупкам. Вы можете добавить параметр полезной нагрузки разработчика к покупке, но только когда она подтверждена или использована. В отличие от полезной нагрузки разработчика в AIDL, полезную нагрузку можно указать при запуске процесса покупки. Поскольку теперь покупки можно инициировать за пределами приложения, это изменение гарантирует, что у вас всегда будет возможность добавить полезную нагрузку к покупкам.
Чтобы получить доступ к полезной нагрузке в новой библиотеке, объекты Purchase теперь включают метод getDeveloperPayload().
Соответствие предложений
Теперь, когда вы предлагаете SKU со скидкой, Google Play возвращает исходную цену SKU, чтобы вы могли показать пользователям, что они получают скидку.
SkuDetails содержит два новых метода для получения исходной цены SKU:
getOriginalPriceAmountMicros()- возвращает исходную цену SKU без скидки.
getOriginalPrice()- возвращает исходную цену с дополнительным форматированием валюты.
Транзакции, ожидающие подтверждения
В версии 2.0 библиотеки Google Play Платежей обязательно должна поддерживаться покупка, при которой для предоставления права на использование контента требуется выполнить дополнительные действия. Например, пользователь может купить ваш товар в обычном магазине, оплатив его наличными. Это означает, что транзакция совершается вне приложения. В этом случае вы должны предоставить право на использование контента только после того, как пользователь завершит транзакцию.
Чтобы включить ожидающие покупки, вызовите метод
enablePendingPurchases()
при инициализации приложения.
Используйте параметр Purchase.getPurchaseState(), чтобы определить, является ли статус покупки PURCHASED или PENDING. Обратите внимание, что предоставлять право на просмотр следует только в том случае, если статус имеет значение PURCHASED. Чтобы проверить статус Purchase, выполните следующие действия:
- При запуске приложения вызовите метод
BillingClient.queryPurchases(), чтобы получить список неиспользованных продуктов, связанных с пользователем. - Вызовите метод
Purchase.getPurchaseState()для каждого возвращенного объектаPurchase. - Реализуйте метод
onPurchasesUpdated(), чтобы реагировать на изменения объектовPurchase.
Кроме того, в Google Play Developer API для Purchases.products предусмотрено состояние PENDING.
Транзакции, ожидающие подтверждения, не поддерживаются для подписок.
В этом выпуске также добавлен новый тип уведомлений для разработчиков в режиме реального времени – OneTimeProductNotification. Уведомление этого типа содержит одно сообщение со значением ONE_TIME_PRODUCT_PURCHASED или ONE_TIME_PRODUCT_CANCELED. Уведомления этого типа отправляются только при покупках, оплаченных способами с отложенным платежом, например наличными.
При обработке покупок, ожидающих подтверждения, убедитесь, что вы подтверждаете только покупки со статусом PURCHASED, а не PENDING.
Изменения в API
В версии 2.0 библиотеки платежей Google Play внесены изменения в 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 Платежей 1.2.2 (07.03.2019)
Доступна версия 1.2.2 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Исправлены ошибки.
- Устранена проблема с цепочками, появившаяся в версии 1.2.1. Фоновые вызовы больше не блокируют основной поток.
Другие изменения
- Хотя использовать основной поток по-прежнему рекомендуется, теперь вы можете создавать экземпляр библиотеки Google Play Платежей из фонового потока.
- Создание экземпляра полностью перенесено в фоновый поток, чтобы снизить вероятность ошибок ANR.
Выпуск библиотеки Play Платежей 1.2.1 (4 марта 2019 г.)
Теперь доступна версия 1.2.1 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Значительные изменения
- Добавлена поддержка товаров с вознаграждением. Подробнее о функциях, связанных с монетизацией…
Другие изменения
- Добавлены общедоступные конструкторы для
PurchasesResultиSkuDetailsResult, чтобы упростить тестирование. - Объекты
SkuDetailsмогут использовать новый методgetOriginalJson(). - Все вызовы сервисов AIDL теперь обрабатываются фоновыми потоками.
Исправлены ошибки.
- В общедоступные API больше не передаются прослушиватели обратного вызова со значением null.
Выпуск библиотеки Google Play Платежей 1.2 (18 октября 2018 г.)
Доступна версия 1.2 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Обзор изменений
- Теперь библиотека Google Play Платежей лицензируется в соответствии с Лицензионным соглашением на пакет средств разработки ПО для Android.
- Добавлен API
launchPriceChangeConfirmationFlow, который предлагает пользователям проверить отложенное изменение цены подписки. - Добавлена поддержка нового режима пропорционального распределения
DEFERREDпри переходе на более дорогой или дешевый тарифный план. - В классе
BillingFlowParamsзаменилиsetSku()наsetSkuDetails(). - Исправлены незначительные ошибки и оптимизирован код.
Подтверждение изменения цены
Теперь в Google Play Console можно изменить цену подписки и предложить пользователям ознакомиться с ней и принять ее, когда они откроют приложение.
Чтобы использовать этот API, создайте объект PriceChangeFlowParams, используя skuDetails продукта с подпиской, а затем вызовите метод launchPriceChangeConfirmationFlow(). Реализуйте PriceChangeConfirmationListener, чтобы обрабатывать результат после завершения процесса подтверждения изменения цены, как показано в следующем фрагменте кода:
Kotlin
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. В этом режиме подписка пользователя будет обновлена при следующем продлении.
Подробнее о том, как задать режим пропорционального распределения…
Новый способ указания сведений о SKU
В классе BillingFlowParams метод setSku() устарел.
Это изменение позволит оптимизировать процесс оплаты в Google Play.
При создании нового экземпляра BillingFlowParams в клиенте платежей через приложение мы рекомендуем работать с объектом JSON напрямую, используя setSkuDetails(), как показано в следующем фрагменте кода:
В классе BillingFlowParams Builder метод setSku() устарел. Вместо этого используйте метод setSkuDetails(), как показано в следующем фрагменте кода. Объект, переданный в объект setSkuDetails(), получен из метода querySkuDetailsAsync().
Kotlin
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 Платежей 1.1 (7 мая 2018 г.)
Доступна версия 1.1 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Обзор изменений
- Добавлена поддержка указания режима пропорционального расчета в
BillingFlowParamsпри переходе на тарифный план с увеличенным или уменьшенным объемом хранилища. - Логический флаг
replaceSkusProrationвBillingFlowParamsбольше не поддерживается. Используйте вместо негоreplaceSkusProrationMode. launchBillingFlow()теперь вызывает обратный вызов для ответов, которые не удалось получить.
Изменения в поведении
Версия 1.1 библиотеки Google Play Платежей содержит следующие изменения в поведении:
Разработчики могут задать replaceSkusProrationMode в классе BillingFlowParams.
ProrationMode – это дополнительная информация о типе пропорционального расчета при переходе на более дорогой или дешевый тарифный план.
Kotlin
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() теперь вызывает обратный вызов для ответов с ошибками
Библиотека Платежей всегда вызывает обратный вызов PurhcasesUpdatedListener и асинхронно возвращает BillingResponse. Также сохраняется синхронное возвращаемое значение BillingResponse.
Исправлены ошибки.
- Корректно завершает работу асинхронных методов при отключении сервиса.
BuilderОбъекты параметров больше не изменяют встроенные объекты.- Проблема 68087141:
launchBillingFlow()теперь вызывает обратный вызов для неудачных ответов.
Выпуск библиотеки Google Play Платежей 1.0 (19 сентября 2017 г., анонс)
Доступна версия 1.0 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Важные изменения
- В манифесте библиотеки встроено разрешение на использование платежных функций. Добавлять разрешение
com.android.vending.BILLINGв манифест Android больше не нужно. - В класс
BillingClient.Builderдобавлен новый конструктор. - Добавлен шаблон конструктора для класса
SkuDetailsParams, который можно использовать в методах для запроса SKU. - Некоторые методы API были обновлены для обеспечения единообразия (одинаковые названия и порядок аргументов возврата).
Изменения в поведении
В версии 1.0 библиотеки Google Play Платежей произошли следующие изменения.
Класс BillingClient.Builder
BillingClient.Builder
теперь инициализируется с помощью нового шаблона newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Метод launchBillingFlow теперь вызывается с помощью класса BillingFlowParams.
Чтобы запустить сценарий оплаты покупки или подписки, метод launchBillingFlow() получает экземпляр BillingFlowParams, инициализированный с помощью параметров, относящихся к запросу:
Kotlin
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:
Kotlin
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() {...})
Теперь результат возвращается с помощью кода результата и списка объектов SkuDetails, а не предыдущего класса-оболочки. Это сделано для удобства и единообразия API.
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Порядок параметров изменен в методе onConsumeResponse()
Порядок аргументов для функции onConsumeResponse из интерфейса ConsumeResponseListener был изменен, чтобы обеспечить единообразие в нашем API:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Объект PurchaseResult без обертки
PurchaseResult
был развернут, чтобы обеспечить единообразие в нашем API:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Исправлены ошибки.
- В пакете PURCHASES_UPDATED нет кода ответа
- Как устранить проблемы с ProxyBillingActivity и PurchasesUpdatedListener при смене ориентации устройства
Версия Developer Preview 1 (12 июня 2017 г., анонс)
Запущен предпросмотр для разработчиков, призванный упростить процесс разработки, когда речь идет о платежах. Это позволит разработчикам сосредоточиться на реализации логики, специфичной для приложения Android, например архитектуры приложения и структуры навигации.
Библиотека содержит несколько удобных классов и функций, которые можно использовать при интеграции приложений Android с API Google Play Платежей. Библиотека также предоставляет уровень абстракции поверх сервиса на языке описания интерфейсов Android (AIDL), что упрощает разработчикам определение интерфейса между приложением и Google Play Billing API.