В этом документе содержатся примечания к выпуску библиотеки 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)
Выпущены библиотека Google Play Платежей версии 9.0.0 и расширения Kotlin. Если вы хотите перейти с предыдущих версий PBL, ознакомьтесь с руководством по переходу на PBL 9.
Обзор изменений
Обновлены коды ошибок для заблокированных действий в Google Play. В случаях, когда приложение Google Play заблокировано системой (например, в детском режиме, настроенном производителем), код ответа изменен с
ERRORнаBILLING_UNAVAILABLE. Кроме того, в таких случаяхBillingResultтеперь возвращает отладочное сообщение Google Play заблокирован.Обновление допустимости значения NULL для платежей, предоставляемых разработчиком. Метод
DeveloperProvidedBillingDetails.getLinkUri()обновлен и теперь может принимать значение@Nullable. Это изменение поддерживает сценарии, в которых URI прямой ссылки для внешних платежей недоступен на этапе выбора способа оплаты.Чтобы избежать проблем, убедитесь, что код интеграции обрабатывает как значения
null, так и пустые строки (""), возвращаемые методомDeveloperProvidedBillingDetails.getLinkUri(), прежде чем выполнять синтаксический анализ или запускать намерения браузера.Значение
targetSdkVersionизменено на 35.Теперь вы можете сообщать пользователям о предстоящем повышении цены с запросом согласия, используя сообщения в приложении. Это позволяет пользователям подтверждать повышение цены, не выходя из приложения. Сообщение о повышении цены с запросом согласия показывается начиная с первого дня, когда пользователь может принять повышение цены, и не чаще одного раза в 7 дней.
Выпуск библиотеки 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, обновите 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, ознакомьтесь с руководством по интеграции.
- Прекращена поддержка
BillingClient.Builder.enableExternalOfferAPI. - Прекращена поддержка
isExternalOfferAvailableAsyncAPI. - Прекращена поддержка
createExternalOfferReportingDetailsAsyncAPI. - Прекращена поддержка
showExternalOfferInformationDialogAPI.
Выпуск библиотеки 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 предзаказа для контента для однократных покупок.
Теперь вы можете использовать API
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails(), чтобы получать сведения о предзаказах.Библиотека 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()позволяет разработчикам включить автоматическое повторное подключение к сервису. Это упрощает управление подключениями, поскольку повторные подключения к 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)
Выпущены библиотека Google Play Платежей версии 7.1.0 и расширения 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(). - Использованные покупки. Разработчики должны отслеживать использованные покупки на своих серверах.
- Отмененные покупки: используйте API voided-purchases.
- Подробнее о запросе истории покупок…
- Обработанные и незавершенные покупки. Чтобы получить активные покупки, используйте
Теперь
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, которые ранее были помечены как устаревшие, удалены из Play Billing Library 6.0.0. Разработчикам следует использоватьqueryPurchasesAsyncвместоqueryPurchases. Альтернативные варианты дляlaunchPriceConfirmationFlowописаны в разделе Изменение цен.Добавлен новый код ответа на ошибку сети.
Начиная с версии 6.0.0 библиотеки Play Платежей, добавлен новый код ответа на ошибку сети –
NETWORK_ERROR. Этот код возвращается, когда ошибка возникает из-за проблем с сетевым подключением. Ранее эти ошибки сетевого подключения регистрировались какSERVICE_UNAVAILABLE.Обновлены
SERVICE_UNAVAILABLEиSERVICE_TIMEOUT.Начиная с версии 6.0.0, ошибки, связанные с превышением времени ожидания при обработке, будут возвращаться как
SERVICE_UNAVAILABLEвместоSERVICE_TIMEOUT.В более ранних версиях Play Billing Library поведение не изменится.
Удалено:
SERVICE_TIMEOUT.Начиная с версии PBL 6.0.0,
SERVICE_TIMEOUTбольше не будет возвращаться. Предыдущие версии библиотеки Google Play Платежей по-прежнему будут возвращать этот код.Добавлено дополнительное ведение журнала.
В Play Billing Library 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 Платежей использовалась приложениями с режимом запуска singleTask. Обратный вызов
onPurchasesUpdated()будет запущен, когда приложение возобновит работу из панели запуска Android, а диалоговое окно оплаты было видно до приостановки.
Исправление ошибок в Unity
- Обновите Java до версии 3.0.3, чтобы устранить утечку памяти и решить проблему, которая не позволяет совершать покупки, когда приложение возобновляет работу из панели запуска Android, а диалоговое окно оплаты было видно до приостановки.
Выпуск библиотеки Google Play Платежей 3.0.2 (24.11.2020)
Выпущены версия 3.0.2 библиотеки Google Play Платежей и расширение Kotlin.
Исправлены ошибки.
- Исправлена ошибка в расширении Kotlin, из-за которой сопрограмма завершалась с ошибкой "Already resumed".
- Исправлены неразрешенные ссылки, возникавшие при использовании расширения 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.03.2020)
В версии 2.2.0 Google Play Платежей есть функция, которая помогает разработчикам убедиться, что покупки приписываются правильному пользователю. Благодаря этим изменениям вам больше не нужно создавать собственные решения на основе полезной нагрузки разработчика. В рамках этого обновления функция дополнительной полезной нагрузки для разработчиков была объявлена устаревшей и будет удалена в одном из следующих выпусков. Подробную информацию, в том числе о рекомендуемых альтернативах, можно найти в статье Дополнительная строка.
Библиотека Google Play Платежей версии 2 для Unity
В дополнение к текущим версиям библиотеки Google Play Платежей 2 для Java и Kotlin мы выпустили версию для Unity. Разработчики игр, использующие Unity API для покупок в приложении, могут перейти на новую версию уже сейчас, чтобы получить доступ ко всем функциям библиотеки 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 г.)
Выпущена библиотека Google Play Платежей версии 2.1.0 и новое расширение Kotlin. Расширение Kotlin для библиотеки Play Платежей предоставляет идиоматические альтернативы API для использования Kotlin с улучшенной безопасностью нулевых значений и сопрограммами. Примеры кода можно найти в статье Как использовать библиотеку Google Play Платежей.
В этой версии внесены следующие изменения:
Обзор изменений
- В
BillingFlowParamsметодsetOldSku(String oldSku)объявлен устаревшим и заменен наsetOldSku(String oldSku, String purchaseToken), чтобы устранить неоднозначность, когда несколько аккаунтов на устройстве владеют одним и тем же SKU.
Выпуск библиотеки Google Play Платежей 2.0.3 (05.08.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 (06.06.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.
Для подписок необходимо подтверждать каждую покупку с новым токеном. Это означает, что все первоначальные покупки, изменения планов и повторные регистрации должны быть подтверждены, но вам не нужно подтверждать последующие продления. Чтобы определить, требуется ли подтверждение покупки, проверьте соответствующее поле.
Объект 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 Billing.
Поддерживаются дополнительные данные разработчика.
В версии 2.0 библиотеки Google Play Billing добавлена поддержка дополнительной строки разработчика – произвольных строк, которые можно прикреплять к покупкам. Вы можете прикрепить параметр полезной нагрузки разработчика к покупке, но только когда покупка подтверждена или использована. В AIDL же его можно было указать при запуске процесса покупки. Поскольку теперь покупки можно инициировать за пределами приложения, это изменение гарантирует, что у вас всегда будет возможность добавить к ним полезную нагрузку.
Чтобы получить доступ к полезной нагрузке в новой библиотеке, объекты Purchase теперь включают метод getDeveloperPayload().
Соответствие предложений
Теперь при предложении SKU со скидкой Google Play возвращает исходную цену SKU, чтобы вы могли показать пользователям, что они получают скидку.
SkuDetails содержит два новых метода для получения исходной цены SKU:
getOriginalPriceAmountMicros()- Возвращает неотформатированную исходную цену SKU до скидки.
getOriginalPrice()- возвращает исходную цену с дополнительным форматированием валюты.
Транзакции, ожидающие подтверждения
В версии 2.0 библиотеки Google Play Billing необходимо поддерживать покупки, для которых требуются дополнительные действия, прежде чем пользователь получит право на контент. Например, пользователь может приобрести контент в вашем приложении, оплатив его наличными в обычном магазине. Это означает, что транзакция завершается за пределами вашего приложения. В этом случае вы должны предоставить право только после того, как пользователь завершит транзакцию.
Чтобы включить незавершенные покупки, вызовите метод enablePendingPurchases() при инициализации приложения.
Используйте Purchase.getPurchaseState(), чтобы определить, имеет ли покупка статус PURCHASED или PENDING. Обратите внимание, что предоставлять право на контент следует, только если статус равен PURCHASED. Чтобы проверить статус Purchase, выполните следующие действия:
- При запуске приложения вызовите метод
BillingClient.queryPurchases(), чтобы получить список неиспользованных товаров, связанных с пользователем. - Вызовите
Purchase.getPurchaseState()для каждого возвращенного объектаPurchase. - Реализуйте метод
onPurchasesUpdated(), чтобы реагировать на изменения объектовPurchase.
Кроме того, в Google Play Developer API есть статус PENDING для Purchases.products.
Транзакции в обработке не поддерживаются для подписок.
В этом выпуске также представлен новый тип уведомлений для разработчиков в режиме реального времени – OneTimeProductNotification. Этот тип уведомления содержит одно сообщение, значение которого – ONE_TIME_PRODUCT_PURCHASED или ONE_TIME_PRODUCT_CANCELED. Этот тип уведомлений отправляется только для покупок, связанных с отложенными способами оплаты, например наличными.
При подтверждении незавершенных покупок обязательно подтверждайте только те покупки, которые имеют статус PURCHASED, а не PENDING.
Изменения в API
В версии 2.0 библиотеки Google Play Billing Library есть несколько изменений 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 (04.03.2019)
Выпущена версия 1.2.1 библиотеки Google Play Billing. В этой версии внесены следующие изменения:
Значительные изменения
- Добавлена поддержка бонусных продуктов. Подробнее о том, как добавить функции, связанные с бонусными товарами…
Другие изменения
- Добавлены общедоступные конструкторы для
PurchasesResultиSkuDetailsResult, чтобы упростить тестирование. - Объекты
SkuDetailsмогут использовать новый методgetOriginalJson(). - Все вызовы сервисов AIDL теперь обрабатываются фоновыми потоками.
Исправлены ошибки.
- Прослушиватели обратных вызовов Null больше не передаются в общедоступные API.
Выпуск библиотеки Google Play Платежей 1.2 (18.10.2018)
Выпущена версия 1.2 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Обзор изменений
- Теперь библиотека Google Play Billing лицензируется в соответствии с Лицензионным соглашением на использование пакета средств разработки ПО для 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 (07.05.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() теперь запускает обратный вызов для неудачных ответов.
Библиотека Google Play Платежей всегда будет запускать обратный вызов PurhcasesUpdatedListener и асинхронно возвращать BillingResponse. Синхронное возвращаемое значение BillingResponse также сохраняется.
Исправлены ошибки.
- Корректно завершает работу асинхронных методов при отключении сервиса.
- Объекты параметров
Builderбольше не изменяют созданные объекты. - Проблема 68087141.
launchBillingFlow()теперь активирует обратный вызов для неудачных ответов.
Выпуск библиотеки Google Play Платежей 1.0 (19 сентября 2017 г., объявление)
Выпущена версия 1.0 библиотеки Google Play Платежей. В этой версии внесены следующие изменения:
Важные изменения
- Разрешение на встроенные платежи в манифесте библиотеки. Добавлять разрешение
com.android.vending.BILLINGв манифест Android больше не нужно. - В класс
BillingClient.Builderдобавлен новый конструктор. - В класс
SkuDetailsParamsдобавлен шаблон Builder, который будет использоваться в методах для запроса 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 при повороте экрана
Предварительная версия для разработчиков 1 (12 июня 2017 г., объявление)
Запущена предварительная версия для разработчиков, которая упрощает процесс разработки в части платежей и позволяет разработчикам сосредоточиться на реализации логики, специфичной для приложения Android, например на архитектуре приложения и структуре навигации.
В библиотеке есть несколько удобных классов и функций, которые можно использовать при интеграции приложений Android с Google Play Платежами API. Кроме того, библиотека предоставляет уровень абстракции поверх сервиса языка описания интерфейсов Android (AIDL), что упрощает разработчикам определение интерфейса между приложением и Google Play Платежи API.