Adapty и RevenueCat
Вы настроите так, чтобы оплата на веб-странице открывала доступ в Adapty или RevenueCat — там, где его уже спрашивает ваше приложение.
Покупатель платит у нас, в браузере, а оплату в подписочную платформу переносим мы: выдаём доступ его профилю и ведём срок. От вас — ключи платформы и один раз пара «наш идентификатор покупателя ↔ профиль в платформе».
Перед началом
- Тариф Pro или Business и роль владельца или администратора проекта. Только они вносят ключи; если кабинета у вас нет, попросите владельца проекта позвать вас администратором — «Проект и команда».
- Из кабинета платформы: секретный ключ и название того, что открывать. В Adapty это уровень доступа, в RevenueCat — право; суть одна.
- Ключ доступа Subster — только если будете привязывать профиль с вашего сервера: «Аутентификация».
Шаг 1. Внесите ключи платформы
Откройте Настройки проекта → Подключение приложения → Основное, ветка «Куда доставлять доступ». В поле «Какой сервис у вас подключён» выберите платформу и заполните поля. Кнопки сохранения у ветки нет: каждое поле сохраняется, когда вы из него выходите.
| Поле | Что вписать |
|---|---|
| Секретный ключ Adapty, iOS и Android | серверный ключ secret_live_…. Он свой у каждого приложения Adapty: iOS и Android заведены отдельными приложениями — заполните оба поля, одним — хватит одного |
| Название уровня доступа в Adapty | уровень (access level) так, как он назван в кабинете Adapty |
| Секретный ключ RevenueCat | секретный ключ API sk_… |
| Название права в RevenueCat | идентификатор права (entitlement) из кабинета RevenueCat |
Без названия уровня или права ключ ничего не выдаст, а кабинет об этом промолчит — заполняйте оба поля.
Название уровня или права одно на проект: любая оплаченная цена открывает именно его.
Секретный ключ платформы вписывается сюда, в кабинет. Наш ключ доступа — тоже вида sk_…, но он идёт в заголовок ваших запросов к нам; не путайте их.
Ветки не видно — в разделе выбран другой путь. Нажмите «Показать остальные настройки» внизу или смените путь на «Подписки живут в стороннем сервисе».
Тестовые оплаты
Оплата тестовой картой уходит в платформу только по ключам песочницы: раскрытие «Ключи песочницы — необязательно» в той же ветке. Это секретные ключи тестовых приложений платформы — поля подсказывают вид secret_test_… у Adapty и sk_test_… у RevenueCat.
Без них тестовая покупка в платформу не попадёт вовсе — это не поломка привязки. Боевые покупки идут по боевым ключам, название уровня у обеих пар общее.
Шаг 2. Свяжите покупателя с профилем
Доступ мы выдаём профилю в вашей платформе, поэтому нам нужна пара: наш идентификатор покупателя (guid; откуда он у приложения — «Как мы узнаём покупателя») и идентификатор профиля у платформы. Идентификатор профиля — латиница, цифры и знаки без пробелов, до 255 символов.
| Если у вас | Как привязать |
|---|---|
| приложение само открывает квиз или экран с ценами, своего сервера нет | параметром в адресе страницы |
| есть свой сервер | запросом с сервера — надёжнее: запись подтверждена ключом |
| покупатель платит на сайте раньше, чем ставит приложение | запросом с сервера, когда приложение узнало идентификатор покупателя |
Параметром в адресе страницы
Откройте из приложения страницу воронки, дописав к адресу идентификатор профиля. Можно оба сразу:
https://<адрес воронки>?adapty_profile_id=<profileId из Adapty>
https://<адрес воронки>?revenuecat_profile_id=<appUserID из RevenueCat>
Идентификатор берите из библиотеки платформы до открытия страницы. Остальное сделает страница: свяжет профиль с тем покупателем, на которого ляжет оплата. Наш идентификатор вашему коду знать не придётся.
Открываете страницу нашей библиотекой — передайте идентификатор параметром adaptyProfileId или revenuecatProfileId метода открытия (openWebPaywall, openWebPaywallEmbedded, openQuizEmbedded; есть в нашей библиотеке с версии 0.5.0, «SDK»): в адрес она допишет его сама.
Ответа страница не отдаёт. Какой профиль мы сохранили, покажет запрос GET /s2s/v1/identity/link-profile?guid=<идентификатор> с ключом — им же проверьте привязку до первого клиента; ответ разобран в «Диагностике».
Запросом с вашего сервера
curl -X POST "https://api.subster.ai/s2s/v1/identity/link-profile" \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{ "guid": "abc123def456", "adaptyProfileId": "…" }'
Ответ — { "success": true }. Для RevenueCat поле называется revenuecatProfileId; нужно хотя бы одно из двух. Ключу нужно право identity:write — у ключа, выпущенного по умолчанию, оно есть (таблица прав). Отправляйте запрос ключом того проекта, в котором покупатель платит.
Берите тот идентификатор, на который ляжет оплата: заведите покупателя заранее или дождитесь, пока приложение его узнает, — оба пути в «Как мы узнаём покупателя». Незнакомый идентификатор сервер не отвергает: привязка запишется, но доступ по ней никуда не поедет.
Привязка может прийти и после оплаты. В момент записи мы сами выдадим профилю доступ по уже оплаченным и ещё действующим покупкам.
| Ответ | Когда приходит |
|---|---|
400 | нет ни одного идентификатора профиля; в нём пробел, кириллица или больше 255 символов; идентификатор покупателя короче 8 или длиннее 64 символов |
403 | у ключа нет права identity:write |
Что появится в платформе
| Adapty | RevenueCat | |
|---|---|---|
| подписка | уровень доступа до конца оплаченного периода, срок сдвигается с каждым продлением | промо-выдача права (promotional) до той же даты |
| разовая покупка | уровень без срока | право на 100 лет: бессрочной промо-выдачи у RevenueCat нет |
| возврат денег, проигранный спор или другой отзыв доступа у нас | уровень снимается | промо-выдача снимается |
Правило записи привязки
Адрес страницы может подсмотреть посторонний, поэтому переписать через него привязку нельзя:
- через адрес страницы привязка записывается, только пока за покупателем не сохранён ни один профиль; сохранённое значение адрес не меняет никогда;
- повтор с тем же значением проходит всегда — открывать страницу с параметром можно сколько угодно раз;
- заменить сохранённый профиль может только запрос с вашего сервера: он пишет поверх без условий.
Кто прислал первую запись, адрес страницы не проверяет — при своём сервере привязывайте с него.
Если подключены обе платформы
Передавайте оба идентификатора при каждом открытии страницы. Если один профиль уже сохранён, второй допишется через адрес, только когда вместе с ним придёт и верный первый: так мы отличаем ваше приложение от постороннего. Не входите в RevenueCat нашим идентификатором покупателя: такое значение доказательством не считается, и второй профиль допишет только ваш сервер.
После переустановки приложения
Платформа может выдать переустановившему приложение человеку новый анонимный профиль. Доступ остаётся на старом, а новый профиль в адресе страницы привязку не перепишет — по правилу выше. Выберите одно:
- входите в платформу своим постоянным идентификатором пользователя — вызовом входа в её библиотеке:
Adapty.identifyу Adapty,logInу RevenueCat. Профиль останется прежним, и доступ вместе с ним; - перепишите привязку запросом с вашего сервера — доступ по действующим покупкам мы выдадим новому профилю сами.
Дальше
- Как мы узнаём покупателя — где сервер берёт идентификатор покупателя, если оплата прошла до установки приложения.
- Диагностика — покупатель заплатил, а доступа в платформе нет: как посмотреть сохранённую привязку.
- Аутентификация — ключ доступа Subster для запроса с вашего сервера.