Исторически полезная нагрузка разработчика использовалась для различных целей, включая предотвращение мошенничества и приписывание покупок правильному пользователю. С версиями 2.2 и выше библиотеки Google Play Billing Library предполагаемые варианты использования, которые ранее полагались на полезную нагрузку разработчика, теперь полностью поддерживаются в других частях библиотеки.
С этой поддержкой мы устарели полезную нагрузку разработчика, начиная с версии 2.2 библиотеки Google Play Billing Library. Методы, связанные с полезной нагрузкой разработчика, устарели в версии 2.2 и были удалены в версии 3.0. Обратите внимание, что ваше приложение может продолжать получать полезную нагрузку разработчика для покупок, сделанных с использованием предыдущих версий библиотеки или AIDL.
Подробный список изменений см. в примечаниях к выпуску Google Play Billing Library 2.2 и Google Play Billing Library 3.0 .
Проверка покупки
Чтобы убедиться, что покупки являются подлинными, а не поддельными или воспроизведенными, Google рекомендует использовать токен покупки (полученный из метода getPurchaseToken()
в объекте Purchase
) вместе с API разработчика Google Play для проверки подлинности покупок. Для получения дополнительной информации см. Борьба с мошенничеством и злоупотреблениями .
Атрибуция покупки
Многим приложениям, особенно играм, необходимо убедиться, что покупка правильно приписывается внутриигровому персонажу/аватару или профилю пользователя в приложении, который инициировал покупку. Начиная с Google Play Billing Library 2.2, ваше приложение может передавать Google запутанные идентификаторы аккаунта и профиля при запуске диалога покупки и получать их обратно при извлечении покупки.
Используйте параметры setObfuscatedAccountId()
и setObfuscatedProfileId()
в BillingFlowParams
и извлеките их с помощью метода getAccountIdentifiers()
в объекте Purchase
.
Свяжите метаданные с покупкой
Google рекомендует хранить метаданные о покупке на защищенном сервере бэкэнда, который вы обслуживаете. Эти метаданные покупки должны быть связаны с токеном покупки, полученным с помощью метода getPurchaseToken
в объекте Purchase
. Эти данные можно сохранить, передав токен покупки и метаданные в ваш бэкэнд, когда ваш PurchasesUpdatedListener
вызывается после успешной покупки.
Чтобы обеспечить привязку метаданных в случае прерывания процесса покупки, Google рекомендует сохранять метаданные на внутреннем сервере до запуска диалогового окна покупки и привязывать их к идентификатору учетной записи пользователя, приобретаемому артикулу и текущей временной метке.
Если поток покупки прерывается до вызова PurchasesUpdatedListener
, ваше приложение обнаружит покупку, как только ваше приложение возобновит работу и вызовет BillingClient.queryPurchasesAsync()
. Затем вы можете отправить значения, полученные из методов getPurchaseTime()
, getSku()
и getPurchaseToken()
объекта Purchase
, на ваш внутренний сервер для поиска метаданных, связывания метаданных с токеном покупки и продолжения обработки покупки. Обратите внимание, что изначально сохраненная вами временная метка не будет точно соответствовать значению из getPurchaseTime()
объекта Purchase
, поэтому вам нужно будет сравнить их приблизительным образом. Например, вы можете проверить, находятся ли значения в пределах определенного периода времени друг от друга.