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

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

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

Пока у меня настроено следующее:

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

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

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

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

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

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

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

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

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

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

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

Я хотел бы получить некоторые рекомендации о том, как подойти к нему.

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


person Noddy    schedule 04.06.2021    source источник


Ответы (1)


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

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