Передача идентификатора пользователя между приложением iOS и серверной частью Rails для покупок в приложении

У меня есть приложение Rails с поддержкой и приложение TurboTurbo Native для iOS.

В веб-приложении вы можете приобретать подписки через Stripe, поэтому мне нужно предоставить пользователям приложения iOS возможность совершать покупки в приложении.

На данный момент у меня есть следующие настройки:

  • Когда в собственном приложении пользователь нажимает кнопку «Купить», на серверы Apple отправляется правильный запрос на оплату и появляется интерфейс «Купить».

  • Уведомления сервера от Apple настроены таким образом, что конечная точка в моем приложении Rails получает пинг, когда подписка была приобретена, продлена или отменена с данными квитанции. Прямо сейчас я просто печатаю ответ JSON на свои журналы.

Как мне лучше всего связать уникальный идентификатор пользователя из моего веб-приложения с покупкой Apple?

В настоящий момент происходит то, что мой пользователь Sandbox iCloud отмечен как подписанный, но эта информация не связана с пользователем, вошедшим в приложение, поэтому у него нет доступа к функциям платного уровня.

Это идеальный рабочий процесс:

  • Пользователь нажимает «Купить» в приложении и подтверждает оплату.

  • Когда я получаю успешное уведомление сервера от Apple, я могу отметить этого пользователя как платного и создать для него объект подписки, сохраняя исходный идентификатор транзакции и другую соответствующую информацию о подписке.

  • После совершения покупки пользователь перенаправляется на другую страницу / представление в приложении.

  • Когда Apple отправляет дополнительные уведомления сервера, я могу сопоставить исходный идентификатор транзакции с подпиской в ​​моей базе данных приложения Rails и при необходимости обновить доступ / подписку пользователя.

Главное - связать платеж с пользователем в моем бэкэнде приложения Rails.

Кто-нибудь успешно наладил такой рабочий процесс?

Мне бы хотелось получить советы о том, как к этому подойти.

Большое спасибо!

1 ответ

Это рабочий процесс, как я бы это сделал

  1. Авторизованный пользователь совершает покупку в приложении
  2. Квитанция о покупке отправляется по запросу в бэкэнд
  3. Серверная часть проверяет эту квитанцию ​​и сохраняет информацию в базе данных (например, user_id, transaction_id и т. Д.)
  4. Вы можете прослушивать уведомления сервера AppStore и получать информацию о возмещении, отмене, обновлениях .... Для каждого события вы можете выполнить поиск в своей базе данных по идентификатору транзакции, чтобы получить соответствующего пользователя.
Другие вопросы по тегам