wiki:paypoint-pos

Модуль автоматической кассы (режим 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)
Last modified 9 years ago Last modified on Aug 6, 2015, 11:15:42 AM

Attachments (1)

Download all attachments as: .zip