Вам необходим кросс-платформенный идентификатор для каждого пользователя и привязка транзакций (независимо от источника) к этому идентификатору пользователя. Для каждого типа квитанции (Apple, Google и т. Д.) Вам необходимо убедиться, что вы обновляете их соответствующим образом для обеспечения точности статуса подписки.
Поскольку пользователи смогут отменять только с того устройства, на котором они зарегистрировались (т.е. не могут отменить подписку Apple на Android), вы должны указать источник регистрации и направить их туда для управления своей подпиской.
Кроме того, если вы включите кнопку «Восстановить покупки», пользователи смогут обмениваться подписками, поскольку восстановление смотрит на любую квитанцию на устройстве, а не на то, кто из ваших вошедших в нее пользователей приобрел ее. Вместо этого используйте ваш сервер в качестве источника правды для восстановления.
В качестве альтернативы, если вы не хотите создавать и управлять этим самостоятельно, вы можете посмотреть на управляемое решение, такое как RevenueCat , которое обрабатывает все это из коробки. ( Отказ от ответственности: я работаю там )