Синхронизация транзакций из кастомных сторов
Если вы продаёте подписки или встроенные покупки через кастомные сторы — например, 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 мог сопоставить транзакции из кастомного стора с вашими продуктами, нужно добавить продукты и настроить для них параметры кастомного стора.
- Перейдите в раздел Products через левое меню дашборда Adapty и нажмите Create product. Или нажмите на существующий продукт, чтобы отредактировать его.
- Убедитесь, что выбран уровень доступа, который нужно предоставить пользователям при покупке продукта.
- Нажмите + и выберите Add a custom store.
- Нажмите Create new custom store.
- Введите название стора (например, «Amazon Appstore», «Microsoft Store» или «Web Store») и его ID. Нажмите Create custom store.
- Нажмите Save changes, чтобы привязать продукт к кастомному стору.
- Введите Store product ID для продукта, чтобы сопоставить его с продуктом в этом сторе. Затем нажмите Save.
Шаг 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. Проверьте доступ в приложении
После синхронизации транзакции профиль пользователя автоматически обновится с новым уровнем доступа.
Когда пользователь откроет мобильное приложение, загрузите его профиль, чтобы проверить статус подписки и открыть доступ к премиум-функциям.