В современной розничной торговле мы часто сталкиваемся с ситуацией, когда на кассе размещена обычная пластиковая табличка с QR-кодом. На первый взгляд кажется, что это статический код, в который «зашиты» только реквизиты магазина. Однако при сканировании банковское приложение чудесным образом сразу подтягивает нужную сумму заказа. Разберем детально, как работает эта технология, называемая кассовой ссылкой СБП, и как она реализуется технически.
Ранее существовало жесткое разделение: статический QR-код содержал только информацию о получателе, а динамический (выводимый на экран) — еще и сумму конкретной покупки. Технология кассовой ссылки объединяет эти подходы. Рассмотрим этот гибридный механизм подробнее:
Проанализируем ситуацию: по сути, мы имеем дело с динамическим наполнением статического носителя. Физический код не меняется, но данные, на которые он ссылается в облаке банка, обновляются при каждой продаже.
Для разработчика 1С работа с такими ссылками сводится к взаимодействию с API банка через библиотеку интернет-поддержки (БСП). Выясним причину, почему это удобнее стандартного динамического QR-кода. Основное преимущество — отсутствие необходимости в дорогостоящем оборудовании (дисплеях покупателя) при сохранении высокой скорости обслуживания.
Посмотрим на пример логики, которая происходит «под капотом» при интеграции с банком. Когда кассир нажимает кнопку «Оплата по СБП», учетная система должна выполнить процедуру активации ссылки:
// Примерная схема взаимодействия с API платежного агрегатора
Функция АктивироватьКассовуюСсылку(СуммаЧека, ИдентификаторКассы)
Запрос = Новый HTTPЗапрос(АдресСервисаБанка);
Запрос.Заголовки.Вставить("Authorization", "Bearer " + ТокенДоступа);
// Формируем структуру данных для активации
ДанныеПараметров = Новый Структура;
ДанныеПараметров.Вставить("qrid", ИдентификаторКассы); // ID из статической наклейки
ДанныеПараметров.Вставить("amount", СуммаЧека * 100); // Сумма в копейках
ДанныеПараметров.Вставить("orderId", Строка(Новый УникальныйИдентификатор()));
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеПараметров);
СтрокаJSON = ЗаписьJSON.Закрыть();
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);
// Отправляем команду на сервер банка
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Возврат Истина; // Ссылка теперь содержит сумму и готова к оплате
КонецЕсли;
КонецФункции
Важно помнить, что после успешной транзакции или по истечении тайм-аута ссылка должна быть «деактивирована» (очищена), чтобы следующий покупатель случайно не оплатил чужой чек. В большинстве современных API это происходит автоматически на стороне банковского сервера.
Проанализируем дополнительные возможности современных табличек. Многие из них оснащены встроенным NFC-чипом. В этом случае покупателю даже не нужно открывать камеру — достаточно приложить смартфон к табличке. Смартфон считывает ту же самую платежную ссылку через бесконтактный интерфейс, что еще больше сокращает время операции.
Разберем также понятие Универсального QR. Это развитие идеи кассовой ссылки, где один и тот же код поддерживает разные платежные сценарии:
Рассмотрим подробнее вопрос безопасности. Главный риск статической таблички — ее физическая подмена злоумышленниками. Для предотвращения мошенничества применяются следующие механизмы:
Подводя итог, выделим ключевые выгоды использования кассовых ссылок в 1С:
Экономия: Не нужно покупать и обслуживать дисплеи для каждой кассовой зоны.
Скорость: Покупателю не нужно вручную вводить сумму (как в классическом статическом QR), что исключает ошибки и ускоряет очередь.
Гибкость: В 1С:Розница или 1С:УНФ настройка выполняется один раз через привязку ID кассы к рабочему месту, после чего система работает в автоматическом режиме.
Таким образом, внешне простая табличка на кассе является лишь «точкой входа» в сложную и эффективную систему облачного взаимодействия между кассовым ПО и банковским сервером.