Чем мы можем помочь?

Уведомление: устаревший механизм валидации чеков больше не поддерживается

  • Обновлено
Раздел Подробности
Что нового

7 сентября 2026 года AppsFlyer прекратит поддержку устаревшего бэкенд-сервиса валидации чека. Начиная с этой даты приложения, использующие устаревший метод validateAndLogInAppPurchase, независимо от версии SDK, перестанут получать ответы о результатах валидации, а события af_purchase, валидированные и зарегистрированные с помощью этого метода, больше не будут регистрироваться в AppsFlyer.

Кроме того, начиная с версии AppsFlyer SDK 7.0.0 устаревший метод будет удален из SDK. Приложения, обновленные до v7.0.0 или более поздней версии, не смогут вызывать устаревший метод.

Чтобы продолжить измерять подтвержденные покупки, AppsFlyer предлагает два альтернативных решения:

  • Валидация чека Бесплатное решение, которое валидирует покупки через магазины приложений, используя новый validateAndLog метод SDK.
  • Доход магазина ROI360. Премиум-решение для измерения дохода, которое включает отслеживание возвратов, полную видимость жизненного цикла подписки и расчет чистого дохода.
Дата вступления в силу

Действуют следующие даты:

  • Дата обновления: 17/06/2026
  • Дата полного отключения: 7 сентября 2026 года
Что важно знать
  • Теперь требуется онбординг. В отличие от устаревшего механизма, новая функция валидации чеков работает только после настройки типа продукта и учетных данных магазина в AppsFlyer. Без этой настройки SDK показывает ошибку.
  • Валовой доход заменяет пользовательские значения дохода. Новая валидация чека фиксирует валовой доход, возвращаемый магазином, а не значение, которое вы передаете в вызове SDK. Если раньше вы передавали пользовательское значение (например, чистую сумму после вычета комиссии магазина), после миграции ожидайте расхождений в дэшбордах и партнерских постбэках. Для получения данных о чистом доходе используйте ROI360 Store Revenue.
  • Дэшборды и постбэки используют только цену и валюту из ответа валидации магазина. В отличие от устаревшего, новый метод validateAndLogInAppPurchase не принимает цену или валюту в вызове SDK. Эти значения извлекаются непосредственно из ответа магазина на запрос валидации. Любое значение af_revenue, переданное в качестве дополнительного параметра, сохраняется в объекте custom_data события, но не используется в дашбордах или постбэках.
  • Новый обязательный параметр: Тип покупки. Указывает SDK, является ли транзакция разовой покупкой или подпиской.
Что необходимо сделать:

Чтобы перейти на одно из двух решений (до 7 сентября 2026 года), выполните одно из следующих действий:

Более подробную информацию см. здесь:

Часто задаваемые вопросы

Как узнать, какие из моих приложений все еще используют устаревшую валидацию чека?

Устаревший механизм не отображается как тип продукта на странице настроек дохода, поэтому определить, используется ли устаревший механизм, только по интерфейсу невозможно. Используйте следующие методы вместе:

  • Сначала просканируйте сырые данные. Найдите события af_purchase с event_source: SDK и is_receipt_validated: true. Это возможные кандидаты, но вызовы logEvent могут создавать похожие события, поэтому само по себе это не является окончательным подтверждением.
  • Подтвердите это в коде SDK. Если ваше приложение вызывает validateAndLogInAppPurchase с устаревшей сигнатурой, значит, оно использует устаревший механизм. Устаревшая сигнатура включает:
    • Android: лицензионный ключ, данные в формате JSON, цена, валюта
    • iOS: идентификатор продукта, цена, валюта, идентификатор транзакции
  • Свяжитесь со своим CSM. Он может подтвердить, какие из ваших приложений все еще работают на устаревшей версии.

Что именно произойдет 7 сентября 2026 года?

Устаревший серверный сервис валидации чеков прекращает работу. Начиная с этого дня:

  • При любом вызове устаревшего метода validateAndLogInAppPurchase ответ о результатах проверки не возвращается независимо от версии SDK.
  • События af_purchase, прошедшие валидацию и зарегистрированные этим методом, больше не фиксируются в AppsFlyer.
  • Дэшборды, сырые данные и партнерские постбэки больше не получают данные о покупках из устаревшего метода.

Чтобы продолжить сбор валидированных покупок, перейдите на один из поддерживаемых альтернативных вариантов до 7 сентября 2026 года.

Повлияет ли включение новой валидации чека на рабочие версии приложения, которые по-прежнему вызывают устаревший метод?

Нет. Оба продукта работают параллельно до 7 сентября 2026 года. Включение новой валидации чека в AppsFlyer не влияет на версии приложения, которые по-прежнему обращаются к устаревшему методу. Они продолжат работать как раньше до даты прекращения поддержки.

Что будет с пользователями старых версий приложения, которые не перейдут на новую?

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

Можно ли позже перейти с валидации чека на ROI360 Store Revenue?

Да Оба продукта используют один и тот же метод SDK validateAndLogInAppPurchase (v2), поэтому переход с валидации чека на ROI360 Store Revenue не требует изменения SDK или релиза приложения. Чтобы перейти, измените Тип продукта на странице Настойки выручки и выполните дополнительную настройку ROI360 (уведомления сервера App Store для iOS, RTDN Google Play для Android). См. Переход с валидации чека на ROI360 Store Revenue.

