Как в 1С автоматически определить, за какой заказ пришла оплата по СБП от физического лица?

Программист Управленческий учет IT и автоматизация бизнеса
← К списку

Часто возникает вопрос: можно ли при оплате через Систему быстрых платежей (СБП) от физического лица передать в систему 1С точную сумму и уникальный идентификатор заказа, чтобы оплата распозналась автоматически? На форумах можно встретить мнение, что это невозможно из-за сложной цепочки участников: банк плательщика, НСПК, банк получателя. Однако это не так. Современные технологии СБП не только позволяют это сделать, но и предлагают удобные инструменты для полной автоматизации.

Давайте вместе разберемся, как на самом деле работает этот механизм и как его можно интегрировать с вашей учетной системой 1С.

Решение 1: Использование динамических QR-кодов

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

Рассмотрим подробнее, как устроен этот процесс.

  1. Формирование заказа в 1С. Когда вы создаете в 1С документ, например, Счет на оплату покупателю или Заказ клиента, ваша система через API (программный интерфейс) отправляет запрос вашему банку или платежному шлюзу на создание платежной ссылки СБП.

  2. Передача ключевых параметров. В этом запросе 1С передает как минимум два важнейших параметра: точную сумму к оплате и уникальный идентификатор этой операции. В качестве идентификатора может выступать GUID документа, его номер или любая другая уникальная строка, по которой система сможет потом найти этот заказ.

  3. Генерация QR-кода. Банк или платежный шлюз в ответ на запрос возвращает уникальную платежную ссылку, на основе которой формируется QR-код. Этот код вы можете показать покупателю на экране монитора, терминала оплаты или распечатать в счете.

  4. Оплата покупателем. Клиент сканирует QR-код своим банковским приложением. В приложении он сразу видит получателя, точную сумму платежа (ее не нужно вводить вручную, что исключает ошибки) и назначение платежа. Ему остается только нажать кнопку "Оплатить".

Таким образом, "зашивая" в каждый QR-код сумму и уникальный идентификатор, мы решаем главную проблему — однозначно связываем поступивший платеж с конкретным заказом в 1С.

Решение 2: Автоматическое подтверждение оплаты через Callback-уведомления

Сгенерировать QR-код — это только половина дела. Теперь нам нужно, чтобы 1С автоматически узнала о том, что заказ оплачен. Для этого используется механизм callback-уведомлений (вебхуков).

Разберем по шагам, как это работает:

  1. Настройка на стороне 1С. В настройках интеграции с банком вы указываете специальный URL-адрес (HTTP-сервис в 1С), на который банк будет присылать уведомления об оплате.

  2. Отправка уведомления банком. Сразу после того, как покупатель успешно совершает платеж, система банка отправляет на ваш настроенный URL автоматическое POST-уведомление. Это происходит практически мгновенно.

  3. Обработка в 1С. Ваш HTTP-сервис в 1С принимает это уведомление. В теле уведомления содержится вся информация о платеже: статус операции (успех/ошибка), сумма и, самое главное, тот самый уникальный идентификатор заказа, который мы передавали при создании QR-кода.

  4. Автоматизация учета. Получив идентификатор, 1С находит по нему нужный документ (Счет или Заказ), меняет его статус на "Оплачен", создает документ поступления денежных средств и может автоматически запустить дальнейшие бизнес-процессы, например, отгрузку товара со склада. Участие оператора не требуется.

Для безопасности и проверки подлинности такие уведомления обычно подписываются цифровой подписью или содержат специальную контрольную сумму (checksum), чтобы ваша система была уверена, что уведомление пришло именно от банка, а не от злоумышленников.

Решение 3: Кассовая платежная ссылка — гибрид статики и динамики

Для розничных точек с высокой проходимостью постоянно выводить на экран новый QR-код может быть неудобно. Для таких случаев была разработана технология кассовой платежной ссылки.

Проанализируем ее принцип работы:

  1. Статичный QR-код на кассе. В кассовой зоне размещается один-единственный, не меняющийся QR-код. Его можно просто распечатать на наклейке и разместить рядом с терминалом.

  2. "Активация" ссылки. Когда кассир пробивает товары и нажимает в кассовой программе кнопку "Оплатить по СБП", кассовое ПО в этот момент отправляет запрос в банк, "привязывая" к этому статичному QR-коду данные текущей покупки: сумму и идентификатор чека.

  3. Оплата покупателем. Покупатель сканирует этот общий, статичный QR-код. Однако благодаря "активации" на шаге 2, его банковское приложение получает данные именно текущей, последней покупки — с правильной суммой и назначением.

  4. Завершение операции. После успешной оплаты ссылка автоматически "освобождается" и готова к "активации" для следующего покупателя. Подтверждение оплаты в кассовую программу также приходит через 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-уведомления, вы можете полностью автоматизировать процесс приема платежей, исключить ошибки ручного ввода и ускорить обработку заказов.

← К списку