Реализация возобновляемых подписок — непростая задача, особенно если вы раньше не имели дела с API сторонних платежных процессоров, таких как StoreKit, Google Billing Library, Stripe. И она становится намного сложнее, когда вам нужно поддерживать несколько платформ одновременно. Вы обнаружите, что управление кросс-платформенными подписками является сложной задачей, поскольку вам необходимо решить проблемы технической интеграции, учесть политики и требования различных платформ, найти правильный подход к управлению статусами подписки (отмены, обновления, понижения и т.д.) и аналитикой.
В то же время, кросс-платформенное управление подпиской обеспечивает вашим пользователям лучший пользовательский опыт на любом устройстве в любом месте, а также позволяет снизить комиссионные сборы платформ (15-30% для магазинов приложений и 2-3% для Stripe — просто почувствуйте разницу).
В нашей предыдущей статье мы рассказали о предоставлении доступа в Интернете после совершения покупки на платформах iOS и Android. Теперь давайте углубимся в веб-часть и рассмотрим, как настроить платежи Stripe и предоставить пользователям премиум-доступ в приложениях для iOS и Android.
- Подключение Stripe к Qonversion
- Настройка продукта и разрешения Stripe
- Отправка данных о покупках Stripe в Qonversion
- 1. Методы API
- 1.1 Создание пользователя
- 1.2 Идентификация пользователя
- 1.3 Отправка покупок
- 1.4 Получение прав доступа
- 2. Web SDK
- 2.1 Запуск Qonversion Web SDK
- 2.2 Идентификация пользователя с помощью Qonversion Web SDK
- 2.3 Отправка покупки
- 2.4 Получение прав доступа
- Получение статуса подписки и разблокировка премиум-доступа в мобильных приложениях
- Заключение
Подключение Stripe к Qonversion
Первым шагом будет подключение Qonversion к вашей учетной записи Stripe. Перейдите в настройки проекта Qonversion. Выберите Stripe и включите тумблер Stripe.
В результате вы попадете на страницу входа в Stripe. Нажмите кнопку Подключиться, если у вас есть существующая учетная запись Stripe, или создайте новую, если это необходимо. Если ваш аккаунт Stripe еще не активирован, вам необходимо активировать его (добавить данные о бизнесе, банковскую информацию и т.д.).
Настройка продукта и разрешения Stripe
Предположим, что у вас уже есть продукт Qonversion, содержащий идентификаторы магазинов продуктов Apple и Google. Если вы хотите продавать аналогичный продукт с помощью Stripe, обновите существующий продукт в Qonversion с помощью идентификатора продукта Stripe.
Идентификатор продукта Stripe можно найти на вкладке Продукты в Stripe Dashboard. Просто выберите продукт и скопируйте его ID, показанный в правом верхнем углу страницы.
Убедитесь, что ваш продукт Qonversion связан с Permission, который указывает на премиум-статус пользователя.
Если вы хотите продавать подписки только в интернете, вы можете просто оставить пустыми поля Apple Store и Google Play Product ID в деталях продукта Qonversion.
Отправка данных о покупках Stripe в Qonversion
Вы можете напрямую вызывать методы API или использовать наш Web SDK в вашем веб-приложении для отправки данных о подписках Stripe в Qonversion. Выберите наиболее подходящий для вас метод. Если вы никогда раньше не работали с конечными точками API, мы рекомендуем использовать Qonversion Web SDK для отправки данных о покупках Stripe.
1. Методы API
Qonversion предоставляет высокопроизводительный REST API, который позволяет вам создавать и идентифицировать пользователей, отправлять данные о покупках, получать права пользователей и многое другое. В этом разделе статьи рассматриваются методы, которые необходимо использовать для получения кроссплатформенного доступа на основе данных о покупках Stripe.
1.1 Создание пользователя
Прежде чем начать отправлять данные о покупках Stripe, вам необходимо создать пользователя. Пользователь — это кроссплатформенная сущность с объектом User со следующей конечной точкой:
POST https://api.qonversion.io/v3/users/:user_id
User_id
— это идентификатор пользователя Qonversion, который будет зарегистрирован для этого пользователя. В качестве user_id
в данном примере будем использовать следующий идентификатор aa47b6fa
.
1.2 Идентификация пользователя
User Identity позволяет кросс-платформенную идентификацию пользователя и управление доступом. Identity управляет доступом пользователей на основе платежей на различных платформах. Более подробную информацию о Identity вы можете найти в нашей документации.
Идентифицируйте пользователя с помощью метода Identity:
POST https://api.qonversion.io/v3/identities/:identity_id
Для identity_id
всегда используйте уникальные значения ID. В противном случае пользователь может быть сопоставлен с премиум-статусом другого пользователя. В качестве identity_id
можно использовать идентификатор пользователя из вашей внутренней системы. В нашем примере мы будем использовать stripe_aa47b6fa
в качестве identity_id
.
1.3 Отправка покупок
Здесь мы переходим к самой интересной части. Теперь все готово для отправки данных о покупках пользователя в Qonversion. Для этого используйте конечную точку purchases:
POST https://api.qonversion.io/v3/users/:user_id/purchases
Ниже приведен пример с параметрами, которые вы должны передать в тело метода:
{
"currency": "USD",
"price": "100",
"purchased": 1659428809,
"stripe_store_data": {
"subscription_id": "sub_1LSGVgL9K6ILzohYq5GCbktn",
"product_id": "prod_MAbVQQaljmF6gm"
}
}
Чтобы предоставить пользователям действительные права, product_id
должен быть таким же, как идентификатор продукта Stripe, который вы указали в предыдущем шаге для годового продукта Qonversion. Subscription_id
— это идентификатор для объекта Stripe Subscription. Описание остальных параметров можно найти в нашем руководстве по отправке данных о покупках Stripe в Qonversion.
Если покупка была создана успешно, ответ будет следующим:
{
"currency": "USD",
"price": "100",
"purchased": 1659008000,
"stripe_store_data": {
"product_id": "prod_MAbVQQaljmF6gm",
"subscription_id": "sub_1LSGVgL9K6ILzohYq5GCbktn"
},
"user_id": "aa47b6fa"
}
Теперь вы можете проверить вкладку «Клиенты» в своем аккаунте Qonversion в поисках своего клиента. Поиск доступен с помощью Qonversion user_id(aa47b6fa)
или identity_id(stripe_aa47b6fa)
:
А вот детали на уровне клиента, которые вы можете быстро увидеть на приборной панели Qonversion, включая цену и дату купленного продукта:
После успешной отправки покупки инфраструктура Qonversion обрабатывает все изменения подписки, такие как продление, преобразование пробной версии, возврат и т.д. Это влияет на права пользователей и отражается в наших аналитических панелях.
1.4 Получение прав доступа
На данном этапе вы должны иметь возможность получить активное разрешение, которое было настроено в предыдущем шаге (Настройка продукта Stripe и разрешения). В нашем примере это разрешение с премиум-идентификатором. Вызовите следующий метод для проверки прав доступа:
GET https://api.qonversion.io/v3/users/:user_id/entitlements
Ниже показан пример с ответом о правах:
{
"data": [
{
"active": true,
"expires": 1690965033,
"id": "premium",
"product": {
"product_id": "annual",
"subscription": {
"current_period_type": "normal",
"renew_state": "will_renew"
}
},
"started": 1659429033
}
]
}
2. Web SDK
Web SDK — это TypeScript браузер-клиент SDK, который взаимодействует с API Qonversion под капотом. С помощью Web SDK Qonversion вы можете легко идентифицировать пользователей, отправлять покупки, настраивать свойства пользователя, проверять состояние прав, но все еще необходимо получать состояние прав на стороне бэкенда. Вы можете считать SDK более гибким и удобным способом передачи данных в Qonversion из вашего веб-приложения.
2.1 Запуск Qonversion Web SDK
Подробную информацию о том, как запустить SDK, вы можете найти в документации здесь. Вам необходимо вызвать метод Qonversion.initialize
и передать QonversionConfigBuilder
в качестве параметра:
const qonversionInstance = Qonversion.initialize(config);
2.2 Идентификация пользователя с помощью Qonversion Web SDK
User Identity позволяет кросс-платформенную идентификацию пользователя и управление доступом. Identity управляет доступом пользователей на основе платежей на различных платформах. Более подробную информацию о Identity вы можете найти в нашей документации здесь.
Идентифицируйте пользователя с помощью метода identify
:
await qonversionInstance.identify('identity_id');
Всегда используйте уникальные значения ID для identity_id
. В противном случае пользователь может быть сопоставлен с премиум-статусом другого пользователя. В качестве identity_id
можно использовать внутренний идентификатор пользователя из вашей системы. В этом примере мы будем использовать stripe_aa47b6fa
в качестве identity_id
.
2.3 Отправка покупки
Соберите данные о покупке на полосе и вызовите метод sendStripePurchase
:
сonst stripePurchaseData: PurchaseCoreData & StripeStoreData = {
currency: 'USD',
price: '100',
productId: 'prod_MAbVQQaljmF6gm',
purchased: 1659008486,
subscriptionId: 'sub_1LSGVgL9K6ILzohYq5GCbktn'
};
const purchase = await qonversionInstance.sendStripePurchase(stripePurchaseData);
Чтобы предоставить пользователям действительные права, product_id
должен совпадать с Stripe Product Identifier из Qonversion Product annual
(см. предыдущий шаг Setup Stripe Product and Permission). Subscription_id
— это идентификатор объекта Stripe Subscription. Описание остальных параметров можно найти в нашем руководстве Отправка покупок Stripe в Qonversion.
Если покупка создана успешно, ответ будет следующим:
{
currency: 'USD',
price: '100',
purchased: 1659008486,
stripeStoreData: {
subscriptionId: 'sub_1LSGVgL9K6ILzohYq5GCbktn',
productId: 'prod_MAbVQQaljmF6gm'
}
}
Вы можете проверить вкладку Customers в вашем аккаунте Qonversion, чтобы увидеть детали этого пользователя. Вы можете использовать identity_id(stripe_aa47b6fa)
, чтобы найти клиента:
Вы можете увидеть детали на уровне пользователя, включая цену купленного продукта и дату покупки:
После успешной отправки покупки, инфраструктура Qonversion обрабатывает все состояния подписки, такие как продление, конвертация пробной версии, возврат средств и т.д. Это влияет на права пользователей и также отображается в аналитике.
2.4 Получение прав доступа
На данном этапе вы должны получить активное разрешение, которое было настроено на предыдущем шаге (Настройка продукта Stripe и разрешения). В нашем примере это разрешение с premium ID
. Вызовите метод getEntitlements
:
const entitlements = await qonversionInstance.getEntitlements();
Получение статуса подписки и разблокировка премиум-доступа в мобильных приложениях
Последний шаг — получение статуса подписки в мобильном приложении для iOS или Android для обработки доступа пользователей. Запустите приложение и вызовите метод identify
:
iOS
Qonversion.identify("identity_id")
Android
Qonversion.identify("identity_id")
Identity ID
должен быть тем же самым, который вы использовали при идентификации пользователя в Интернете.
Затем вызовите метод checkPermissions
:
iOS
Qonversion.checkPermissions { (permissions, error) in
if let error = error {
// handle error
return
}
if let premium: Qonversion.Permission = permissions["premium"], premium.isActive {
// handle the permission
}
}
Android
Qonversion.checkPermissions(object: QonversionPermissionsCallback {
override fun onSuccess(permissions: Map<String, QPermission>) {
val premiumPermission = permissions["premium"]
if (premiumPermission != null && premiumPermission.isActive()) {
// handle the permission
}
}
override fun onError(error: QonversionError) {
// handle error here
}
})
Как вы можете видеть здесь, пользователь мобильного приложения имеет права (уровень доступа), основанные на его подписке на stripe.
Android / iOS
Заключение
Эта статья демонстрирует, как управлять доступом пользователей в мобильных приложениях на основе их веб-подписок. Реализация является быстрой и простой.
После внедрения кросс-платформенного управления подпиской вы сможете легко отслеживать производительность каждой платформы в аналитических панелях Qonversion. Более того, Qonversion предлагает набор инструментов для использования данных о подписке, включая интеграции, атрибуцию Apple Search Ads и push-уведомления.