Слогер Создать блог
Разработка

Как интегрировать Razorpay Payment Gateway в React: пошаговый разбор

Разбираем, как устроен платежный флоу Razorpay, почему проверка подписи на бэкенде — единственное, что защищает от поддельных платежей, и как собрать интеграцию без боли.

Razorpay — один из самых популярных платежных шлюзов в Индии. Он принимает карты, UPI, интернет-банкинг и кошельки вроде Paytm и PhonePe, а мультивалютность позволяет работать с клиентами за пределами страны. Для React-разработчика это значит: можно добавить оплату в приложение, не поднимая собственный процессинг.

Но есть нюанс. Интеграция не сводится к красивой кнопке «Оплатить». Процесс состоит из двух частей: фронтенд открывает окно чекаута, а бэкенд создает заказ и проверяет подпись. Пропустить вторую часть — значит оставить дверь открытой для поддельных платежей.

Разберем по шагам.

Как устроен платежный флоу

Схема выглядит так:

  1. Пользователь нажимает кнопку оплаты.
  2. Фронтенд просит бэкенд создать заказ в Razorpay.
  3. Бэкенд отправляет запрос и возвращает order_id, сумму и валюту.
  4. Фронтенд открывает чекаут Razorpay с этими данными.
  5. После удачного платежа Razorpay возвращает payment_id, order_id и подпись.
  6. Фронтенд передает эти три значения на бэкенд.
  7. Бэкенд проверяет подпись через HMAC-SHA256.

Только после успешной проверки заказ можно помечать оплаченным в базе. Шаг 7 — не формальность, а главный защитный механизм.

Никогда не пропускай проверку подписи на бэкенде. Иначе любой может сэмулировать успешный ответ от Razorpay.

Почему без проверки подписи никуда

Фронтенд — это среда, которую контролирует пользователь. Можно открыть DevTools, подменить ответ или отправить фейковый payment_id. Поэтому полагаться только на ответ из чекаута нельзя.

Секретный ключ Razorpay хранится только на бэкенде. Бэкенд берет order_id и payment_id, склеивает их, хеширует через HMAC-SHA256 с секретом и сравнивает с подписью из запроса. Совпало — платеж настоящий. Не совпало — возвращаем ошибку и не обновляем базу.

Такая схема работает, только если секрет не попадает во фронтенд. Ни в код, ни в переменные окружения Vite, ни в localStorage.

Что нужно для интеграции

Аккаунт и ключи

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

Ключи находятся в разделе Account & Settings → API Keys. Их два:

  • Key ID — публичный, его можно передавать фронтенду (обычно лежит в .env рядом с Vite).
  • Key Secret — секретный, живет только на бэкенде. Например, в .env на сервере.

Если секрет просочится наружу — это уже проблема, потому что через него можно подделывать проверки.

Бэкенд: создание заказа и верификация

На бэкенде нужны два эндпоинта. Первый создает заказ через API Razorpay. Второй принимает payment_id, order_id и подпись, проверяет их и возвращает статус.

Обрати внимание на мелочь: сумму в заказе нужно передавать в меньших денежных единицах. Для индийских рупий это пайсы — проще говоря, умножь сумму на 100 и округли. Забыл про это — получишь заказ на сумму, которая отличается от ожидаемой.

В эндпоинте верификации создается HMAC-SHA256 из order_id и payment_id с использованием ключа. Если подпись совпадает — отдаем success. Если нет — отдаем ошибку.

Фронтенд: открыть чекаут

Сам чекаут запускается на клиенте. Ты получаешь с бэкенда order_id и параметры заказа, вызываешь JS-библиотеку Razorpay, и она показывает пользователю окно с выбором способа оплаты.

Ничего сложного в этом нет, главное — не пытаться инициировать платеж без бэкенда. Сервер должен знать о заказе до того, как откроется окно, иначе потом нечего проверять.

Кто за что отвечает

ЭтапГде происходитЗачем
Создание заказаБэкендЗафиксировать сумму, валюту и получить order_id
Открытие чекаутаФронтендПоказать пользователю способы оплаты
Проверка подписиБэкендУбедиться, что платеж настоящий
Обновление статусаБэкендОтметить заказ оплаченным только после верификации

Типичные ошибки

  • Кладете Key Secret в код фронтенда или в переменные окружения с префиксом VITE_. Это верный способ подарить ключ всем.
  • Не проверяете подпись. Если эндпоинт верификации не вызывается или возвращает успех без проверки — платежи можно подделывать.
  • Путаете рупии и пайсы. Цена 100 рублей? С точки зрения Razorpay это 10000 пайсов. Без умножения сумма уедет.
  • Используете live-ключи на этапе разработки. Тестовые платежи будут проходить как настоящие, а провайдер может списать деньги.
  • Доверяете сумме из фронтенда. Создавать заказ на основе данных, которые прислал клиент, — плохая идея. Лучше пересчитать цену на бэкенде.

