СБП и способы оплаты

Оплата по СБП на сайте: кнопка, QR и подтверждение

На смартфоне удобна кнопка, на компьютере — QR-код, а результат оплаты в обоих случаях подтверждает сервер, а не браузер покупателя.

Короткий ответ и границы сценария

На сайте нужно адаптировать путь под устройство: кнопка удобна на смартфоне, динамический QR — на компьютере, а статус проверяется одинаково через backend. Материал рассчитан на интернет-магазина или сервиса с собственной страницей заказа. Сначала определите бизнес-объект, который изменится после оплаты: заказ, бронь, период доступа, лицензия или обязательство перед клиентом.

Покупатель открывает заказ с ноутбука и сканирует QR телефоном. Страница опрашивает публичный статус только для интерфейса, а склад резервирует товар после server-to-server события; при обновлении страницы заказ не создаётся повторно. Это конкретный пример модели, а не универсальное разрешение для любой категории. Условия подключения, способы оплаты и документы подтверждаются для проекта во время модерации.

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

Как выбрать рабочий вариант

Сравнивайте варианты по тому, какое действие нужно подтвердить и кто отвечает за следующий шаг. В таблице — три контрольные точки именно для темы «оплата по СБП на сайте».

Контрольная точкаКак зафиксироватьС чем связать
серверная корзинаЗаписать принятое решение, владельца и критерий готовности.динамический QR и внутренний order_id.
выбор методаСохранить выбранное значение и версию условий.polling интерфейса и ожидаемый результат.
deep linkОпределить проверку, состояние ошибки и безопасный повтор.webhook заказа, payment_id и время обработки.
Мобильная оплата проходит через QR-код, банк и подтверждение заказа
Схема сценария. Визуальный путь для запроса «оплата по СБП на сайте»: от сохранённого заказа до подтверждённого результата.
серверная корзинаЗафиксировать объект и условия до создания платежа.
deep linkСвязать заказ с order_id, payment_id и точной суммой.
polling интерфейсаВыполнить результат один раз после проверенного события.

Шесть точек, которые определяют результат

серверная корзина

Контрольная точка «серверная корзина» задаёт исходные данные для материала «Оплата по СБП на сайте: кнопка, QR и подтверждение». Зафиксируйте решение в карточке заказа до создания платежа, чтобы повторный запрос не создавал новую продажу случайно.

выбор метода

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

deep link

Для пункта «deep link» определите техническое доказательство завершения: проверенное событие, совпавшие сумма и валюта, известные order_id и payment_id. Только после этой проверки запускайте продуктовую выдачу или исполнение заказа.

динамический QR

У элемента «динамический QR» должен быть владелец исключений. Ему нужна история попыток и правило, которое объясняет, можно ли безопасно повторить создание, отправку ссылки или выдачу без доступа к API-ключам.

polling интерфейса

Требование «polling интерфейса» проверьте повторной доставкой callback. Два одинаковых события не должны дважды продлевать доступ, резервировать место, начислять баланс или отправлять товар; ограничение фиксируют на уровне данных.

webhook заказа

Для точки «webhook заказа» заранее опишите возврат, спор и задержку результата. Покупателю нужен понятный канал поддержки, а команде — связь между исходным заказом, платежом, документом и обратной операцией.

Пошаговая схема

  1. серверная корзина. Формируйте динамический платёж для конкретного заказа, если сумма или назначение меняются. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
  2. выбор метода. На мобильном устройстве предлагайте кнопку перехода, а QR оставляйте как дополнительный путь. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
  3. deep link. Не помечайте заказ оплаченным по факту открытия банковского приложения. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
  4. динамический QR. Храните последние полученные статусы и допускайте позднее подтверждение после истечения счёта. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
  5. polling интерфейса. Для отказа показывайте понятное повторное действие без создания случайных дублей заказа. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.

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

Как собрать сценарий на RollyPay

