Синхронизация транзакций из кастомных сторов

Если вы продаёте подписки или встроенные покупки через кастомные сторы — например, Amazon Appstore, Microsoft Store или собственную платёжную платформу — вы можете синхронизировать эти транзакции с Adapty, чтобы автоматически управлять уровнями доступа и отслеживать доход в аналитике.

В этом гайде вы узнаете, как связать покупки из кастомных сторов с Adapty через SDK и API.

Пример использования

Допустим, вы распространяете приложение через Amazon Appstore или создали собственный веб-стор для прямых продаж. Когда пользователь завершает покупку на таких платформах, вы хотите:

  • Автоматически открыть ему доступ к премиум-функциям в мобильном приложении
  • Отразить транзакцию в аналитике Adapty вместе с доходом из App Store и Google Play
  • Запустить интеграции и вебхуки так же, как для любой другой подписки

Именно для этого и нужна данная интеграция.

Шаг 1. Идентифицируйте пользователей

Adapty использует customer_user_id для идентификации пользователей на разных платформах.

Этот идентификатор нужно создать один раз и передать и в мобильный SDK, и в бэкенд. Если пользователи регистрируются через приложение, вы можете передать их customer_user_id при активации SDK. Если SDK уже был активирован до этапа регистрации, используйте метод identify, чтобы создать новый профиль и назначить ему customer_user_id.

Если вы идентифицируете новых пользователей после активации SDK, SDK сначала создаст анонимный профиль (без него работа невозможна). Когда вы вызовете identify с customer_user_id, будет создан новый профиль.

Это нормальное поведение, которое не влияет на точность аналитики. Подробнее здесь.

Шаг 2. Создайте продукты для кастомного стора в дашборде Adapty

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

  1. Перейдите в раздел Products через левое меню дашборда Adapty и нажмите Create product. Или нажмите на существующий продукт, чтобы отредактировать его.
  2. Убедитесь, что выбран уровень доступа, который нужно предоставить пользователям при покупке продукта.
  3. Нажмите + и выберите Add a custom store.
  4. Нажмите Create new custom store.
add-custom-store.webp
  1. Введите название стора (например, «Amazon Appstore», «Microsoft Store» или «Web Store») и его ID. Нажмите Create custom store.
new-store.webp
  1. Нажмите Save changes, чтобы привязать продукт к кастомному стору.
  2. Введите Store product ID для продукта, чтобы сопоставить его с продуктом в этом сторе. Затем нажмите Save.
store-product-id.webp

Шаг 3. Синхронизируйте транзакции через API

После завершения покупки в кастомном сторе нужно синхронизировать её с Adapty через серверный API.

Этот вызов API:

  • Запишет транзакцию в Adapty
  • Предоставит пользователю соответствующий уровень доступа
  • Запустит настроенные вами интеграции и вебхуки
  • Отобразит транзакцию в вашей аналитике

Полный справочник метода — здесь.

curl --request POST \
  --url https://api.adapty.io/api/v2/server-side-api/purchase/set/transaction/ \
  --header 'Accept: application/json' \
  --header 'Authorization: Api-Key YOUR_SECRET_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'adapty-customer-user-id: YOUR_CUSTOMER_USER_ID' \
  --data '{
  "purchase_type": "PRODUCT_PERIOD",
  "store": "YOUR_CUSTOM_STORE",
  "environment": "production",
  "store_product_id": "YOUR_STORE_PRODUCT_ID",
  "store_transaction_id": "STORE_TRANSACTION_ID",
  "store_original_transaction_id": "ORIGINAL_TRANSACTION_ID",
  "price": {
    "country": "COUNTRY_CODE",
    "currency": "CURRENCY_CODE",
    "value": "YOUR_PRICE"
  },
  "purchased_at": "2024-01-15T10:30:00Z"
}'

Важные параметры:

  • store: ID вашего кастомного стора из шага 2
  • store_product_id: Store product ID из шага 2
  • store_transaction_id: уникальный идентификатор транзакции
  • purchased_at: временная метка в формате ISO 8601, когда была совершена покупка
  • price: сумма, уплаченная пользователем

Шаг 4. Проверьте доступ в приложении

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

Когда пользователь откроет мобильное приложение, загрузите его профиль, чтобы проверить статус подписки и открыть доступ к премиум-функциям.