Внешняя интеграция
Раздел предназначен для разработчиков кассовых компаний и компаний интеграторов, предоставляющий подробное руководство по использованию и интеграции решения ARIASOFT (оборудование TACTILION) с ККМ клиентов. Поддерживается работа оборудования с внешними кассами под управлением ОС Windows и ОС Linux.
Общие требования и технические условия
Операционная система одной из следующих версий:
ОС | Версия |
|---|---|
Windows (32-х или 64-х разрядная) | 8, 8.1, 10, 11 |
CentOS | 7 |
Red Hat Enteprise Linux | 7, 8, 9 |
Debian | 10, 11 |
Ubuntu | 18.04 LTS, 20.04, 22.04 LTS |
Описание API
API библиотеки asapecr.dll
В библиотеке ASAPEcr реализованы функции:
TRPOSX_Init
TRPOSX_Proc
TRPOSX_GetRsp
TRPOSX_Close
При запуске контрольно-кассовой машины (ККМ) необходимо произвести инициализацию библиотеки asapecr.dll. Для этого нужно вызвать функцию TRPOSX_Init(). Этот процесс включает в себя выделение необходимых ресурсов, запуск сервисов и установление соединения с POS-терминалом.
Для выполнения операций следует использовать функцию TRPOSX_Proc(), которая обеспечивает корректное проведение транзакций.
По завершении операции результаты можно получить с помощью функции TRPOSX_GetRsp().
Когда работа с ККМ завершена, необходимо выполнить деинициализацию системы, вызвав функцию TRPOSX_Close(). Это действие освобождает все задействованные ресурсы и останавливает работу сервисов TRPOSX.
Описание функции TRPOSX_Init
Пример использования функции в коде:
Параметр:
path_to_cfg — название файла конфигурации.
Инициализация внутреннего состояния библиотеки asapecr.dll включает в себя подготовку всех необходимых функций для взаимодействия с пользователем. В процессе инициализации происходит выделение ресурсов, запуск сервисов TRPOSX и установление соединения с POS-терминалом. Этот процесс должен быть выполнен однократно при запуске контрольно-кассовой машины (ККМ).
Возвращаемые значения:
Код ошибки | Описание |
|---|---|
0 | Ошибок нет |
1 | Инициализация не удалась |
Описание функции TRPOSX_Proc
Пример использования функции в коде:
Запускает операцию согласно данным из входных параметров. Вызывается каждый раз для начала операции.
Параметры:
in_params — указатель на список входных параметров, завершенный нулем.
len_out_params — адрес переменной, куда будет помещен размер выходных данных.
len_receipt — адрес переменной, куда будет помещен размер чека.
Возвращаемые значения:
Код ошибки | Описание |
|---|---|
0 | Ошибок нет |
1 | Неподдерживаемая операция |
-1 | Ошибка при выполнении операции |
Состав полей буфера входных параметров (на который указывает in_params):
Операция | Поля буфера |
|---|---|
1. Оплата (PUR) | MessageID, ECRnumber, TransactionAmount, Currency, MerchantNo, Token |
2. Возврат (REF) | MessageID, ECRnumber, ECRReceiptNumber, TransactionAmount, Currency, MerchantNo, TrxID, Token |
3. Отмена (VOI) | MessageID, ECRnumber, ECRReceiptNumber, TransactionAmount, Currency, MerchantNo, TrxID, Token |
4. Сверка итогов (STL) | MessageID, ECRnumber |
5. Чтение журнала (JRN) | MessageID, ECRnumber, ECRReceiptNumber, MerchantNo |
6. Печать отчета (SRV) | MessageID, SRVsubfunction, ECRnumber, ECRReceiptNumber, MerchantNo |
7. Аварийная отмена (EVO) | MessageID |
Для операции Отмена в ECRReceiptNumber нужно передавать поле InvoiceNumber, полученное при проведении операции Оплата.
Для операции Возврат нужно заполнять в поле TrxID поле RRN, полученное при проведении операции Оплата.
В операциях Сверка Итогов и Печать Отчёта поле ECRReceiptNumber не является обязательным.
Операция Аварийная Отмена работает только для отмены последней выполненной Оплаты или последнего выполненного Возврата, без запроса дополнительных данных о номере чека. Опционально можно указать MerchantNo и TRN.
Устройство буфера
Как это работает:
Буфер входных параметров — это строка, содержащая параметры, которые передаются в функцию для выполнения определенной операции. Параметры передаются в виде строки, где каждый параметр представлен в формате ключ=значение, и параметры разделены символом новой строки \n.
Формат строки:
Параметры передаются в виде строки, где каждый параметр записан в формате ключ=значение.
Параметры разделены символом новой строки \n.
Строка завершается нулевым символом \0
Пример содержимого:
MessageID=PUR: Идентификатор сообщения, указывающий на тип операции (например, покупка).
ECRnumber=01: Номер кассового аппарата.
ECRReceiptNumber=0000000001: Номер чека.
TransactionAmount=000000000100: Сумма транзакции в минимальных единицах валюты (например, в копейках для рублей).
Использование в функции:
TRPOSX_Proc принимает этот буфер как входной параметр.
len_out_params и len_receipt — это указатели на переменные, в которые функция запишет размеры выходных данных и чека соответственно.
Передача данных: Буфер in_params передается в функцию TRPOSX_Proc, которая обрабатывает входные параметры и выполняет операцию.
Обработка: Функция анализирует строку, извлекает параметры и использует их для выполнения операции.
Результат: Если операция успешна, функция возвращает 0, и размеры выходных данных и чека записываются в len_out_params и len_receipt.
Описание полей:
Поле | Описание |
|---|---|
MessageID | Операция |
ECRnumber | Идентификатор кассы |
ECRReceiptNumber | Идентификатор транзакции (номер чека, использующийся в операции Отмена). |
TransactionAmount | Сумма операции |
Currency | Код валюты |
SRVsubfunction | Номер отчета |
InvoiceNumber | Номер чека терминальной операции |
TrxID | RRN, идентификатор транзакции на стороне финансового хоста. |
MerchantNo | Идентификатор продавца, по которому будут проходить операции |
TRN | Уникальный номер транзакции на стороне внешнего устройства (на стороне кассы). Заполняется кассой и контролируется кассой вдальнейшем для получения информации по операции JRN в поле ECRReceiptNumber) |
Token | Токен транзакции для контроля операции на стороне бэкенда/процессинга. Другими словами, это идентификатор транзакции получаемый от некого стороннего процессинга, который нужен для дальнейшего отслеживания им данной транзакции. |
Поле TrxID используется в запросе для операции Возврат.
В операциях Сверка Итогов и Печать Отчёта поле ECRReceiptNumber не является обязательным, но используется в операции Отмена для передачи номера чека оригинальной транзакции, которое было получено в ответе в поле InvoiceNumber.
Поле ECRReceiptNumber используется в операции Отмена для передачи номера чека оригинальной транзакции, которое было получено в ответе в поле InvoiceNumber.
Для Возврата нужно заполнять в поле TrxID поле RRN полученное при Оплате.
Поле | Описание |
|---|---|
MessageID | Операция |
ECRnumber | Идентификатор кассы |
ECRReceiptNumber | Идентификатор транзакции |
TransactionAmount | Сумма операции |
Currency | Код валюты |
SRVsubfunction | Номер отчета |
InvoiceNumber | Номер чека терминальной операции |
TrxID | Уникальный идентификатор транзакции (RRN) |
MerchantNo | Идентификатор продавца, по которому будут проходить операции |
Token | Уникальный идентификатор операции (данное поле формируется кассой и используется вдальнейшем для получения информации по операции в операции JRN в поле ECRReceiptNumber) |
Значения MessageID для операций:
Операция | MessageID |
|---|---|
Оплата | PUR |
Возврат | REF |
Отмена | VOI |
Сверка итогов | STL |
Чтение журнала | JRN |
Печать ответа | SRV |
Значения SRVsubfunction:
Вид отчета | SRVsubfunction | Соответствующие значения в десятеричной системе исчисления |
|---|---|---|
Краткий с сортировкой по дате | 0x0F | 15 |
Детальный с сортировкой по эмитенту | 0x0E | 14 |
Детальный с сортировкой по дате | 0x0D | 13 |
Возвращаемые параметры:
Не все параметры, указанные в списке ниже, могут возвращаться после выполнения операции, так как не все являются обязательными для этого.
Параметр | Описание |
|---|---|
Approve | Возвращает значение 'Y', если операция выполнена, 'N', если нет. |
ResponseCode | Код ошибки выполнения операции на устройстве (0 - ошибок нет, если не 0, то остальные поля могут быть не заполнены!) |
TransactionAmount | Сумма операции |
Currency | Код валюты операции |
ProcessingCode | Код ошибки выполнения операции в процессинге |
Success | Дополнительное поле ответа об успешности операции, характерное только для терминалов на Android (0 - операция не выполнена). Значение нужно анализировать только при Approve = "Y' и ResponseCode = 0 |
ErrorReason | Ошибка обработки транзакции на устройстве, характерное только для терминалов на Android (0 - ошибок нет). |
MerchantNo | Идентификатор продавца, по которому проходила операция |
TerminalID | Номер терминала |
POSEntryMode | Способ ввода карты |
PAN | Маскированный PAN карты |
AuthorizationID | Код авторизации |
RRN | RRN операции |
CardHash | Хэш карты |
Date и Time | Оригинальные дата и время совершения операции на хосте |
OrigTRN | Уникальный номер оригинальной транзакции со стороны внешнего устройства. Используется для операции Чтение журнала(JRN), как идентификатор транзакции, которую надо получить. |
Взаимодействия на стороне ПО с маскировкой PAN нет, PAN карты маскируется на стороне сервера и обычно выглядит как "************8371".
Поле TRN добавляется в ответ от устройства (туда записывается RRN).
Параметр | Описание |
|---|---|
Approve | Возвращает значение 'Y', если операция выполнена, 'N', если нет. |
ResponseCode | Код ошибки выполнения операции на устройстве (0 - ошибок нет, если не 0, то остальные поля могут быть не заполнены!) |
TransactionAmount | Сумма операции |
Currency | Код валюты операции |
ProcessingCode | Код ошибки выполнения операции в процессинге |
Success | Дополнительное поле ответа об успешности операции, характерное только для терминалов на Android (0 - операция не выполнена). Значение нужно анализировать только при Approve = "Y' и ResponseCode = 0 |
ErrorReason | Ошибка обработки транзакции на устройстве, характерное только для терминалов на Android (0 - ошибок нет). |
MerchantNo | Идентификатор продавца, по которому проходила операция |
InvoiceNumber | Номер чека терминальной операции |
TerminalID | Номер терминала |
POSEntryMode | Способ ввода карты |
PAN | Маскированный PAN карты |
AuthorizationID | Код авторизации |
RRN | RRN операции |
CardHash | Хэш карты |
Date и Time | Оригинальные дата и время совершения операции на хосте |
Взаимодействия на стороне ПО с маскировкой PAN нет, PAN карты маскируется на стороне сервера и обычно выглядит как "************8371".
Поле TRN добавляется в ответ от устройства (туда записывается RRN).
Описание функции TRPOSX_GetRsp
Пример использования функции в коде:
Вызывается после завершения операции для получения результатов.
Параметры:
out_params — указатель на буфер для выходных параметров. ККМ должна выделить память размером len_out_params под этот буфер.
receipt — указатель на буфер для чека. ККМ должна выделить память размером len_receipt под этот буфер.
Возвращаемые значения:
Код ошибки | Описание |
|---|---|
0 | Ошибок нет |
1 | Ошибка при выполнении функции |
Описание функции TRPOSX_Close
Вызывается при завершении работы ККМ. При этом происходит освобождение ресурсов, остановка сервисов TRPOSX, разрыв связи с POS-терминалом.
Код ошибки | Описание |
|---|---|
0 | Ошибок нет |
1 | Ошибка при выполнении функции |
Пример работы с библиотекой
Описание Эмулятора
Эмулятор кассы
Актуальная версия эмулятора передается совместно с кассовой библиотекой ASAPEcr файл «pyecr.py».
В папке присутвуют следующие файлы:
pyecr – тестовый скрипт для запуска операции на пинпаде без использования 1С. Предполагаем, что поможет инженеру подключить оборудование Tactilion к кассе и проверить корректность выполненных настроек.
input – файл с данными для тестовой операции (для скрипта pyecr)
setup – файл с настройками формируемый при регистрации и настройке драйвера 1С AsapecrAT. Допускается ручная корректировка для использования с pyecr
Для работы эмулятора нужна 32 разрядная версия python 3. Можно использовать python-3.4.3.
Для работы кассовой библиотеки нужен распространяемый компонент Visual Studio 2012 (VC++ 11.0) Update 4 (ver 11.0.61030.0).
Для работы эмулятора нужна библиотека "asapecr.dll" и файлы необходимые для её работы (setup.txt и сертификаты). Параметры операции указываются в «input.txt».
Примеры ответов на операции
Пример информации в чеке после выполнения одной из операций:

Операция "Оплата"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
MessageID=PUR | Approve=Y |
Операция "Возврат"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
MessageID=REF | Approve=Y |
Операция "Отмена"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
MessageID=VOI | Approve=Y |
Операция "Сверка итогов"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
MessageID=STL | Approve=Y |
Операция "Чтеные журнала"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
Операция "Печать отчета"
Входные параметры | Результат и возвращаемые параметры |
|---|---|
MessageID=SRV | Approve=Y |
Актуальные ссылки
Ссылка на актуальный дистрибутив DEMO библиотеки, драйвера 1С и эмулятора:
ASAPEcr 0.43 1.0.36 - Ссылка
Архив содержит файлы библиотек, предназначенные под разные операционные системы:
Наименование файла | ОС |
|---|---|
asapecr.dll | Windows 32 |
asapecr_x64.dll | Windows 64 |
asapecr.so | Linux 64 |
Полезные ссылки:
Инструкция G201 - Ссылка
Инструкция по 1С и ASAP - Ссылка
Ссылки на инструкции ИКР