Я с трудом нахожусь в глубоком обсуждении правильного способа реализации отказоустойчивого протокола для проверки подписки на разных платформах с помощью IAP iTunes. Пользователь с выбранным адресом электронной почты для подписки должен иметь возможность войти в любую из наших служб после установки iTunes.
Пока протокол реализован следующим образом:
- Пользователь инициирует покупку на устройстве iOS
- Устройство напрямую связывается с Apple, и на устройство возвращается квитанция
- Устройство отправляет квитанцию в паре с подписанным письмом на наш сервер
- Сервер может затем подтвердить подписку и обновить статус подписки, используя квитанцию
Этот протокол может показаться хорошим на первый взгляд, но следующий сценарий неприятен.
Сценарий:
Устройство успешно совершает покупку, но по какой-то причине не может сообщить о получении и о подписанной почте на наш сервер (возможно, из-за плохого интернет-соединения или сбоя сервера). Теперь пользователь платит за подписку, но у нас нет инструментов для проверки этого.
Например, это может произойти, если пользователь совершает покупку в приложении для iPhone, нажимает кнопку "Принять", и до получения квитанции пользователь закрывает приложение.
Кто-нибудь получил представление о правильном способе обработки этого сценария?