Я создаю приложение Flutter, которое использует Firebase в качестве бэкэнда, все работает с облачными функциями. Я пытаюсь реализовать покупки в приложении. Я хочу, чтобы приложение работало так:
Пользователь покупает подписку -> Пользователь в Firestore становится Премиум-пользователем
Когда какое-либо событие происходит с его подпиской, например, когда она подходит к концу, оно должно обновлять статус пользователя в Firestore.
Я много искал такие решения, как Adapty, но я не совсем понимаю, как реализовать вызов на стороне сервера моей облачной функции, которая будет обновлять пользователя в Firestore в зависимости от состояния его подписки. Я вижу, что должен быть какой-то код на стороне клиента, который проверяет, подписан ли пользователь, но мне это совсем не нужно, я хочу, чтобы все делалось на стороне сервера, так что это безопасно. После того, как пользователь заплатит, сервер должен обрабатывать все обновления в Firestore, клиенту просто нужно получить данные о том, является ли пользователь премиальным в Firestore или нет.
Я думал, что вы могли бы сделать облачную функцию, которая заботится о выставлении счетов напрямую, но я не знаю, как я могу подключить покупки Flutter к облачной функции, не проходя через небезопасную клиентскую сторону.
Как мне это смоделировать? Вроде бы очень просто, но я не совсем понимаю, как реализовать такую простую систему подписки с помощью Firebase Cloud Functions. Я думаю, что все сводится к возможности реализовать какой-то автоматический вызов облачной функции, когда что-то происходит с пользовательской подпиской, но как я могу это сделать? Я открыт для любой технологии, реализующей такую модель выставления счетов, которая работает с облачными функциями Flutter и Firebase.





Чтобы реализовать вызов облачной функции на стороне сервера и обновить пользователя в Firestore с помощью облачных функций, вы можете обрабатывать события в Cloud Firestore без необходимости обновлять код клиента и вносить изменения в Cloud Firestore через интерфейс DocumentSnapshot . Подробную документацию вы можете найти здесь.
Также в соответствии с вашими требованиями вы можете проверить кодовую лабораторию.
Алекс, пожалуйста, дайте мне знать, была ли информация ниже полезной или вы ищете что-то еще.