QR-display

Публикация № 1704346 03.08.22

Бухгалтерский учет - Банковские операции

QR-display QR-дисплей QR-код СБП системы быстрых платежей оплата эквайринг qr-pay куар 2D ST00012 РМК клиент-банк

Приложение для формирования и отображения QR-кода на любом доступном экране.

Основная идея – в 1С в обычных формах нет вьюхи для отдельного вывода изображения с qr-кодом, например, на второй монитор.

С ростом популярности оплаты через Систему Быстрых Платежей (СБП) возникла необходимость в интеграции с API банка для конфигурации УТ 10.3, в ходе которой вылез вопрос способов отображения изображения с QR-кодом для клиента – все примеры сводятся к получению QR-кода любым доступным способом и печати его на бумажном носителе, или выводе его на специальном дисплее для таких кодов, цена на который начинается от 3 т.р. Немного помониторив рынок б/у торгового оборудования, попались объявления на POS-мониторы стоимостью от 500р., которые как раз и можно приспособить для вывода QR-кода для покупателя: просто втыкаем как второй дисплей на точке продаж и выводим на него изображения с QR-кодом.

Для вывода было нарисовано win-приложение, данные которому можно передавать через обычный файл *.json в виде задания.

Приложение умеет отображать QR-код и несколько вариантов статусов. Весь процессинг выполняется на стороне 1С и приложение служит только для отображения статуса операции или вывода кода для оплаты.

Как использовать:

После запуска приложения в директории запуска создаётся дополнительный каталог "swap", в который можно складывать задание в формате *.json. Допустимое наименование для файла с заданием - "task.json".

Настройка фонового изображения:

При первом запуске в директории приложения создаётся файл настроек "config.ini", в котором можно указать стиль фона и его цвет (по умолчанию применяется клетчатая расцветка, как в анонсе). Пример:

[main]
bgstyle=solid
bgcolor=#ffddaa ;Или сокращение #fda

Допустимые параметры для task.json:

"header" -  Произвольная строка, которая выводится над QR-кодом. В неё можно передать, например, номер и сумму чека. Можно вывести не более 2-х строк.

"operation" -  Выполняемая команда. Допускаемые значения:

"qrstring" – вывести QR-код,  который будет сформирован из строки, содержащейся в параметре "qrdata"

"notice" – вывести статус операции, указанный  в параметры "status"

"clear" – очистить форму на дисплее

"qrdata" -  Строка с данными для QR-кода

"status" -  Статус выполнения операции. Допускаемые значения:

"ok" – Всё хорошо

"fail" – Ошибка при выполнении

"warning" – Предупреждение

*Все операции допускают использование "header".

**Тип значение любого параметры - Строка

Пример: в 1С формируется обращение к API банка, на которое возвращается ссылка для оплаты через СБП -> Затем формируется задания для QR-дисплея в виде json:

{
  "qrdata": "https://qr.nspk.ru/AS100001ORTF4GAF80KPJ53K186D9A3G?type=01&bank=100000000007&crc=0C8A",
  "operation": "qrstring"
}

На  экране отобразится код для оплаты:

 

 

После того как операция будет обработана, на экран можно вывести статус её выполнения с помощью json:

{
  "operation": "notice",
  "status": "ok" ИЛИ "fail"
}

 

И ли

 

Ещё один сценарий использования:

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

 

 

JSON-задание для такого QR-кода можно получить с помощью подобного кода:

