Razorpay
Razorpay — платёжный шлюз, распространённый в Индии. Через него платят картами, из интернет-банка, по UPI и электронными кошельками.
Публикация в вебе с включённым Razorpay сейчас закрыта из-за регуляторных ограничений.
- Пройдено подключение Firebase.
- Включена аутентификация Firebase.
- Проект Firebase переведён на тариф Blaze — платёж обрабатывается облачной функцией.
Как подключить
Четыре шага:
1. Настройка Razorpay
Нужно завести аккаунт, включить тестовый режим, получить ключи и добавить их в проект.
Сначала всегда проверяйте оплату в тестовом режиме — ниже речь именно о тестовых ключах.
-
Заведите аккаунт Razorpay или войдите в существующий.
-
Включите Test Mode — в нём платежи проходят без реальных денег.

-
В меню слева выберите Account & Settings, затем в секции Website and app settings — API keys.
-
Если Razorpay попросит адрес сайта, а приложение ещё не опубликовано, временно выложите его на поддомен через публикацию в вебе. Потом адрес можно поменять и во FlutterFlow, и в Razorpay.

-
Нажмите Generate Test Key и скопируйте Key Id и Key Secret. Чтобы выпустить новые, нажмите Regenerate Test Key и выберите, что делать со старым ключом.

- Во FlutterFlow откройте Settings and Integrations > In App Purchases & Subscriptions > Razorpay и включите Enable Razorpay Payments.
- В секцию Test Credentials вставьте Key ID и Key Secret.
- Заполните Business Name.
- Нажмите Deploy.

2. Действие Razorpay Payment
-
Выберите виджет — например, кнопку оформления заказа.
-
В панели свойств справа откройте Actions, нажмите Open и затем + Add Action.
-
Найдите и выберите Razorpay Payment (раздел Integrations).
-
Задайте Amount — числом или из переменной. Сумма указывается в минимальных единицах валюты:
- $24.99 передаётся как 2499, ₹120.00 — как 12000. Дробное значение округлится автоматически.
- Обычно сумма приходит из переменной; привести её к нужному виду поможет встроенное выражение:
amount.toStringAsFixed(2).replaceAll(".", "");
-
Заполните Currency Code: INR, USD, EUR, BRL. Неверный код — платёж не пройдёт. Полный список валют.

- По желанию заполняются Receipt Number, Description, User Name, User Email, User Contact и Timeout — сколько секунд окно оплаты остаётся активным (по умолчанию 180).
- Оформление окна оплаты настраивается свойствами Dialog Color, Barrier Color, Text Color, Processing Color, Success Color, Error Color и другими.

- В Action Output Variable Name укажите переменную, куда попадёт идентификатор платежа при успешной оплате.
- Дальше нужно проверить, прошёл ли платёж. Нажмите «+» под предыдущим действием и выберите Add Conditional — это условное действие.
- В блоке Set Condition for Action:
- Выберите UNSET > Condition > Single Condition.
- В First Value укажите переменную с идентификатором платежа.
- Оператор — Is Set and Not Empty.
- В ветке TRUE добавьте действия для успешной оплаты.
- В ветке FALSE — для неудачной.
Перед вызовом действия пользователь должен быть авторизован, иначе платёж завершится ошибкой. Как настроить вход — в разделе про аутентификацию.
3. Проверка
Платежи Razorpay проверяются в Run mode, Test mode, на эмуляторе и на реальном устройстве.
- Откройте Settings and Integrations > In App Purchases & Subscriptions > Razorpay.
- Убедитесь, что Is Production выключен.
- Проверьте Test Credentials.
- Запустите приложение в Test mode.
- Платите любым из тестовых способов Razorpay.
4. Переход на боевые ключи
- Пройдите KYC — заполните форму активации, без неё боевой API недоступен.
- Войдите в панель Razorpay и переключитесь в Live Mode.
- В меню слева выберите Account & Settings, затем в секции Website and app settings — API keys.
- Нажмите Generate Live Key и скопируйте Key Id и Key Secret.
- Во FlutterFlow откройте Settings and Integrations > In App Purchases & Subscriptions > Razorpay и включите Is Production.
- Вставьте ключи в секцию Production Credentials.
- Нажмите Deploy.
- Проверьте приложение ещё раз.