RevenueCat REST API не работает с публичным API ключом Stripe

Вопрос или проблема

RevenueCat REST API не работает с публичным API ключом Stripe

В моем проекте на Flutter мне удалось добавить платный доступ благодаря RevenueCat для Android, iOS и macOS.

Теперь я хочу достичь того же для Windows и Linux. К сожалению, пакет purchases_flutter недоступен для Windows или Linux.

Поэтому я выбрал создать простую ссылку для платежа с помощью Stripe и подключить Stripe к RevenueCat. Тогда я смогу взаимодействовать с RevenueCat из версий моего приложения для Windows и Linux, используя REST API RevenueCat.

Вот задачи, которые мне нужно решить:

  • перечислить мои предложения
  • проверить, купил ли пользователь мой продукт с одноразовым платежом или нет
  • восстановить покупку одноразового платежа

И вот моя проблема:

  • если я попытаюсь выполнить перечисленные выше задачи, используя только мой публичный API-ключ Stripe (например, с помощью Postman), следуя документации, я получаю ошибку о том, что мой ключ недействителен.
  • если я делаю то же самое, но с секретным ключом, который я создал с правильными авторизациями, это работает.

И это действительно раздражает меня, поскольку я не хочу иметь дело с бэкендом только для хранения приватного ключа. Кроме того, я не понимаю, почему мне нужно работать с приватным ключом в этом случае, когда для работы пакета purchases_flutter нужен только публичный API-ключ.

Есть ли возможность выполнить вышеуказанные задачи, используя только публичный API-ключ Stripe? Или безопасно использовать секретный ключ, который будет полностью посвящён вышеуказанным задачам с минимальными авторизациями, которые я могу хранить в своем приложении?

Ответ или решение

Для успешной интеграции RevenueCat с Stripe в вашем приложении на Flutter для Windows и Linux, действительно потребуются некоторые нюансы, касающиеся работы с API и использованием ключей.

Почему не работает публичный ключ

Проблема, с которой вы столкнулись, связана с тем, что публичный API ключ Stripe предназначен исключительно для клиентских операций, таких как создание платежных форм и сбор данных о картах. В отличие от него, RevenueCat API требует аутентификации с помощью личного (секретного) ключа, поскольку это серверные вызовы, которые требуют защищенности для управления пользовательскими данными и подписками.

Аутентификация RevenueCat

RevenueCat использует секретные ключи API для аутентификации при выполнении операций, таких как:

  • Список предложений (offerings)
  • Проверка покупок
  • Восстановление покупок

Ваш случай требует использования секретного ключа RevenueCat для выполнения этих операций. Использование публичного ключа для доступа к сервисам RevenueCat не поддерживается.

Как безопасно хранить секретный ключ

Если вы не хотите разрабатывать бекенд-решение для хранения секретного ключа, вы можете принимать некоторые меры предосторожности при хранении и использовании секретного ключа в приложении:

  1. Простая оболочка: Секретный ключ можно использовать на клиенте, если хранить его за пределами кода, например, в файле конфигурации, который не будет включен в репозиторий.
  2. Шифрование: Рассмотрите возможность шифрования секретного ключа и его расшифровки в коде при использовании.
  3. Привилегии и доступ: Создайте специализированный секретный ключ с минимально необходимыми правами, ограничив доступ только к нужным вам операциям.

Рекомендации по архитектуре

  1. Мобильное и настольное приложение: Даже если ваш проект сейчас не требует серверной части, рекомендуется, по мере роста проекта, рассмотреть разработку небольшого бекенда, чтобы управлять аутентификацией и доступом более эффективно.
  2. Изоляция функциональности: Подумайте о том, чтобы изолировать функциональность, связанную с RevenueCat, создавая API-класс, который будет делать запросы к RevenueCat и обрабатывать ответы, тем самым повышая уровень абстракции и безопасность кода.

Заключение

На данный момент для вашего сценария работы с RevenueCat через Stripe вам необходимо использовать секретный ключ. Нет возможности обходиться только публичным ключом для выполнения необходимых операций в RevenueCat. Если вы будете хранить секретный ключ, делайте это с умом и предусмотрительно, минимизируя риски. По мере возможности, рассмотрите возможность разработки серверной части для более безопасного управления аутентификацией.

Оцените материал
Добавить комментарий

Капча загружается...