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

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

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

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

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

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

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

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

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

Этот 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: ID продукта в сторе из шага 2
  • store_transaction_id: Уникальный идентификатор транзакции
  • purchased_at: Временная метка в формате ISO 8601, когда была совершена покупка
  • price: Сумма, уплаченная пользователем

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

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

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