//  Структуры для передачи на дисплей   
//////////////////////////////////////////////////////////////////////////////////////////
//// Данный для "qrdata"                                                                //
//// Обязательные:                                                                      //
//////////////////////////////////////////////////////////////////////////////////////////
//Name          - Наименование получателя платежа               - Макс. 160 символов    //
//PersonalAcc   - Номер счета получателя платежа                - Макс. 20 символов     //
//BankName      - Наименование банка получателя платежа         - Макс. 45 символов     //
//BIC           - БИК                                           - Макс. 9 символов      //
//CorrespAcc    - Номер кор./сч. банка получателя платежа       - Макс. 20 символов     //
//////////////////////////////////////////////////////////////////////////////////////////
//// Дополнительные:                                                                    //
//////////////////////////////////////////////////////////////////////////////////////////
//Sum           - Сумма платежа, в копейках                     - Макс. 18 символов     //
//Purpose       - Наименование платежа (назначение)             - Макс. 210 символов    //
//PayeeINN      - ИНН получателя платежа                        - Макс. 12 символов     //
//KPP           - КПП получателя платежа                        - Макс. 9 символов      //
//////////////////////////////////////////////////////////////////////////////////////////
Функция ПолучитьСтруктуруКлиентБанк(ДокументСсылка)

  Результат = Новый Структура;               

// Тип операции

  Результат.Вставить("operation", "qrstring"); 
                              
  ДанныеДляПлатежа = ПолучитьПараметрыПечатиСчетаЗаказа("счет");  
  ДанныеШапки = ПолучитьДанныеШапкиДокумента(); 
  НомерСчета = ОбщегоНазначения.ПолучитьНомерНаПечать(ДокументСсылка);
  ВалютаНаименование = ДокументСсылка.ВалютаДокумента.Наименование;                

//  Заголовок

  Заголовок = "Счёт №" + НомерСчета + " от " + Формат(ДокументСсылка.Дата, "ДФ='дд ММММ гггг'") + " г."
                  + Символы.ПС + "Сумма: " + ДанныеДляПлатежа.Всего + ВалютаНаименование;

  Результат.Вставить("header", Заголовок);

//  Данные для QR-кода

  СтрокаНазначениеПлатежа = "Оплата по счету №" + НомерСчета + " от " + Формат(ДокументСсылка.Дата, "ДФ='дд ММММ гггг'") + " г. "
                  + ДанныеДляПлатежа.НДС
                  + ?(ДанныеДляПлатежа.ВсегоНДС > 0,
                  " " + Формат(ДанныеДляПлатежа.ВсегоНДС, "ЧДЦ=2") + ВалютаНаименование, 
                  "");                                                                                             

  Тело = "ST00012"
         + "|Name=" + ДокументСсылка.Организация.Наименование
         + "|PersonalAcc=" + ДокументСсылка.Организация.ОсновнойБанковскийСчет.НомерСчета
         + "|BankName=" + ДокументСсылка.Организация.ОсновнойБанковскийСчет.Банк.Наименование
         + "|BIC=" + ДокументСсылка.Организация.ОсновнойБанковскийСчет.Банк.Код
         + "|CorrespAcc=" + ДокументСсылка.Организация.ОсновнойБанковскийСчет.Банк.КоррСчет
         + "|Sum=" + Формат(ДанныеДляПлатежа.ВсегоКОплате * 100, "ЧДЦ=0; ЧН=0; ЧГ=0")
         + "|Purpose=" + СтрокаНазначениеПлатежа
         + "|PayeeINN=" + ДокументСсылка.Организация.ИНН
         + ?(ПустаяСтрока(ДокументСсылка.Организация.КПП) = Истина, "","|KPP=" + ДокументСсылка.Организация.КПП);                             
  
  Результат.Вставить("qrdata", Тело);                              
  
  Возврат Результат;

КонецФункции

 

Скачать файлы

Наименование Файл Версия Размер
qrdisplay

