Отправка In-App покупок на Android
Для SDK AppMetrica версии 4.0 и выше доступен автоматический сбор данных о покупках внутри приложения. Для включения и выключения автосбора используется метод sdk withRevenueAutoTrackingEnabled
.
Примечание
Автоматический сбор данных о покупках внутри приложения при использовании Google Play Billing Library версии 3.x доступен в SDK AppMetrica версии 4.0.0 и выше. Автоматический сбор для Google Play Billing Library 4.0.0 доступен в SDK AppMetrica версии 4.2.0 и выше.
Тестирование и ручная отправка информации о покупках
В AppMetrica нет возможности сегментировать Revenue на "тестовые" и "не тестовые". Если для отладки покупок вы используете основной API key, то тестовые покупки будут попадать в общую статистику. Поэтому, чтобы отладить отправку Revenue, используйте отправку статистики на дополнительный API key с помощью репортера. Подробнее о работе репортера в разделе Примеры использования.
Шаг 1. Создайте тестовое приложение в AppMetrica
Заполните параметры приложения: ссылка в магазине приложений (если приложение еще не опубликовано — оставьте поле пустым), название, категория, часовой пояс для построения отчетов.
Чтобы добавить еще одно приложение, нажмите кнопку Добавить приложение в выпадающем списке в интерфейсе AppMetrica.
Шаг 2. (Опционально) Включите валидацию
Для валидации покупок на Android используется локальная валидация с помощью публичного ключа.
Чтобы включить валидацию, создайте публичный ключ и укажите его в настройках:
- В интерфейсе Google получите
license key
. Подробнее в документации Google. - В интерфейсе AppMetrica перейдите в настройки приложения из меню слева.
- Перейдите на вкладку Revenue.
- В блоке Валидация покупок для Google Play укажите полученный
license key
. - Нажмите Включить валидацию.
Внимание
При включенной валидации в отчете Revenue отображаются покупки, которые прошли валидацию или были отправлены без объекта Revenue.Receipt
.
Шаг 3. Протестируйте отправку Revenue
Ниже описаны этапы отправки Revenue на дополнительный API key:
Чтобы покупки на Android валидировались, настройте отправку объекта Revenue.Receipt
вместе с Revenue
:
-
Создайте объект
Revenue.Receipt
с информацией о покупке и подписью. Его необходимо использовать при создании объектаRevenue
в методеRevenue.Builder.withReceipt(Revenue.Receipt receipt)
. -
Создайте объект
Revenue
с помощью конструктораRevenue.Builder
.В параметре
priceMicros
укажите стоимость в micros, то естьprice
(гдеprice
— стоимость в обычной валюте). -
Отправьте объект
Revenue
на тестовый API key с помощью репортераIReporter
. Подробнее о работе репортеров в разделе Примеры использования.
void handlePurchase(Purchase purchase) {
...
// Creating the Revenue.Receipt instance.
// It is used for checking purchases in Google Play.
Revenue.Receipt revenueReceipt = Revenue.Receipt.newBuilder()
.withData(purchase.getOriginalJson())
.withSignature(purchase.getSignature())
.build();
// Creating the Revenue instance.
Revenue revenue = Revenue.newBuilder(99000000, Currency.getInstance("RUB"))
.withProductID("com.yandex.service.299")
.withQuantity(2)
.withReceipt(revenueReceipt)
.withPayload("{\"source\":\"Google Play\"}")
.build();
// Sending the Revenue instance using reporter.
AppMetrica.getReporter(getApplicationContext(), "Testing API key").reportRevenue(revenue);
}
Чтобы отправить информацию о покупке без валидации:
-
Создайте объект
Revenue
с помощью конструктораRevenue.Builder
.В параметре
priceMicros
укажите стоимость в micros, то естьprice
(гдеprice
— стоимость в обычной валюте). -
(Опционально) Чтобы группировать покупки по
OrderID
, укажите его в методеRevenue.Builder.withPayload(String payload)
.Примечание
Если идентификатор
OrderID
не указан, AppMetrica генерирует идентификатор автоматически. -
Отправьте объект
Revenue
на тестовый API key с помощью репортераIReporter
. Подробнее о работе репортеров в разделе Примеры использования.
// Creating the Revenue instance.
Revenue revenue = Revenue.newBuilder(99000000, Currency.getInstance("RUB"))
.withProductID("com.yandex.service.299")
.withQuantity(2)
// Passing the OrderID parameter in the .withPayload(String payload) method to group purchases.
.withPayload("{\"OrderID\":\"Identifier\", \"source\":\"Google Play\"}")
.build();
// Sending the Revenue instance using reporter.
AppMetrica.getReporter(getApplicationContext(), "Testing API key").reportRevenue(revenue);
Шаг 4. Убедитесь, что покупки отображаются в отчетах
-
Совершите тестовые покупки в приложении.
-
Убедитесь, что в отчете Revenue количество покупок и общая выручка совпадает с отправленными.
Информация в отчете может отсутствовать, если:
- валидация включена и покупка не прошла валидацию;
- информация о покупке не отправилась.
-
Если в отчете нет данных, выгрузите все покупки с помощью ресурса Logs API:
curl -X GET \ 'https://api.appmetrica.yandex.ru/logs/v1/export/revenue_events.json?application_id=1111&date_since=2018-10-10&date_until=2018-10-11&fields=revenue_order_id,revenue_quantity,revenue_price,revenue_currency,is_revenue_verified' \ -H 'Authorization: OAuth oauth_token'
Если в выгрузке есть события и в поле
is_revenue_verified
указано значениеfalse
, то покупки не прошли валидацию.
Шаг 5. Настройте отправку Revenue на основной API Key
После отладки повторите последовательность шагов 2–4 для основного API key.
Чтобы отправить объект Revenue
на основной API key, используйте метод AppMetrica.reportRevenue(Revenue revenue)
.
...
// Sending the Revenue instance.
AppMetrica.reportRevenue(revenue);
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.