Как стать автором
Обновить

Комментарии 12

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

Фактически, информационная составляющая сводится к "В PHP есть FFI". А те же трудности только упомянуты, но не даётся никаких рекомендаций по их преодолению.

Так вся задача и сводится к тому чтобы взять ffi и вперёд. Можно ещё плагином наколхозить. Никаких сложностей. Кодировки строки дежурная задача для интеграции фискальника на си/цпп (там два варианта апи). Я точно так же к флаттеру присобачивал на десктопах.

PHP использует строки в кодировке UTF-8, тогда как драйвер кассы ожидал 32-битные данные

Что-то я не понял это место. PHP работает с однобайтовой строкой, для остальных кодировок, в том числе UTF-8, нужно использовать внешние функции (iconv, mb* и так далее). Можете раскрыть тему?

Да ладно придираться-то :) Понятно что не "РНР", а "наше приложение". Совершенно стандартная конфигурация любого современного сайта.

Причём тут придирки?

Понятно что…

Я начал своё сообщение с фразы «…я не понял это место». Если вам понятно — ок. Но прочитайте внимательно что именно я написал.

И чем не устраивает моё объяснение? Понятно что я свечку не держал, но оно на мой взгляд совершенно очевидно. Вместо РНР следует читать "наше приложение". И всё сразу встанет на свои места. "Наше приложение, как и любой другой современный сайт, работает с данными в кодировке utf-8, а драйвер кассы ожидал UTF-32".

Ну или как вариант, эту фразу можно толковать как отсылку к default_charset, которая задает умолчания для тех же mbstring и iconv и плюс формирует кодировку для заголовка Content-type. Суть будет та же, но чисто формально ближе к "PHP использует".

И не нужно быть таким серьёзным, не корову мы тут продаём :)

Тем, что оно может быть правильным, а может быть и нет.

И не нужно быть таким серьёзным, не корову мы тут продаём :)

Разберусь сам.

Ваш кассовый аппарат подключен к той же машине где поднят web сервер с php?

Я писал управление драйвером для мониторинга этих касс под виндой, может дело в этом, и таких сложностей не испытывал. К этим кассам идёт подробное описание работы с драйвером на С, питоне, С++,С#,go,java, delphi, почему выбрали именно С- не очень понятно.

Не очень понятно, что именно вам непонятно. Вы же сами пишете

К этим кассам идёт подробное описание работы с драйвером на С

Ну вот они и взяли этот драйвер на C, и обращаются к нему из РНР. Что здесь непонятного?

Т.к. в посте не указана ОС, то не понятно в чем было затруднение. Не знаю как php может работать с библами и драйверами в линукс, в винде через СОМ объект взаимодействие нативно как я вижу, и не важно, на чем написан там драйвер или библиотека.

Так же интегрировал CRM на php с кассой Атол. Но использовал веб-сервис Атол для работы с кассами. Пока не очень понятен профит от FFI

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации