Короткий ответ и границы сценария
На сайте нужно адаптировать путь под устройство: кнопка удобна на смартфоне, динамический QR — на компьютере, а статус проверяется одинаково через backend. Материал рассчитан на интернет-магазина или сервиса с собственной страницей заказа. Сначала определите бизнес-объект, который изменится после оплаты: заказ, бронь, период доступа, лицензия или обязательство перед клиентом.
Покупатель открывает заказ с ноутбука и сканирует QR телефоном. Страница опрашивает публичный статус только для интерфейса, а склад резервирует товар после server-to-server события; при обновлении страницы заказ не создаётся повторно. Это конкретный пример модели, а не универсальное разрешение для любой категории. Условия подключения, способы оплаты и документы подтверждаются для проекта во время модерации.
СБП поддерживает оплату по QR-коду, кнопке и ссылке, но для интернет-проекта важен не только сам переход в банковское приложение. Нужно создать заказ, показать корректную сумму, получить подтверждение от платёжной инфраструктуры и однозначно сопоставить результат с заказом.
Как выбрать рабочий вариант
Сравнивайте варианты по тому, какое действие нужно подтвердить и кто отвечает за следующий шаг. В таблице — три контрольные точки именно для темы «оплата по СБП на сайте».
| Контрольная точка | Как зафиксировать | С чем связать |
|---|---|---|
| серверная корзина | Записать принятое решение, владельца и критерий готовности. | динамический QR и внутренний order_id. |
| выбор метода | Сохранить выбранное значение и версию условий. | polling интерфейса и ожидаемый результат. |
| deep link | Определить проверку, состояние ошибки и безопасный повтор. | webhook заказа, payment_id и время обработки. |
Шесть точек, которые определяют результат
серверная корзина
Контрольная точка «серверная корзина» задаёт исходные данные для материала «Оплата по СБП на сайте: кнопка, QR и подтверждение». Зафиксируйте решение в карточке заказа до создания платежа, чтобы повторный запрос не создавал новую продажу случайно.
выбор метода
Пункт «выбор метода» должен быть понятен покупателю до перехода в форму: покажите сумму, назначение и ожидаемый результат. Интерфейс отдельно объясняет ожидание, успех, отмену и истечение, не подменяя серверный статус красивым экраном.
deep link
Для пункта «deep link» определите техническое доказательство завершения: проверенное событие, совпавшие сумма и валюта, известные order_id и payment_id. Только после этой проверки запускайте продуктовую выдачу или исполнение заказа.
динамический QR
У элемента «динамический QR» должен быть владелец исключений. Ему нужна история попыток и правило, которое объясняет, можно ли безопасно повторить создание, отправку ссылки или выдачу без доступа к API-ключам.
polling интерфейса
Требование «polling интерфейса» проверьте повторной доставкой callback. Два одинаковых события не должны дважды продлевать доступ, резервировать место, начислять баланс или отправлять товар; ограничение фиксируют на уровне данных.
webhook заказа
Для точки «webhook заказа» заранее опишите возврат, спор и задержку результата. Покупателю нужен понятный канал поддержки, а команде — связь между исходным заказом, платежом, документом и обратной операцией.
Пошаговая схема
- серверная корзина. Формируйте динамический платёж для конкретного заказа, если сумма или назначение меняются. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
- выбор метода. На мобильном устройстве предлагайте кнопку перехода, а QR оставляйте как дополнительный путь. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
- deep link. Не помечайте заказ оплаченным по факту открытия банковского приложения. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
- динамический QR. Храните последние полученные статусы и допускайте позднее подтверждение после истечения счёта. Запишите входные данные, ответственного и условие завершения. Если нужен денежный результат, сообщение пользователя и визуальный редирект не заменяют проверенный серверный статус.
- 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 и подтверждение» это упрощает поддержку, повторную доставку события и разбор спорной операции.