Для темы «оплата по СБП на сайте» сначала создают заказ с точной суммой и только затем платёж. Доступность СБП подтверждается для проекта, а полученный pay_url используется как мобильная кнопка или основа разрешённого QR-сценария.

Пункты «выбор метода» и «deep link» описывают путь покупателя, но денежный статус приходит отдельно. Открытие банковского приложения, сканирование QR и возврат в браузер ещё не равны payment.paid.

После server-to-server события проект сверяет order_id, payment_id, сумму и валюту, затем выполняет «polling интерфейса». Позднее подтверждение и повтор callback обрабатываются без второй выдачи.

Для темы «Оплата по СБП на сайте: кнопка, QR и подтверждение» условия и варианты подключения собраны на странице решения RollyPay. Там можно сопоставить сценарий с продуктом, а здесь сохранить инструкцию и контрольные детали для реализации.

Частые ошибки

Нет внутреннего объекта продажи. Пункт «серверная корзина» существует только в переписке, поэтому платёж нельзя однозначно связать с товаром или обязательством. Сначала создайте внутренний заказ и только затем внешний платёж.

Интерфейс принят за доказательство. Пункт «выбор метода» может быть кнопкой, QR, ссылкой или экраном возврата. Денежный результат всё равно подтверждают серверное состояние и проверенное событие.

Разорваны данные процесса. Пункты «deep link» и «polling интерфейса» должны быть связаны через order_id, payment_id, сумму, валюту и последнее событие. Тогда повтор или позднее подтверждение обрабатываются безопасно.

Нет владельца исключений. Пункт «webhook заказа» включает возврат, истечение, спор и сбой доставки. Для каждого случая нужны статус, ответственная роль и понятное сообщение покупателю.

Что проверить до публикации

Редирект покупателя и серверный статус выполняют разные задачи. Редирект помогает показать понятный экран после оплаты, а webhook подтверждает состояние для учёта и выдачи товара. Если полагаться только на браузер, закрытая вкладка или подмена URL оставят заказ в неверном состоянии.

Оплата через СБП остаётся безналичным расчётом. Требования к чеку и учёту зависят от статуса продавца и модели операции; выбранный платёжный метод сам по себе не создаёт освобождение. Условия подключения и доступные методы подтверждаются при модерации проекта.

  • Категория проекта и предмет продажи описаны одинаково на сайте, в боте и в заявке на подключение.
  • Цена, валюта, срок действия предложения и правила возврата видны до оплаты.
  • Секреты находятся только на сервере, а журнал не содержит API-ключей и полного тела с чувствительными данными.
  • Успех, отмена, истечение, повтор события и недоступность callback проверены до реальных продаж.
  • Налоговый или кассовый документ создаётся по правилам статуса продавца и связан с заказом.

Практические заметки для запуска

серверная корзина. Формируйте динамический платёж для конкретного заказа, если сумма или назначение меняются. Владелец шага, сохраняемый идентификатор и проверяемый результат определяются заранее. Связка с пунктом «deep link» фиксируется в данных заказа, а не остаётся устной договорённостью. Для темы «Оплата по СБП на сайте: кнопка, QR и подтверждение» это упрощает поддержку, повторную доставку события и разбор спорной операции.

Частые вопросы

С чего начать подключение по этому сценарию?

Начните с внутреннего заказа и точки «серверная корзина»: определите продавца, предмет продажи, сумму и результат, который можно выдать только после подтверждения.

Можно ли считать переход на успешную страницу подтверждением оплаты?

Нет. Редирект нужен для интерфейса. Состояние заказа меняют после проверенного серверного события и сверки payment_id, order_id, суммы и валюты.

Что делать, если webhook пришёл повторно?

Сохраните уникальный ключ обработки и верните успешный ответ без повторного действия. Особенно важно не дублировать элемент «polling интерфейса».

Какие данные нужны поддержке для разбора?

Достаточно order_id, payment_id, времени, суммы, последнего статуса и результата шага «webhook заказа». API-ключи и signing secret передавать поддержке нельзя.

Источники и документация