Платежная система

Подключение оплаты через Систему быстрых платежей (СБП) от Т-Банка для InSales. Оплата по QR-коду напрямую из карточки заказа, серверная обработка платежей, контроль жизни ссылок.

Краткая информация

  • Платформа InSales
  • Платежная система СБП Т-Банк
  • Метод оплаты QR-код
  • Архитектура Backend сервис

Задача

Подключить оплату через СБП (Систему быстрых платежей) от Т-Банка с возможностью оплаты по QR-коду прямо из карточки заказа.

Требование: одна кнопка "Оплатить через СБП". Другие способы оплаты не показывать.

Проблема безопасности

InSales не позволяет реализовать полноценную передачу ключей API и обработку статусов напрямую в браузере. Это сделано по соображениям безопасности.

Если передавать TerminalKey и Password в коде страницы, любой человек сможет их увидеть в исходном коде и использовать для своих целей.

Почему нельзя в браузере

Если API-ключи окажутся в коде страницы, злоумышленник сможет создавать платежи от имени магазина, получать информацию о транзакциях, манипулировать статусами оплаты.

Техническое решение

Создали внешний серверный сервис, который обрабатывает все запросы к API Т-Банка. Ключи хранятся на сервере, в код страницы не попадают.

Как это работает

  1. Покупатель нажимает кнопку "Оплатить через СБП" в карточке заказа
  2. Браузер отправляет запрос на наш backend-сервис
  3. Сервис генерирует токен, обращается к API Т-Банка
  4. Вызывает методы /init и /getQr
  5. Получает ссылку на оплату с QR-кодом
  6. Возвращает ссылку в браузер
  7. Покупатель переходит по ссылке, сканирует QR
  8. Оплачивает в приложении банка

Состав заказа

В чек передается единая строка: "Оплата по заказ-наряду за авто-мультимедиа/монтаж". Это требование клиента — не передавать детальный состав заказа.

Налоговый режим

Клиент работает на патенте. Передаем в чек соответствующий налоговый режим через параметры API.

Интеграция с InSales

Внешний способ оплаты

В админке InSales создали способ оплаты "Оплата через СБП". Это внешний способ — платеж обрабатывается не через встроенные модули InSales.

Условия показа кнопки

Кнопка "Перейти к оплате" показывается только при статусе заказа "Ожидает оплату". Если заказ уже оплачен или отменен — кнопки нет.

Сохранение данных платежа

После генерации ссылки система сохраняет в заказе InSales:

  • Номер транзакции (PaymentId)
  • URL для оплаты
  • Время создания ссылки

Таймер жизни ссылки

Ссылка на оплату живет 20 часов. По истечении времени система автоматически генерирует новую.

Это нужно, чтобы избежать ошибок: если покупатель попытается оплатить по старой ссылке через несколько дней, система создаст актуальную.

UX/UI решения

Кнопка оплаты

Кнопка появляется только при нужном статусе. Покупатель не видит лишних вариантов — только "Оплатить через СБП".

Уведомление после оплаты

После оплаты показывается всплывающее окно: "Спасибо за оплату! Ваш заказ принят в работу."

Автоматическая проверка статуса

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

Повторное использование ссылки

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

Это исключает ошибки дублирования платежей в системе Т-Банка.

Безопасность

  • Все операции с API выполняются на сервере
  • В коде страницы нет ключей или паролей
  • Токены генерируются на стороне backend
  • Проверка подписи запросов от Т-Банка
  • Защита от повторной отправки платежей

Технические детали

API Т-Банка

Используем два метода API:

  • /init — создание платежа, получение PaymentId
  • /getQr — генерация QR-кода и ссылки на оплату

Обработка статусов

Т-Банк отправляет уведомления о статусах платежа (webhook). Сервер принимает эти уведомления и обновляет статус заказа в InSales.

Статусы: NEW (создан), CONFIRMING (идет оплата), CONFIRMED (оплачен), REJECTED (отклонен).

Сохранение в InSales

Данные платежа сохраняются в дополнительных полях заказа через API InSales. Это позволяет менеджерам видеть информацию о транзакции в админке.

Комментарий разработчика

«Клиент хотел обойтись без внешнего сервиса. Но в процессе тестирования стало понятно, что полноценная реализация с контролем статуса, безопасной генерацией токенов и обработкой откатов требует серверной логики. Нашли компромиссное решение, совместимое с InSales, которое позволяет использовать СБП и масштабировать функционал в будущем.»

Результат

  • Оплата по СБП работает напрямую из карточки заказа
  • Ссылка на оплату работает в браузере, почте, мессенджерах
  • Контроль жизни ссылки — автоматическое обновление через 20 часов
  • Покупатель видит только одну кнопку — "Оплатить через СБП"
  • Статус заказа обновляется автоматически после оплаты
  • Защита от ошибок дублирования и устаревших ссылок
  • Безопасное хранение API-ключей на сервере

Похожие кейсы

Технологии

InSales СБП Т-Банк QR-код оплата API интеграция Webhook Backend сервис Эквайринг E-commerce