Перейти к основному содержимому
подсказка
Важно! Это Android SDK 3.2.1-beta версия, которая полностью поддерживает iAB TCFv2 и Google UMP согласно Google требованиям. Интегрируйте эту версию только если вы используете Google Ads, в противном случае используйте нашу стабильную версию. Последняя стабильная версия – Android SDK 3.2.0. Всю информацию об изменениях вы можете найти в истории изменений.
Версия: 3.2.1-beta

Покупки в приложении

к сведению

Отслеживание покупок в приложении будет работать только при подключении к Adjust или AppsFlyer. Чтобы подключить их, следуйте этому руководству для Adjust и этому руководству для AppsFlyer.

Можно отслеживать информацию о покупках в приложении и отправлять информацию на серверы Appodeal для аналитики. Это позволяет группировать пользователей по факту покупки. Это поможет вам настроить рекламу для таких пользователей или просто отключить ее, если это необходимо. Чтобы эта настройка работала правильно, отправьте информацию о покупке через Appodeal SDK.

Шаг 1. Отслеживание Покупок В Приложении

Чтобы отслеживать покупки в приложении, Appodeal SDK потребуется информация о покупке, предоставляемая Google Play Billing Library

Добавьте следующую зависимость в файл build.gradle на уровне модуля:

build.gradle
buildscript {
dependencies {
// ... остальные зависимости проекта
implementation("com.android.billingclient:billing:5.0.0")
// или
implementation("com.android.billingclient:billing-ktx:5.0.0")
}
}

Получите объекты Purchase и SkuDetails из Google Play Billing Library используя это руководство. Получите цену и валюту из SkuDetails.

Создайте и подтвердите покупку в приложении используя метод ниже:

// Объект покупки возвращается Google API в обратном вызове onPurchasesUpdated()
fun validatePurchase(purchase: Purchase) {
// Создаем новую InAppPurchase с типом
val inAppPurchase: InAppPurchase = InAppPurchase.newBuilder(type = InAppPurchase.Type.InApp)
.withPublicKey("YOUR_PUBLIC_KEY")
.withSignature(purchase.signature)
.withPurchaseData(purchase.originalJson)
.withPurchaseToken(purchase.purchaseToken)
.withPurchaseTimestamp(purchase.purchaseTime)
.withDeveloperPayload(purchase.developerPayload)
.withOrderId(purchase.orderId)
.withSku(...) // Идентификатор единицы хранения из Google API
.withPrice(...) // Цена
.withCurrency(...) // Валюта
.withAdditionalParams(...) // Appodeal In-app event при необходимости
.build()
// Валидация покупки
Appodeal.validateInAppPurchase(context = context, purchase = inAppPurchase, callback = object : InAppPurchaseValidateCallback {
override fun onInAppPurchaseValidateSuccess(purchase: InAppPurchase, errors: List<ServiceError>?) {
// Валидация покупки в приложении была успешно подтверждена как минимум одним подключенным сервисом
}
override fun onInAppPurchaseValidateFail(purchase: InAppPurchase, errors: List<ServiceError>) {
// Валидация покупки в приложении была завершена с ошибкой всеми подключенными сервисами
}
})
}
к сведению

Убедитесь, что если вы создали продукт в приложении в разделе Google Play Console → Монетизация, то используете:

  • InAppPurchase.Type.InApp - для покупки в приложении
  • InAppPurchase.Type.Subs - для подписки в приложении
ParameterDescriptionUsage
purchaseTypeТип покупки. Должен быть InAppPurchase.Type.InApp или InAppPurchase.Type.Subs.Adjust/AppsFlyer
publicKeyПубличный ключ из Google Developer Console.AppsFlyer
signatureПодпись транзакции (возвращается из Google API после завершения покупки).Adjust/AppsFlyer
purchaseDataПродукт, приобретенный в формате JSON (возвращается из Google API после завершения покупки).AppsFlyer
purchaseTokenТокен приобретенного продукта (возвращается из Google API после завершения покупки).Adjust
purchaseTimestampОтметка времени покупки продукта (возвращается из Google API после завершения покупки).Adjust
developerPayloadПолезная нагрузка разработчика в приобретенном продукте (возвращается из Google API после завершения покупки).Adjust
orderIdУникальный идентификатор заказа для транзакции приобретенного продукта (возвращается из Google API после завершения покупки).Adjust
skuИдентификатор единицы хранения из Google API.Adjust
priceДоход от события в приложении.Adjust/AppsFlyer/Appodeal
currencyВалюта события в приложении.Adjust/AppsFlyer/Appodeal
additionalParametersДополнительные параметры внутриигрового события.
Проверка покупки в приложении выполняется по FIFO-очереди в одном потоке.
примечание

Если вы используете ваш собственный Adjust аккаунт вам необходимо выполнить Шаг 2 из этого руководства по Отслеживанию событий и создать необходимые события на стороне Adjust.

Шаг 2. Создайте Файл Json В Google Cloud

  1. Войдите в Google Cloud со своими учетными данными;
  2. Выберите Google Play Console Developer project в левом верхнем углу, как показано ниже.
примечание

Убедитесь, что на этом шаге выбран Google Play Console Developer project, а не конкретный проект вашего приложения. Google Play Console позволяет связывать только облачные проекты Google Play Console Developer (позже на шаге 3).

  1. Выберите CredentialsCreate CredentialsService Account;
  2. Выберите Viewer в качестве роли для Service Account и нажмите Done;
  3. Перейдите в ваш service account и нажмите keys → Add key → выберите JSON → отправьте нам файл JSON на электронную почту support@appodeal.com или в чате.

Шаг 3. Добавьте Необходимые Разрешения В Google Play Console

  1. Перейдите в Google Play Console и авторизуйтесь;

  2. Перейдите в Google Play Console → Manage developer accounts → Выберите Developer account →
    Setup → API Access и выберите свой проект Google Play Console Developer из шага 2, где вы создали свой Service Account;

Если вы не видите Google Play Console Developer project в списке, обновите веб-страницу.

подсказка

Если проблема не устранена, убедитесь, что ваша учетная запись разработчика Google Play (адрес электронной почты) является владельцем проекта Google Cloud. Вы можете прочитать больше здесь.

  1. Внизу будет список ваших Service Accounts, которые доступны в этом проекте Google Cloud. Выберите тот, с которого был отправлен JSON;

Нажмите Refresh, если вы не видите свою учетную запись Service Account.

  1. Выберите View Play Console Permissions. В разделе App Permissions выберите необходимые приложения, в которых будут использоваться внутренние события;

  2. Перейдите в раздел Account Permissions и выберите все разрешения для Financial Data:

  • View financial data
  • Manage Orders, subscriptions

Шаг 4. Свяжитесь С Нами

После выполнения всех шагов свяжитесь с нашей службой поддержки по электронной почте support@appodeal.com или в чате со следующей информацией:

  1. JSON-файл вашего Service Account;
  2. Логика реализации покупок в вашем приложении (когда и где вы вызываете метод валидации покупок и валидируете покупки);
  3. Предоставьте нам доступ для тестирования покупки через Google Developer console по электронной почте support@appodeal.com;
  4. Ваш apk файл в архиве zip для тестирования.

Шаг 5. Тестирование

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

  1. Перейдите по пути App Settings → Attribution Settings → и измените Adjust Environment с Production на Sandbox, чтобы протестировать валидацию покупок и не забудьте нажать Save в конце страницы;
  1. Подключите ваше устройство к компьютеру с открытой консолью (Android Studio logcat) и отсортируйте логи по слову purchase;
  1. Теперь вы можете открыть свое приложение и совершить пробную покупку. Если в консоли отображается надпись Valid Purchase, значит, валидация прошла успешно;

  2. Если валидация не прошла успешно, то повторите все шаги, описанные выше, и убедитесь, что предоставленный JSON файл корректный и все шаги выполнены;

  3. После тестирования, смените ваш Adjust Environment на Production по пути App Settings → Attribution Settings.