Чек-лист перед запуском

  • Тестовый режим включен, используются test-ключи.
  • Key Secret нет во фронтенд-коде и в клиентских .env.
  • Сумма заказа переводится в меньшие единицы.
  • Эндпоинт /api/verify-payment реально вызывается и проверяет подпись.
  • База обновляется только после успешной верификации.

Razorpay закрывает практически всю рутину: прием карт, UPI, кошельков, обработку валют, отображение чекаута. Твоя задача — сделать так, чтобы бэкенд был единственным источником правды. Если соблюдать этот принцип, интеграция будет работать и через год, и без сюрпризов.

По материалам: dev. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (1)

Войдите, чтобы комментировать.

Shahin 12.09.2026 12:40 ▲ 0
Nice Post
Маркетинг

Как писать рассылки для клиентов на бесплатных инструментах: разбор рабочего процесса

Один ретейнер на $450 в месяц за восемь выпусков в год показал: услуга по написанию email-рассылок держится не на платных сервисах, а на голосе бренда и редакторской дисциплине. Разбираю стек, процесс, цены и типичные провалы.

Слогер 29.09.2026 ▲ 0
Карьера

Разбор: как устроен рынок Gmail-аккаунтов на продажу и почему покупка почти всегда убыточна

Свежие, PVA и aged-аккаунты продают за 1–5 долларов, обещая мгновенный старт и полную конфиденциальность. Разбираем, что скрывается за этими объявлениями, где тут риск и какие есть легальные способы получить нужное количество ящиков.

Слогер 29.09.2026 ▲ 1
Разработка

Почему «сколько кода я написал» — плохая метрика: как оценивать себя как программиста

Считать строки и гордиться тем, что всё написано из памяти, — привычка, которая мешает доводить проекты до конца. Разбираю, какие вопросы о своём коде стоит задавать вместо этого.

Слогер 29.09.2026 ▲ 0
Разработка

Как получать деньги через GitHub Sponsors: выплаты, налоги и частые ошибки

Sponsors не превратился в новую платёжную систему — изменилась обвязка вокруг выплат: налоги, фискальные хосты и биллинг. Разбираем, что нужно настроить до того, как профиль станет публичным.

Слогер 29.09.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Разработка

Электронный документооборот в Fluxs: как договор перестаёт теряться между кабинетами

Во вторник договор ушёл юристу. В четверг клиент спрашивает, когда подпишем. Юрист говорит, что давно отдал в бухгалтерию. Бухгалтерия ничего не получала. В пятницу вечером договор находится — в почте у финансового директора, который в отпуске. Никто не ленился. Просто у документа не было маршрута. Мы сделали в Fluxs модуль «Документооборот». Коротко, что в нём есть: — маршрут согласования рисуется схемой: параллельные ветки, условие «если сумма больше миллиона — к финдиректору»; — сроки в рабочих часах, напоминания, передача руководителю при просрочке; — подпись кодом из письма или КЭП через КриптоПро прямо в браузере; — клиент согласует договор по ссылке, без регистрации; — ознакомление с приказами без листа с подписями. И отдельно про безопасность: если кто-то поправит решение или подпись прямо в базе, это будет видно в карточке документа. Модуль бесплатный с тарифа «Бизнес». Как

Слогер 28.09.2026 ▲ 0
Карьера

Как зарабатывать на переводе и локализации без диплома: разбор воркфлоу на бесплатных инструментах

Процесс, который позволяет брать $340 за один заказ и превращать разовые сделки в ежемесячные ретейнеры — без дорогого софта и профильного образования.

Слогер 28.09.2026 ▲ 0
Образование

Как проверить старые соцсети перед визой и учёбой за рубежом: 6 категорий и порядок действий

Аккаунты — единственный пункт в списке документов, который нельзя восстановить задним числом. Разбираем, что искать в собственных постах и почему удаление поста — лишь первый шаг.

Слогер 28.09.2026 ▲ 0
Карьера

Чистка цифрового следа перед собеседованием: график на 6 недель и что уже поздно начинать

Рекрутеры чаще гуглят кандидата не на этапе отклика, а когда он уже в шортлисте. Отсюда и запас времени, и жёсткий дедлайн — разбираем обратный отсчёт по неделям.

Слогер 28.09.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Образование

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

Пять приёмов из практики преподавания и self-learning в кибербезопасности: карта вместо первой страницы, worked examples, извлечение из памяти, интервалы и цикл «сломал — починил — объяснил».

Слогер 28.09.2026 ▲ 0
Карьера

Как подготовиться к собеседованию по кодингу: 7 книг и порядок, в котором их читать

Провал на интервью редко связан с тем, что вы не умеете программировать. Чаще не хватает системы, словаря для разговора о дизайне и практики объяснять решение вслух — и всё это можно закрыть книгами.

Слогер 27.09.2026 ▲ 0
Карьера

Как откликаться на вакансии без диплома: разбор фильтра, который отсеивает за две минуты

Junior-вакансия с Python, SQL и автоматизацией, три документа от кандидата — и отказ через 120 секунд после отправки. Разбираем, что здесь происходит и как проходить такие воронки, если диплома нет.

Слогер 27.09.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru