In-App Purchase Verification (проверки покупки)

Функции отчетности о доходе на платформе MobileAppTracking™ (MAT) используют продвинутые системы проверки платежных выписок. Они независимо проверяют каждую покупку, сделанную в приложении, устраняя фактор дохода от мошеннических операций и обеспечивая максимально точное значение дохода, которое выводится вам на приборную панель.

На платформе MAT покупки в приложениях через Apple iTunes или Google Play отслеживаются в качестве события. В процессе верификации покупок SDK получает идентификатор выписки (Android) или данные выписки (iOS). При этом статус подтверждения покупки изменяется на «ожидание». Затем платформа делает запрос через API магазина, проверяя верификацию покупки. Только верифицированные покупки в приложениях фиксируются как события и повышают показатель прибыли.

Процесс верификации

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

Комплекты SDK на нашей платформе поддерживают сбор идентификаторов выписок (Android) и данных выписок (iOS) через Apple iTunes и Google Play. Поэтому данные параметры включены в информацию о событии покупки внутри приложения.

Если запрос на отслеживание события покупки включает в себя соответствующий идентификатор (Android) или пакет данных (iOS) выписки, платформа автоматически сделает попытку верификации этой покупки через соответствующий магазин.

In_App_Purchase_Verification_1_Verification_Process_kzc

Когда платформа фиксирует событие с идентификатором выписки, статус подтверждения покупки выставляется на «ожидание». Через 60 минут после фиксации события оно направляется на верификацию. Во время верификации идентификатор (Android) или пакет данных (iOS) покупки направляется через API на Google Play или Apple iTunes для проверки ее успешности.

 

Если покупка была успешной, статус проверки события покупки меняется на Verified (Проверено), а сумма общего дохода увеличивается соответственно. Если покупка не проходила, статус меняется на Failed (Ошибка), а значение дохода не увеличивается. Также проверяется блокировка дубликатов покупки на базе идентификатора выписка.

 

ПРИМЕЧАНИЕ. Если вы продаете цифровую подписку с автообновлением через приложение iOS, укажите на платформе MAT свой параметр iTunes Connect Shared Secret, чтобы платформа могла использовать его для проверки. Подписка с автообновлением позволяет пользователям покупать материалы внутри приложения, а по окончании срока пользования покупка автоматически повторяется, если только пользователь ее не отменит.

Покупки в приложениях iTunes – отслеживание через MAT iOS SDK

Начиная с версии 2.5, MAT iOS SDK содержит перегруженный метод measureAction, который дает вам доступ к выписке транзакции, полученной из iTunes в момент совершения покупки в приложении.

В примере кода ниже приводится образец вызова measureAction с использованием выписки покупки в приложении (IAP):

[MobileAppTracker measureAction:eventName
                     eventItems:EventItems
                    referenceId:referenceId
                  revenueAmount:revenue
                   currencyCode:currencyCode
               transactionState:transactionState
                        receipt:receiptData
];

Подробный пример кода для метрики стандартного события покупки в приложении приводится здесь: Отслеживание покупок в приложениях Apple iTunes как событий.

Во время валидации покупок в приложениях iOS проверенные покупки имеют код валидации 0. Если покупка не проверена, коды могут быть различными в зависимости от причины (см. таблицу ниже).

Код iOS Статус проверки покупки Комментарий Проверенный доход Итоговый статус
-3 Неверный комплект Выписка действительна, но содержит идентификатор комплекта с другого сайта. Нет отклонена
-2 Неизвестная ошибка Произошла ошибка. Нет отклонена
-1 Выписка отсутствует Выписка для проверки отсутствует. Нет принята
0 Проверена Выписка прошла проверку. Да принята
21000 Нечитаемый объект JSON Магазину App Store не удалось считать предложенный объект JSON. Нет отклонена
21002 Данные выписки повреждены. Пакет данных выписки поврежден. Нет отклонена
21003 Проверка не пройдена Выписка не авторизована. Нет отклонена
21004 Неверный параметр Shared Secret Указанный вами параметр shared secret не соответствует данному файлу вашего аккаунта. Нет отклонена
21005 Сервер выписки недоступен Сервер для проверки выписки в данный момент недоступен. Нет отклонена
21006 Срок действия выписки о покупке истек Выписка действительна, но срок ее действия истек. Когда на ваш сервер возвращается данный код статуса, данные выписки также декодируются и возвращаются в составе ответа. Нет отклонена
21007 Квитанция из тестовой среды отправлена в продакшен Квитанция была создана в тестовой среде iTunes, но отправлена в продакшен на проверку. Нет отклонена
21008 Квитанция отправлена из продакшен в тестовую среду Квитанция была создана в продакшене, но отправлена в тестовую среду на проверку. Нет отклонена

 

Покупки в приложениях Google Play – отслеживание через Android SDK

Для отслеживания покупок в приложениях Google Play вам потребуется наш комплект Android SDK 2.6+. Чтобы привязывать ваши события к платежной системе внутри приложений Google Play, понадобится служба, привязанная к ней по данныминструкциям.

Ниже приводится пример кода с вызовом measureAction, с использованием идентификатора выписки (данных покупки). В вашем методе onActivityResult вызовите нашу функцию measureAction после получения намерения BUY_INTENT, выполняя парсинг значений purchaseData и dataSignature values:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1001) {          
        int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
        String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
        String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
 
        if (resultCode == RESULT_OK) {
           YourClass.mobileAppTracker.measureAction("purchase", 0.99, "USD", "ref_id_here", purchaseData, dataSignature);
        }
    }
}

ВАЖНО!: Чтобы проверять покупки в приложениях с помощью данных выписки, укажите свой ключ Google Public Key в аккаунте MAT. Чтобы найти Google Public Key, следуйте указаниям, приведенным в документации для разработчиков Android, раздел“Securing Your Application” («Защита приложения»). Получив значение Google Public Key, скопируйте его на страницу параметров своего мобильного приложения (Mobile Apps > Your Mobile App > Details Edit > Google Public Key).

Во время передачи данных выписки платформа будет выполнять проверку покупки по событию.

У проверенных покупок в приложениях Android будет код 0. Любой другой статус означает, что, возможно, произошли проблемы.

Код Android Статус проверки покупки Комментарий Проверенный доход Итоговый статус
-3 Ошибка OpenSSL Ошибка обращения к OpenSSL. Нет отклонена
-2 Неизвестная ошибка Произошла ошибка. Нет отклонена
-1 Выписка отсутствует Выписка для проверки отсутствует. Нет принята
0 Проверена Выписка прошла проверку. Да принята
1 Проверка не пройдена Данные или подпись не проверены. Нет отклонена
2 Неверный секретный ключ Секретный ключ поврежден. Нет отклонена