Если вам нужны дополнительные возможности — автоматическое обнаружение покупок, отслеживание всего жизненного цикла подписки (включая продления, переходы на другой тариф и существующих подписчиков), а также обработка изменений стоимости подписки, — интегрируйте компонент SDK Коннектор покупок. Для этого потребуется обновить приложение, но это необязательно. Ручная проверка с помощью validateAndLogInAppPurchase (v2) работает в ROI360 Store Revenue и без этого компонента.

Можно ли полностью пропустить валидацию покупок в AppsFlyer?

Да. Вы можете отправлять события покупок в приложении с помощью стандартного API logEvent. Но тогда вы не получите:

  • Валидацию чека в магазинах приложений, которая отфильтровывает мошеннические покупки
  • Метка af_validated в событиях: имеет значение true, когда AppsFlyer успешно проверяет покупку в магазине, и false, когда проверка не проходит. Без валидации эта метка отсутствует.
  • Точные постбэки о выручке вашим партнерам по UA. Без валидации любой переданный вами af_revenue записывается и отправляется в сети как есть — без подтверждения того, что покупка действительно произошла

По этим причинам AppsFlyer рекомендует использовать валидацию чека или ROI360 Store Revenue, а не полностью пропускать валидацию.

Что произойдет, если в сервисе валидации Apple или Google произойдет сбой?

Это зависит от того, какой продукт вы используете:

  • Валидация чека: обратный вызов SDK возвращает код ошибки. Ваше приложение должно обработать сбой и внедрить собственную логику повторных попыток.
  • ROI360 Store Revenue: AppsFlyer автоматически повторяет валидацию, как только сервис магазина восстанавливается, и заново генерирует все пропущенные события за период сбоя.

Почему изменились данные о доходе на дэшборде после перехода на новую версию?

Изменился источник дохода. Устаревший механизм использовал значение, переданное вами при вызове SDK. Новая валидация чека использует валовой доход, сообщаемый магазином. Если ранее вы передавали пользовательское значение, например чистую выручку после вычета комиссии магазина, то после перехода на новую версию в дэшбордах и постбэках для партнеров будет отображаться другое значение.

Если вам нужна чистая выручка, используйте ROI360 Store Revenue. Он фиксирует и валовой, и чистый доход (валовой за вычетом комиссий магазина и налогов).

Что происходит с моим пользовательским значением af_revenue?

Если вы по-прежнему передаете значение af_revenue, оно сохраняется в событии внутри объекта custom_data. Дэшборды и партнерские постбэки используют валовое значение из ответа магазина, а не ваше пользовательское значение.

Увидят ли мои партнеры новый доход брутто в постбэках?

Да. После миграции постбэки af_purchase передают валовой доход из магазина. Если ранее вы передавали пользовательское значение в рамках устаревшей версии, ваши партнеры увидят другое число. Обязательно сообщите вашим UA-партнерам о предстоящем переходе до начала миграции, особенно тем, кто использует данные о доходе для оптимизации кампаний.

Как изменятся названия событий после миграции?

Устаревший метод создавал одно событие af_purchase для всех типов транзакций. В новой валидации чека используются разные названия событий:

  • Разовая покупка: af_purchase
  • Начало пробного периода: af_ars_trial_started
  • Начало подписки: af_ars_subscription_started
  • Покупка в песочнице: af_purchase_sandbox_sdk
  • Подписка или пробный период в песочнице: af_ars_sandbox_sdk

Полный набор событий жизненного цикла подписки (продления, отмены, возвраты средств, переход на новую версию) доступен только в ROI360 Store Revenue. Полный список событий см. в статье О валидации чека.

Можно ли использовать ответ SDK при валидации для управления доступом к купленному контенту?

Новая валидация чека по-прежнему возвращает результат валидации в callback SDK, и вы можете использовать его для управления доступом к купленному контенту. В результате проверка становится точнее, поскольку используются новейшие механизмы валидации Apple App Store и Google Play, поэтому данным, получаемым через обратный вызов, можно доверять в большей степени.

Как новый метод различает подписки и разовые покупки?

Для нового метода validateAndLogInAppPurchase обязателен параметр Тип покупки. Укажите значение разовая или подписка в зависимости от типа транзакции.

Почему SDK возвращает ошибку «Проверка покупок не включена для этого приложения в AppsFlyer»?

В вашем приложении интегрирован новый метод validateAndLogInAppPurchase (v2), но продукт не настроен в дэшборде AppsFlyer. Откройте Настройки> ROI360 > Настройки дохода > Покупки& подписки, выберите валидация чека или ROI360 и выполните шаги настройки.

Почему в новой сборке SDK регистрируются только события песочницы, а не af_purchase?

af_purchase регистрируется только для транзакций в продуктивной среде. Транзакции в песочнице регистрируются как af_purchase_sandbox_sdk. Чтобы создать реальное событие af_purchase, проведите тестирование в рабочей среде (не через TestFlight на iOS и не с помощью лицензированного тестировщика на Android).