Часто возникает вопрос: можно ли при оплате через Систему быстрых платежей (СБП) от физического лица передать в систему 1С точную сумму и уникальный идентификатор заказа, чтобы оплата распозналась автоматически? На форумах можно встретить мнение, что это невозможно из-за сложной цепочки участников: банк плательщика, НСПК, банк получателя. Однако это не так. Современные технологии СБП не только позволяют это сделать, но и предлагают удобные инструменты для полной автоматизации.
Давайте вместе разберемся, как на самом деле работает этот механизм и как его можно интегрировать с вашей учетной системой 1С.
Это основной и самый распространенный способ решения нашей задачи. В отличие от статического QR-кода, который содержит только реквизиты получателя, динамический QR-код генерируется для каждой конкретной покупки и содержит всю необходимую информацию для ее идентификации.
Рассмотрим подробнее, как устроен этот процесс.
Формирование заказа в 1С. Когда вы создаете в 1С документ, например, Счет на оплату покупателю или Заказ клиента, ваша система через API (программный интерфейс) отправляет запрос вашему банку или платежному шлюзу на создание платежной ссылки СБП.
Передача ключевых параметров. В этом запросе 1С передает как минимум два важнейших параметра: точную сумму к оплате и уникальный идентификатор этой операции. В качестве идентификатора может выступать GUID документа, его номер или любая другая уникальная строка, по которой система сможет потом найти этот заказ.
Генерация QR-кода. Банк или платежный шлюз в ответ на запрос возвращает уникальную платежную ссылку, на основе которой формируется QR-код. Этот код вы можете показать покупателю на экране монитора, терминала оплаты или распечатать в счете.
Оплата покупателем. Клиент сканирует QR-код своим банковским приложением. В приложении он сразу видит получателя, точную сумму платежа (ее не нужно вводить вручную, что исключает ошибки) и назначение платежа. Ему остается только нажать кнопку "Оплатить".
Таким образом, "зашивая" в каждый QR-код сумму и уникальный идентификатор, мы решаем главную проблему — однозначно связываем поступивший платеж с конкретным заказом в 1С.
Сгенерировать QR-код — это только половина дела. Теперь нам нужно, чтобы 1С автоматически узнала о том, что заказ оплачен. Для этого используется механизм callback-уведомлений (вебхуков).
Разберем по шагам, как это работает:
Настройка на стороне 1С. В настройках интеграции с банком вы указываете специальный URL-адрес (HTTP-сервис в 1С), на который банк будет присылать уведомления об оплате.
Отправка уведомления банком. Сразу после того, как покупатель успешно совершает платеж, система банка отправляет на ваш настроенный URL автоматическое POST-уведомление. Это происходит практически мгновенно.
Обработка в 1С. Ваш HTTP-сервис в 1С принимает это уведомление. В теле уведомления содержится вся информация о платеже: статус операции (успех/ошибка), сумма и, самое главное, тот самый уникальный идентификатор заказа, который мы передавали при создании QR-кода.
Автоматизация учета. Получив идентификатор, 1С находит по нему нужный документ (Счет или Заказ), меняет его статус на "Оплачен", создает документ поступления денежных средств и может автоматически запустить дальнейшие бизнес-процессы, например, отгрузку товара со склада. Участие оператора не требуется.
Для безопасности и проверки подлинности такие уведомления обычно подписываются цифровой подписью или содержат специальную контрольную сумму (checksum), чтобы ваша система была уверена, что уведомление пришло именно от банка, а не от злоумышленников.
Для розничных точек с высокой проходимостью постоянно выводить на экран новый QR-код может быть неудобно. Для таких случаев была разработана технология кассовой платежной ссылки.
Проанализируем ее принцип работы:
Статичный QR-код на кассе. В кассовой зоне размещается один-единственный, не меняющийся QR-код. Его можно просто распечатать на наклейке и разместить рядом с терминалом.
"Активация" ссылки. Когда кассир пробивает товары и нажимает в кассовой программе кнопку "Оплатить по СБП", кассовое ПО в этот момент отправляет запрос в банк, "привязывая" к этому статичному QR-коду данные текущей покупки: сумму и идентификатор чека.
Оплата покупателем. Покупатель сканирует этот общий, статичный QR-код. Однако благодаря "активации" на шаге 2, его банковское приложение получает данные именно текущей, последней покупки — с правильной суммой и назначением.
Завершение операции. После успешной оплаты ссылка автоматически "освобождается" и готова к "активации" для следующего покупателя. Подтверждение оплаты в кассовую программу также приходит через callback-уведомление.
Этот метод сочетает удобство статического кода (не нужно ничего выводить на экран) и всю функциональность динамического (передача точной суммы и идентификатора).
Скорость зачисления. Одним из ключевых преимуществ СБП является скорость. Вне зависимости от выбранного способа, деньги поступают на расчетный счет вашей организации практически мгновенно, обычно в течение 15 секунд после оплаты, в отличие от традиционного эквайринга, где зачисление может занимать 1-3 дня.
Реальные интеграции. Многие банки и платежные сервисы предоставляют готовые API для интеграции с 1С. Например, на форуме упоминался сервис el-plat.ru, который позволяет настраивать время жизни динамического кода и имеет функционал callback-уведомлений. Подобные возможности сегодня есть у большинства крупных банков-эквайеров.
В коде 1С работа с такими сервисами обычно сводится к вызову HTTP-запросов. Например, отправка запроса на создание QR-кода может выглядеть так (упрощенный пример):
// Создание JSON-тела запроса
ТекстЗапроса = "{""amount"": 1500.50, ""order_id"": ""ЗАКАЗ-00123""}";
// Настройка HTTP-соединения
Соединение = Новый HTTPСоединение("api.bank.ru", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Authorization", "Bearer " + ТокенДоступа);
// Отправка запроса
Запрос = Новый HTTPЗапрос("/sbp/v1/create_qr", Заголовки);
Запрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Обработка ответа
Если Ответ.КодСостояния = 200 Тогда
// Получаем ссылку на QR-код из тела ответа
СсылкаНаQR = ПолучитьИзJSON(Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
Таким образом, мы выяснили, что автоматическая идентификация платежей СБП от физических лиц в 1С — это стандартная и технологически решенная задача. Используя динамические QR-коды и callback-уведомления, вы можете полностью автоматизировать процесс приема платежей, исключить ошибки ручного ввода и ускорить обработку заказов.
← К списку