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

Объявление: устаревшая валидация чека устарела

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

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

Устаревший метод будет полностью удален в предстоящих релизах SDK. Приложения, обновленные до v7.0.0 или более поздней версии, не смогут вызывать устаревший метод.

AppsFlyer предлагает два поддерживаемых альтернативных решения:

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

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

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

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

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

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

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

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

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

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

Бэкенд-сервис Legacy для валидации чека будет отключен. Начиная с этого дня:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему после миграции изменился доход на моем дэшборде?

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

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

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

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

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

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

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

Legacy создавал одно событие 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, поэтому сигнал, который вы получаете в callback, более надежен.

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

Для нового метода validateAndLogInAppPurchase обязателен параметр PurchaseType. Укажите значение one-time или subscription в зависимости от типа транзакции.

Решение Валидация чека для покупок в приложении теперь официально не поддерживается во всех SDK AppsFlyer.

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

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

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