.rar 26,66Kb
47
.rar 26,66Kb 47 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Torin 501 03.08.22 14:39 Сейчас в теме
+ однозначно!
ИМХО - если бы фон однотонный , да еще и задать цвет можно было.. было бы супер!
2. erik74 12 03.08.22 15:04 Сейчас в теме
(0) + Супер!
а вот фон ...:( Так было бы более строже
Прикрепленные файлы:
3. user786146 21 03.08.22 16:50 Сейчас в теме
(2) Фон динамически меняется при ресайзе и иногда получаются красивые цвета. Но возможность установить сплошной цвет добавил и обновил описание (см. "Настройка фонового изображения")
Ali_q; erik74; +2 Ответить
4. erik74 12 04.08.22 06:58 Сейчас в теме
(3) За это вам наша искренняя сердечная благодарность.
5. CheBurator 3073 05.08.22 20:28 Сейчас в теме
"данные которому можно передавать через обычный файл *.json в виде задания."
- главное. чтобы QR-код. который сканирует клиент - был тем что нужно, а не остался от предыдущего...
6. Torin 501 07.08.22 10:06 Сейчас в теме
(5) ИМХО - после получения ответа от СБП что операция завершена передавать в *.json
{
"operation": "clear"
}
7. CheBurator 3073 07.08.22 11:16 Сейчас в теме
8. user786146 21 08.08.22 10:29 Сейчас в теме
(5) Вообще для этих целей я предполагал использование параметра "header" (в него можно передавать, например, номер чека), от выводится только после отрисовки нового QR-кода.

Файл в раздаче сегодня обновился:
- Небольшая оптимизация
- Добавлена возможность автоматического запуска на втором дисплее
- Добавлена возможность нанесения на QR-код отпечатка времени создания

*Все опции включаются через файл "config.ini". Файл с новыми параметрами создаётся при первом запуске приложения.
Оставьте свое сообщение

См. также

SALE! 25%

Из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты комиссионеров (ОЗОН, Вайлдберриз), заказы, счета, прайсы, номенклатура Промо

Загрузка и выгрузка в Excel Обработка документов Оптовая торговля v8 v8::УФ Платформа 1C v8.2 1cv8.cf БУ УУ Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Содержит модуль работы с электронной почтой. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Работает во всех основных конфигурациях 1С8. При покупке лицензии вы получите 1 месяц бесплатной тех.поддержки.

9000 7650 руб.

09.11.2016    175189    648    839    

Загрузка данных из 1С МиниДеньги в 1С:Деньги 8, редакция 2.0

Обмен между базами 1C Файловые протоколы обмена (TXT, XML, DBF), FTP v8 Домашние учет и финансы УУ Абонемент ($m)

Обработка для первоначальной загрузки данных (справочников и операций) в настольную программу 1С:Деньги 8, редакция 2.0 из файлы резервной копии мобильной программы 1С Миниденьги.

2 стартмани

01.10.2015    18103    15    Claus32    5    

Редактор чеков ККМ Розница 2.0 - 2.3

Обработка документов Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд БУ НУ Абонемент ($m)

Обработка чеков ККМ списком (редактирование, удаление, ...). Переформирование ОРП, связь чеков с ОРП. Редактирование времени КС. Редактирование суммы и времени выемки.

1 стартмани

06.08.2015    64603    597    Dima_    83    

Загрузка из Excel в 1С:Розница

Обработка документов Обработка справочников Загрузка и выгрузка в Excel Склад и ТМЦ v8 Розница Россия УУ Абонемент ($m)

Универсальная загрузка Excel файлов в 1С:Розница 2.0

1 стартмани

27.05.2015    16609    110    KarinaSV    7    

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Обмен между базами 1C Универсальные обработки v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    233543    4506    ekaruk    192    

Автоматическая установка себестоимости номенклатуры для конфигурации Розница 2.0 (2.1) +Бонус, исправляем ошибки при настройке расписания запуска для внешних обработок в Рознице 2.0

Прайсы Обработка документов Розничная торговля Ценообразование, анализ цен v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Обработка для автоматического создания документов Установка себестоимости, в случае если себестоимость не установлена на момент продажи. Помогает упростить установку себестоимости номенклатуры, если у вас в базе ведется учет по нескольким магазинам. Тестировалась на релизе 2.0.8.12 и 2.1.7.14. Подойдет для тех систем, где себестоимость номенклатуры одинакова для всех магазинов.

1 стартмани

31.03.2014    30214    75    sanches    15    

Выемка денежных средств из КассыККМ. Розница 2.0

Кассовые операции ККМ v8 Розница УУ Абонемент ($m)

Уставшим от отсутствия ВыемкиДС после закрытия кассовой смены посвящается. Подключаемая обработка. Управляемый интерфейс.

1 стартмани

12.12.2012    81878    530    StepByStep    40