Форум сайта python.su
Кто знает где можно найти информацию о формате данных линейного штрих-кода для платежных терминалов СберБанка. Насколько я понял, используется стандарт Code 128. Но какие данные и в какой последовательности им упаковываются в сам штрих-код.
Задача: необходимо сформировать штрих-код для квитанции на оплату. В идеале - клиент идет с этой квитанцией к терминалу и оплачивает полностью самостоятельно.
Отредактировано (Март 23, 2012 01:28:58)
Офлайн
хех, как раз занимаюсь разработкой проги для матричного принтера, со штрих кодами
про code128 читай в ГОСТ 30743-2001
Там сначала подается управляющий код потом данные кодируемые
Была еще инфа, но чет среди хлама на рабочем столе не могу найти
Офлайн
Вроде скинули инфу, данные упаковываются так:
{ИНН}L{Идентификатор платежа}S{сумма*100}
Отредактировано Psixo (Март 25, 2012 06:44:22)
Офлайн
А какой тут алгоритм? береш файл квитанции, открываешь, вставляешь туда код штрих-кода + данные ({ИНН}L{Идентификатор платежа}S{сумма*100}) и все. Насчет кода штрих-кода смотри в документации принтера, т.к. я думаю не на любом принтере одинаковые коды.
Офлайн
Piton23
А какой тут алгоритм? береш файл квитанции, открываешь, вставляешь туда код штрих-кода + данные ({ИНН}L{Идентификатор платежа}S{сумма*100}) и все. Насчет кода штрих-кода смотри в документации принтера, т.к. я думаю не на любом принтере одинаковые коды.
Офлайн
Забыл уточнить (т.к. раньше думал что в банках априори матричники стоят). У вас матричный принтер, если да то какой режим вывода графический или текстовый?
Офлайн
Здесь не в принтере дело.
Обычная квитанция которая будет печататься лазерником на А4 :) Формировать штрих-код будет за счет шрифта и строки code128.
Вот,кстати,алгоритм такого преобразования (строка -> код128) под 1С: http://www.kb.mista.ru/article.php?id=404 но он вроде несколько кривой.
ЗЫ.: это не для банка, коммерческая фирма занимающаяся оказанием определенного рода услуг.
Отредактировано Psixo (Март 25, 2012 10:57:02)
Офлайн
В алгоритме указаном по ссылке 1С используются 3 набора символов codeA codeB и codeC, по мне так извращение использовать несколько наборов в одном штрих коде. У меня например штрих код представляет инфу об оплате за комунальные услуги жкх, т.е. есть id жильца, сколько платить, код управляющей компании и т.п. Т.е. поскольку только числовая информация то используется только codeC. Если б требовалось использовать символы A-Za-z то использовал бы codeB. А поскольку в штрих коде зашито какой набор используется (A,B или C) то считыватель считает без проблем (даже если они будут чередоваться).
К чему это я. Я делал следующим образом. Есть база. При запросе печати квитанции для Иванова, брались данные вставлялись в последовательность штрих-кода, рассчитывалась контрольная сумма. Впереди шла инфа (управляющие коды) обозначающая что идет печать штрих-кода. и все. Вся эта последовательность вставлялась в нужном месте шаблона и выталкивалась принтеру. НО эти все махинации я делал для матричного принтера в текстовом режиме. Т.е. Если лазерник у вас, то картинка формируется раньше непосредственой печати штрих-кода. А вот как она формируется я не знаю. О драйвере печати надо наверное почитать.
Алгоритмы вычисления контрольной суммы есть, с этим у вас вроде проблем не должно быть. Вот пример могу свой привести. К примеру нужно запрогать код 45 65 78. В итоге получаем последовательность
27 16 66 9 67 45 65 78 102
где 27 16 66 не помню че обозначают (док. смотреть надо). 9 - типа количество данных (+1 для stop), 67 обозначается последовательность codeC, 65 - codeA, 66 - codeB, 102 - проверочный код (вроде б не ошибся с его вычислением)
Офлайн
Piton23, с алгоритмом вроде бы сложностей не возникло, вычисление контрольной суммы хорошо описали здесь: http://tradepilot.ru/goods-marks/code128
В алгоритме указаном по ссылке 1С используются 3 набора символов codeA codeB и codeC, по мне так извращение использовать несколько наборов в одном штрих кодеВот здесь с вами согласны разработчики ридеров штрих-кода, которые установлены в аппаратах СберБанка :) долго понять не мог в чем проблема моих штрих-кодов, оказалось всё дело в смене подсистем ввода внутри штрих-кода,они не воспринимались.
ИННLИдентификатор платежаSсумма*100
12346450005S350000 <—- такое значение воспринимается как ИдПлатежа, хотя это Ид+СуммаНадо где-то найти информацию о том,как в штрихкоде СберБанка разделяют номер платежа и его сумму.
Отредактировано Psixo (Март 30, 2012 08:03:51)
Офлайн
мм как они могут слипаться, вы просто определите количество разрядов для каждой состовляющей. К примеру на индитификатор 4 позиции. И если айдишник выйдет 25 к примеру, то в последовательность надо вставить 0025 а не 25. А дальше уж дело техники. На считывающем устройстве просто определить что от сих до сих считать сумму. И т.п.
Офлайн