Модуль автоматической кассы (режим POS-терминала)
Терминология
Терминал сканирования - касса или иной программный комплекс на базе 1С для сканирования товаров и формирования заказа. Процессинговый сервер — сервер на базе ПО 1С. Предназначен для приема отчетной информации от расчетного терминала.
Конфигурация модуля
Конфигурация модуля выполняется в меню POS-терминал режима конфигурирования. Доступны следующие параметры:
- Использовать модуль POS - активирует работу модуля.
- Заголовок - наименование иконки (при использовании нескольких модулей)
- ID терминала - строка идентификации термина на процессинговом сервере.
- Терминал сканирования->требовать и проверять логин и пароль - активирует авторизацию терминала сканирования по логину и паролю.
- Процессинговый сервер->url сервера - url сервера для взаимодействию по протоколу SOAP вида https://<servername>/ , без пути или параметров запроса.
- Процессинговый сервер->Использовать логин и пароль - активирует авторизацию на процессинговом сервере по указанным логину и паролю.
Программирование и настройка терминала сканирования
Терминал сканирования осуществляет взаимодействие с расчетным терминалом, инициируя и контролируя процесс оплаты. Взаимодействие осуществляется посредством протокола SOAP с использованием стандартных средств 1C.
Используются следующие операции:
Pay — инициирует процесс оплаты. Аргументы:
- уникальный номер операции (строка)
- сумма к оплате в копейках (целое число)
- реестр заказа, список из элементов: артикул (id), наименование (name), количество (count), цена (price). (структура Реестр заказа)
Возвращаемое значение:
Результат операции: 0 - операция принята к исполнению, -1 — неверные параметры, -2 терминал занят другой операцией, -3 - сессия с таким номером операции уже существует
Уникальный номер операции должен генерироваться для каждой платежной сессии. Расчетный терминал учитывает уникальность операций на предмет повторного запуска сессии в течении суток, возвращая для дубликатов ответ -3 - сессия с таким номером операции уже существует.
Paypoll - опрос состояния платежа
Аргументы:
- уникальный номер операции (строка)
Возвращаемое значение:
- Статус операции/результат платежа (целое число). Статусы: -1 — неверные параметры, -4 - сессия не найдена, 0 - успешно оплачена, 1 - в процессе оплаты, 2 - отменена
Пример кода
&НаСервере Функция ЗапросPay () // Указывается ip-адрес терминала Определения = Новый WSОпределения ("http://192.168.1.102:8080/?wsdl", "stamp", "stampsoft"); Прокси = Новый WSПрокси (Определения, "http://www.stampsoft.ru/pos", "pos", "pos"); Прокси.Пользователь = "stamp"; Прокси.Пароль = "stampsoft"; СтрокаТип = Прокси.ФабрикаXDTO.Пакеты.Получить ("http://www.w3.org/2001/XMLSchema").Получить("string"); ЦелоеТип = Прокси.ФабрикаXDTO.Пакеты.Получить ("http://www.w3.org/2001/XMLSchema").Получить("int"); // Метка времени в качестве уникального номера операции УникальныйНомерОперации = Прокси.ФабрикаXDTO.Создать(СтрокаТип, ТекущаяДата ()); Сумма = Прокси.ФабрикаXDTO.Создать(ЦелоеТип, 1000); // 1000 коп // Строка заказа из реестра заказа СтрокаЗаказаТип = Прокси.ФабрикаXDTO.Пакеты.Получить ("http://www.stampsoft.ru/pos").Получить("orderitem"); СтрокаЗаказа0 = Прокси.ФабрикаXDTO.Создать(СтрокаЗаказаТип); СтрокаЗаказа0.id = "id0"; СтрокаЗаказа0.name = "name0"; СтрокаЗаказа0.count = 1; СтрокаЗаказа0.cost = 100; СтрокаЗаказа1 = Прокси.ФабрикаXDTO.Создать(СтрокаЗаказаТип); СтрокаЗаказа1.id = "id1"; СтрокаЗаказа1.name = "name1"; СтрокаЗаказа1.count = 2; СтрокаЗаказа1.cost = 200; // Заказ (реестр) ЗаказТип = Прокси.ФабрикаXDTO.Пакеты.Получить ("http://www.stampsoft.ru/pos").Получить("order"); Заказ = Прокси.ФабрикаXDTO.Создать(ЗаказТип); Заказ.orderitem.Добавить (СтрокаЗаказа0); Заказ.orderitem.Добавить (СтрокаЗаказа1); Значение = Прокси.Pay (УникальныйНомерОперации, Сумма, Заказ); Возврат Значение КонецФункции &НаСервере Функция ЗапросPayPoll () Определения = Новый WSОпределения ("http://192.168.1.102:8080/?wsdl", "stamp", "stampsoft"); Прокси = Новый WSПрокси (Определения, "http://www.stampsoft.ru/pos", "pos", "pos"); Прокси.Пользователь = "stamp"; Прокси.Пароль = "stampsoft"; ТипПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить ("http://www.w3.org/2001/XMLSchema").Получить("string"); Параметр = Прокси.ФабрикаXDTO.Создать(ТипПараметра, "uid0"); Значение = Прокси.PayPoll (Параметр); Возврат Значение КонецФункции
Программирование и настройка процессингового сервера
Расчетный терминал взаимодействует с процессинговым сервером 1С по протоколу SOAP, задействуя встроенный механизм веб-сервисов 1С.
Для настройки веб-сервиса:
- Установите веб-сервер (apache2 или IIS), руководствуясь документацией веб-сервера и 1С.
- Импортируйте пакет XDTO пакет pos.xsd (прикреплён к статье): в конфигурации Общие->XDTO-пакеты->(правой кнопкой)Импорт XML-схемы->укажите файл pos.xsd. Полученный объект (ПакетXDTO1) переименуйте в pos.
- Добавьте веб-сервис зщы: в конфигурации Общие->Web-сервисы->->(правой кнопкой)добавить. Переименуйте веб-сервис в pos.
- Во вкладке Прочее веб-сервиса stamp выберите дополнительные пакеты XDTO: установите галочку напротив http://www.stampsoft.ru/pos
- Во вкладке операции веб-сервиса добавьте указанные ниже операции и параметры к каждой операции. В параметрах каждой операции укажите имя метода такое же, как и имя операции. В параметрах каждой операции также укажите тип возвращаемого значения. Стандартные типы выбраются из пакета http://www.w3.org/2001/XMLSchema (boolean, string, int), остальные - из пакета http://www.stampsoft.ru/pos (order)
Операции Register
(Имя - Register, имя операции - Register). Операция регистрации платежа. Тип возвращаемого значения: boolean. Параметры:
- terminal_id (string) - номер расчетного терминала (из конфигурации)
- uid (string) - уникальный номер сессии/платежа
- amount (int) - сумма к оплате, запрошенная терминалом сканирования
- pay_amount (int) - принятая сумма к оплате
- charge_amount (int) - сумма сдачи
- rest_amount(int) - сумма невыданной сдачи
- pay_type (int) - тип платежа (0 - наличные, 1 - карты)
- order (order из http://www.stampsoft.ru/pos) - заказ
- time (int) - время операции (unixtime)
Attachments (1)
- pos.xsd (654 bytes) - added by 9 years ago.
Download all attachments as: .zip