---
title: "Как Adapty синхронизирует данные со сторами"
description: "Какие данные о продуктах, ценах и офферах передаются между Adapty и App Store или Google Play, в каком направлении и когда."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skill. Claude Code (self-updating via plugin): `claude plugin marketplace add adaptyteam/adapty-skills && claude plugin install adapty-skills@adapty` — other tools: `npx skills add adaptyteam/adapty-skills --all`

Adapty обменивается данными о продуктах с App Store и Google Play, но этот обмен не является ни постоянным, ни полным. Большинство значений передаются только тогда, когда вы что-то делаете — когда добавляете продукт в сторы или загружаете новые цены. Некоторые данные не передаются вообще, поэтому [Adapty и стор могут показывать разные цены для одного и того же продукта](#product-and-price-discrepancies).

## Что Adapty считывает из сторов \{#what-adapty-reads-from-the-stores\}

Adapty считывает списки продуктов, базовые планы, цены и транзакции из стора. Чтобы изменить продукт или цену, сделайте это в консоли стора. Чтобы посмотреть цены для конкретных стран, скачайте CSV с ценами в разделе [Редактировать продукт](edit-product#set-country-specific-prices).

| Что считывает Adapty | Как поступает (App Store) | Как поступает (Google Play) |
|---|---|---|
| Список продуктов и статус ревью | Через [ключ App Store Connect API](app-store-connection-configuration#step-6-add-app-store-connect-api-key) | Через [сервисный аккаунт](google-play-store-connection-configuration) |
| Базовые планы | Не применимо | Часть продукта подписки |
| Цены по странам | При привязке или редактировании продукта в сторе | При привязке или редактировании продукта в сторе |
| Транзакции, продления и возвраты | Через [серверные уведомления App Store](enable-app-store-server-notifications) | Через [уведомления разработчика в реальном времени](enable-real-time-developer-notifications-rtdn) |
| Цена, которую заплатил покупатель | С каждой транзакцией | С каждой транзакцией |

## Что Adapty записывает в сторы \{#what-adapty-writes-to-the-stores\}

Продукты, цены и introductory trials начинаются в Adapty и попадают в стор только после того, как вы совершаете действие — никакого расписания.

| Что записывает Adapty | Когда попадает в App Store | Когда попадает в Google Play |
|---|---|---|
| Новые продукты | Когда вы [отправляете продукт в сторы](create-product#create-product-and-push-to-store) | Когда вы отправляете продукт в сторы |
| Цены для отдельных стран | Когда вы [загружаете CSV с ценами](edit-product#set-country-specific-prices) | Когда вы загружаете CSV с ценами |
| Бесплатный пробный период (introductory offer) | Когда вы отправляете новый продукт | Никогда — создайте его в [Google Play Console](google-play-offers) |

Adapty сравнивает ваш CSV с текущими ценами в сторе и обновляет только те цены, которые отличаются — так что загружать файл целиком безопасно. Существующие подписчики сохраняют цену, по которой оформили подписку, если только вы не выбрали **Apply to existing subscribers**.

## Что настраивается только в Adapty \{#what-you-set-in-adapty-only\}

Стор никогда не изменяет эти настройки.

| Элемент | Почему это остаётся в Adapty |
|---|---|
| Цена подключённого продукта стора | Заполнитель, фиксируется при создании. Помогает различать продукты, но в стор не передаётся. Аналитика, интеграции и SDK используют реальные цены стора. |
| [Уровни доступа](access-level) | Adapty управляет доступом к платному контенту. У сторов нет аналогичного механизма. |
| ID promotional offer и win-back offer | Adapty нужен ID для подписания покупки. Сам оффер создаётся в консоли стора. |

## Что происходит на устройстве \{#what-happens-on-the-device\}

Цена, которую покупатель видит на пейволе, поступает из StoreKit или Google Play Billing в момент открытия пейвола — не из Adapty. Изменение цены в консоли стора доходит до пользователей сразу после публикации. Выпускать обновление приложения не нужно, и в Adapty менять ничего не нужно.

В обратном направлении: SDK Adapty отправляет каждую покупку в Adapty с указанием цены, валюты и страны. Adapty использует эти значения для записи выручки в валюте покупателя.

## Stripe, Paddle и пользовательские сторы \{#stripe-paddle-and-custom-stores\}

Интеграции Stripe и Paddle передают транзакции, но не каталог продуктов. Покупки поступают в Adapty через вебхук провайдера или, в случае [пользовательских сторов](custom-store), через ваш собственный бэкенд. Каждый продукт и ID цены нужно добавлять вручную. Если ID отсутствует в Adapty, он ни с чем не совпадёт — такие транзакции и их выручка не появятся в отчётах. Для Stripe и Paddle то же самое происходит, когда продукт есть, но у него не указана **Subscription duration**. Ни один из этих случаев никак не обозначается, поэтому добавляйте ID и длительность для каждого продукта, который вы продаёте.

## Расхождения в продуктах и ценах \{#product-and-price-discrepancies\}

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

| Что видите | Возможные причины | Что делать |
|---|---|---|
| Цена в Adapty отличается от цены в сторе | На экране **Products** отображается цена, которую вы указали при создании продукта. Если вы отправили продукт в сторы, Adapty использовал её как начальную цену. Изменить её впоследствии нельзя, поэтому как только сторы берут управление ценой — значения расходятся. Цены, которые платят покупатели сейчас, — это [цены по странам](edit-product#set-country-specific-prices). | Ничего делать не нужно. С покупателей снимается цена стора, а отчёты о выручке используют фактически уплаченную сумму. Чтобы изменить цену для покупателей, отредактируйте её в консоли каждого стора или [загрузите CSV с ценами](edit-product#set-country-specific-prices), чтобы обновить оба стора сразу. |
| Продукт отсутствует в выпадающем списке | Три возможные причины: учётные данные стора перестали работать — список оказывается пустым. Продукт, созданный менее 10 минут назад, мог ещё не попасть в кешированную копию списка App Store в Adapty. Выбранная **Subscription duration** фильтрует список: **Lifetime**, **Non-Subscriptions** и **Consumables** показывают разовые продукты, все остальные значения — подписки. | Установите **Subscription duration** в соответствии с типом продукта в сторе. Если продукт был создан несколько минут назад, попробуйте снова чуть позже. В противном случае проверьте [учётные данные стора](#if-updates-stop-arriving). |
| Introductory offer не отображается в Adapty | Adapty создаёт introductory offer только при отправке нового продукта в стор и показывает только те офферы, которые создал сам. Оффер, настроенный самостоятельно в консоли стора, никогда не появится в окне **Edit product**. | Ничего делать не нужно. Introductory offers применяются автоматически, когда покупатель соответствует условиям, — добавлять их в Adapty не требуется. |
| Скидка не применилась при покупке | Возможно, покупатель не соответствовал условиям — это решает стор, а не Adapty. Либо promotional offer в App Store не был применён, потому что Adapty не смог его подписать с помощью вашего [In-App Purchase Key](offers). | Убедитесь, что ключ загружен и действителен, затем проверьте условия оффера в сторе. |
| Транзакции Stripe перестали появляться после изменения цены | Изменение цены в Stripe создаёт новый `price_id`, а Adapty сопоставляет события по точной паре `product_id` + `price_id`. События с новой ценой ни с чем не совпадают, хотя Stripe по-прежнему сообщает об успешной доставке вебхука. | Добавьте новый `price_id` к продукту в Adapty — до этого выручка не будет фиксироваться. См. раздел [Stripe](stripe). |
| Покупатель приобрёл продукт, но не получил уровень доступа | ID продукта в сторе, который он купил, не привязан ни к одному продукту в Adapty. Adapty фиксирует покупку в строке продукта, созданной автоматически, а эта строка не содержит уровня доступа. | Создайте продукт в Adapty с точным ID продукта из стора и назначьте ему [уровень доступа](access-level). |
| Обновления перестали поступать | Один из учётных данных стора перестал работать. Каждый из них отвечает за определённую часть обмена данными. | Определите, какая часть перестала работать, и замените только её учётные данные — см. раздел [Если обновления перестали поступать](#if-updates-stop-arriving). |

## Если обновления перестали приходить \{#if-updates-stop-arriving\}

Adapty не сигнализирует об учётных данных, которые перестали работать. Каждый набор данных отвечает за свою часть обмена, поэтому по симптому можно понять, что именно нужно заменить.

| Что перестало работать | Учётные данные для замены |
|---|---|
| Список продуктов, статусы проверки или публикация продуктов и цен в сторе | App Store: [ключ App Store Connect API](app-store-connection-configuration#step-6-add-app-store-connect-api-key). Google Play: [файл ключа сервисного аккаунта](create-service-account-key-file). |
| Новые транзакции, продления и возвраты | App Store: [серверные уведомления](enable-app-store-server-notifications). Google Play: [уведомления разработчика в реальном времени](enable-real-time-developer-notifications-rtdn). |
| Promotional offers при покупке | App Store: [ключ встроенных покупок](offers). |
| Валидация покупок для каждого пользователя | App Store: [общий секрет](app-store-connection-configuration). Google Play: [файл ключа сервисного аккаунта](google-play-store-connection-configuration). |

Замена учётных данных в консоли стора не обновляет их в Adapty. Загрузите новые в **App settings**.