Полезная нагрузка разработчика

Полезная нагрузка разработчика ранее использовалась для различных целей, включая предотвращение мошенничества и соотнесение покупок с нужным пользователем. В версии 2.2 и более поздних версиях библиотеки Google Play Платежей сценарии, в которых ранее использовалась полезная нагрузка разработчика, теперь полностью поддерживаются другими компонентами библиотеки.

В связи с этим мы прекратили поддержку дополнительной полезной нагрузки разработчика, начиная с версии 2.2 библиотеки Google Play Платежей. Методы, связанные с полезной нагрузкой разработчика, были объявлены устаревшими в версии 2.2 и удалены в версии 3.0. Обратите внимание, что ваше приложение может по-прежнему получать дополнительные данные разработчика для покупок, совершенных с помощью предыдущих версий библиотеки или AIDL.

Подробный список изменений можно найти в примечаниях к выпуску библиотек Google Play Платежей версий 2.2 и 3.0.

Подтверждение покупок

Чтобы убедиться, что покупки подлинные, а не поддельные или повторные, Google рекомендует использовать токен покупки (полученный с помощью метода getPurchaseToken() в объекте Purchase) вместе с Google Play Developer API. Подробнее о том, как бороться с мошенничеством и нарушениями…

Атрибуция покупок

Во многих приложениях, особенно в играх, важно, чтобы покупка была правильно соотнесена с персонажем или профилем пользователя, который ее совершил. Начиная с версии 2.2 Библиотеки Google Play Платежей, ваше приложение может передавать в Google обфусцированные идентификаторы аккаунта и профиля при запуске диалогового окна покупки и получать их обратно при получении покупки.

Используйте параметры setObfuscatedAccountId() и setObfuscatedProfileId() в BillingFlowParams и извлекайте их с помощью метода getAccountIdentifiers() в объекте Purchase.

Как связать метаданные с покупкой

Google рекомендует хранить метаданные о покупке на защищенном бэкенд-сервере, который вы обслуживаете. Эти метаданные должны быть связаны с токеном покупки, полученным с помощью метода getPurchaseToken в объекте Purchase. Эти данные можно сохранить, передав токен покупки и метаданные в серверную часть, когда после успешной покупки вызывается PurchasesUpdatedListener.

Чтобы метаданные были связаны с покупкой даже в случае сбоя в процессе покупки, Google рекомендует сохранять их на вашем бэкенд-сервере до запуска диалогового окна покупки и связывать с идентификатором аккаунта пользователя, приобретаемым SKU и текущей временной меткой.

Если процесс покупки прервется до вызова метода PurchasesUpdatedListener, приложение обнаружит покупку, когда возобновит работу и вызовет метод BillingClient.queryPurchasesAsync(). Затем вы можете отправить значения, полученные из методов getPurchaseTime(), getSku() и getPurchaseToken() объекта Purchase, на свой бэкенд-сервер, чтобы найти метаданные, связать их с токеном покупки и продолжить обработку покупки. Обратите внимание, что временная метка, которую вы сохранили изначально, не будет точно совпадать со значением getPurchaseTime() объекта Purchase, поэтому вам нужно будет сравнить их приблизительно. Например, вы можете проверить, находятся ли значения в пределах определенного периода времени друг от друга.