Так сложилось, что уже лет 10 назад я писал программу для автоматизации работы бильярдной на 1с версии 7.7. Программа (т.е. конфигурация) вышла удачаная, она до сих пор работает в нескольких залах, причем сама база расположена на удаленном сервере, а компьютеры залов подключаются через интернет по протоколу RDP. На самих компьютерах маркеров стоят кассовые аппараты, считыватели скидочных смарт-карт и главное - коммутаторы, которые включают / выключают освещение на столах. Все это работает через СОМ порты, которые RDP успешно прокидывает. Коммутаторы делал тоже я, это такая платка с микроконтроллером и симисторами с опторазвязкой, которая имеет свой протокол обмена и по командам от маркера включает или выключает какой надо стол.
Но время идет, первая программа уже давно морально устарела. А мне тут случайно перепали бесплатно два платежных терминала.

Вот такого вида. Все с ними было нормально, только изношены блоки питания и компьютеры, которые стоят внутри. Я провел техобслуживание, все почистил, сделал дубликаты ключей, заменил материнки и блоки питания, терминалы нормально завелись. Из интеренсного в них имелось:
сенсорный экран
термпоринтер 80 мм
купюроприемник
бронекорпус
Потихоньку я нашел драйвера для всей этой техники (кроме корпусов, они работают без драйверов ;-)), установил операционную систему и добился нормальной работы. Надо что-то с ними было решать, место они занимают, тяжеленные, в гараже их жалко на морозе хранить, домой тоже убьюсь тащить и я решил их прикрутить к делу. Для дела была выбрана новая версия бильярдной программы, которую я как раз писал для новых заказчиков. В бильярде главное чтобы маркеры не воровали ;-) а они это любят: то столы пытаются включить без учета в программе, а деньги с клиента себе в карман, то клиента учесть со скидкой по программе, а реально взять деньги без скидок, да еще что-то могут придумывать. А тут меня крутейшее решение: клиенты сами вставляют деньги в купюроприемник и стол загорается настолько, насколько оплатили. Грустному маркеру остается только выбить чек.
Но времена сейчас такие что наличка есть далеко не у всех, кто-то картой хочет платить, кто-то по qr коду через сбп. И я начал думать как это мне прикрутить к программе. Вначале я нашел формат платежного qr кода. Там внутри просто текст: номер расчетного счета, инн, кпп и прочая информация. Это все кодируется в qr код и по нему, да, можно платить. Но вот беда, если у клиента и зала разные банки, то деньги приходят через несколько часова то и дней! Это конечно способ фиговый. т. е. это даже не сбп, а просто фактически платеж по реквизитам. И я стал искать информацию как сделать нормальный qr код для сбп. Т.к. банк использовался Тинькофф (или Т банк), я и начал от него плясать. Там есть такой «Интернет эквайринг» а у него есть API — т. е. описание методов, их аргументов чтобы делать разные операции. Причем все это мне надо было вызывать из 1С 8.3 и примеров я нормальных найти не смог. Все это API это post и get запросы. А я уже имел с ними дело, когда парсил авито и даже вытаскивал телефоны из объявлений.
Самый главный метод там был INIT - именно он начинал платежную сессию. У метода были некоторые важные аргументы: номер платежного терминала, пароль, номер платежной сессии и другие. Также был весьма непросто сам способ формирования тела запроса, нужно было особым образом дополнить запрос, сформировать строку с последовательностью аргументов, применить к ней процедуру шифрования и потом то что получилсь добавить в тело запроса. Причем для получения учетных данных тинькофф использует весьма долгую и неочевидную процедуру: там есть демо терминалы, я должен на них пройти несколько тестов потом еще что-то включить, создать магазин и только тогда включают боевой режим. В общем весь этот квест у меня занял неделю, но в итоге все вышло.

После запуска программы открывается рабочее окно. Все реализовано на 1С8.3 на управляемых формах. Причем программа может работать как в режиме тонкого клиента, так и через браузер:

Пользователь может тыкать в сенсорный экран (мышь и клавиатура не предусмотрены), все места где надо вводить текст или цифры сделаны с учетом ввода путем нажатия экранных кнопок:

После того как клиент авторизуется он может или начинать игру или проводить финансовые операции: просмотр своего депозита или добавление средств на депозит:

В центре полученный из банка QR код. С ним тоже была беда. Для получения qr кода в банковском api есть метод getqr. Это тоже post запрос. Причем возвращать он может или ссылку на страницу уже с самим готовым кодом или просто сам код. В виде картинки. Мне не нужны никакие лишние страницы, поэтому я выбрал код. Ну, думаю щас получу BMP или JPG или гифчик какой, но нет! QR код банк возвращает в формате SVG. Я про такой и не слышал! Но 1С с ним работать умеет. А формат этот векторый и текстовый. Т.е. огромная простыня с командами рисования примитивов. Беда была в том что полученный SVG никто не мог показать. Ни 1С, ни браузеры ни кто! Т.е. этот qr код был какой-то дефектный. Сел я за сличение разных файлов и вот что понял:


Видите, в чем дело?! У банка дохрена лишних палок перед кавычками. Пришлось их искусственно вырезать уже в 1С. И то что получилось стало отображсяться! Правда была еще одна достадная неприятность. Браузеры показывали QR код как надо, а 1С - нет!

Я обратился в техподдержку банка, но там меня сначала послали в 1с прямо к Нуралиеву, а потом уже прямо к Биллу Гейтсу. Типа сам выпрямляй себе QR коды! Что делать, пришлось копать дальше. Как я уже писал формат SVG текстовый, поэтому картинку можно открыть прямо блокнотом. И попытаться разобраться где эта часть что рисует логотип СБП. И я его нашел! Это было в самом конце файла. После того как я вставил возвраты каретки чтобы было удобнее читать стало выглядеть так:

Как я понял что строка
<svg x="56" y="56" и далее меняет начало координат. И дальше все цветные фигурки рисуются не в верхнем левом углу, а в середине рисунка. И эта команда почему-то не воспринимается 1С. Путем чтения инета я нашел еще одну команду и просто после получения qr кода уже в 1С менял эту строку на

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

Дальше программа включает стол и он показывается в списке как включенный.
Таким образом удалось автоматизировать бильярдный зал. Конечно подобная система может быть использована для самообслуживания клиентов прочих заведений: фитнес клубов, салонов красоты, кафе и прочих точек.
vindy
Фискальный принтер воткнуть в терминал и получить полностью самодостаточное решение, не?