Интеграция с терминалами UCS

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
dfedorchenko
Сообщения: 17
Зарегистрирован: 28 мар 2019, 17:51

Интеграция с терминалами UCS

Сообщение dfedorchenko » 28 мар 2019, 18:02

Здравствуйте!
Сегодня хотел купить 3 лицензии kkmserver для интеграции с терминалами UCS, но сотрудник тех поддержки UCS написал следующее предостерегающее письмо.
Обращу внимание, на мой конкретный вопрос он всё-таки не назвал дату тестирования и все выявленные ошибки.

ВОПРОС к Дмитрию Валерьевичу разработчику ККМ-сервера: был ли исправлен баг, который описан ниже?
Добрый день.
Я тестировал одно из решений на kkm-server.
Было поймано несколько проблем. Сейчас разработчик их устраняет.

Вам для примера:
API kkmserer’а списано с 1С. Во всех типовых конфигурациях 1С при сбое печати слип-чека делается автоматическая отмена оплаты. Кассир может пропустить сообщение и отдать товар бесплатно. (Это реально бывает, даже несмотря на то, что нет фискального чека!) При этом само API позволяет выйти из такой ситуации корректно.

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

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

С уважением,
Гуряев Георгий
Менеджер проектов
Блок «Процессинговые операции»
UCS
+7 (495) 956 4806 доб. 1149
guryaev.george@ucscards.ru
Пишу на форум, чтобы в сети был ответ. Наверняка я не один с таким вопросом.

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Интеграция с терминалами UCS

Сообщение Audim » 29 мар 2019, 01:38

UCS-сы тестируют не мое решение а конечное решение в связке с kkmserver
Почти все вопросы были к разработчикам тестируемой системы учета а не к kkmserver/
К kkmserver были вопросы по таймаутам команд - они все пофиксены.

API kkmserer’а списано с 1С.

Здесь дело не в том что "Списано с 1с" а в том что нужно предложить универсальное решение для всех протоколов эквайринга банков а не для одного USC.
Да в USC команд больше. Но в других протоколах эквайринга их нет - и соотвественно закладыватся на такие команды нельзя.

Во всех типовых конфигурациях 1С при сбое печати слип-чека делается автоматическая отмена оплаты. Кассир может пропустить сообщение и отдать товар бесплатно.
При этом само API позволяет выйти из такой ситуации корректно.


1. Это вопрос не к kkmserver и к протоколу а к реализации в 1с. Да, в 1с сообщение можно и не заметить.
2. Гуряев Георгий когда говорит про это скорее всего имеет в виду режим когда работа с эквайрингом в kkmserver идет через чеки - т.е. когда из учетной системы не подаются команды на эквайринг, а потаются только команды на регистрацию чеков, и из этой команды kkmserver вычленяет необходимость эквайринга и проводит его перед печатью чека.
Да, такой режим не такой гибкий как отдельная подача команд на эквайринг. Но это проблема именно учетных сисем - в том что они не умеют работать с эквайрингом и чтобы эквайринг хоть как-то работал и приходится делать такой костыль как работа эквайринга из чека.

И да, если учетную систему "затачивать" только на UCS то она получится более гибко. Но не универсально :(

dfedorchenko
Сообщения: 17
Зарегистрирован: 28 мар 2019, 17:51

Re: Интеграция с терминалами UCS

Сообщение dfedorchenko » 26 апр 2019, 08:36

Audim,
вопрос 1: сам kkmserver возвращает "ответ об успешной оплате" когда после оплаты картой в терминале распечатался чек в ФР?
или сразу после оплаты картой и до печати чека в ФР?

вопрос 2: посоветуйте, что нужно сделать, чтобы избежать ситуации когда при безналичной оплате в терминале kkmserver вернулся запрос об успешной транзакции, а потом по какой-либо причине транзакция отменилась.

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Интеграция с терминалами UCS

Сообщение Audim » 26 апр 2019, 18:18

1. Как я понял вопрос про режим эквайринга от чека?
В этом режиме придет ответ после регистрации чека и печати слипов.

2. Тогда нужно подавать команду эквайринга отдельно, а потом самим формировать команды на печать слипов и чеков.

dfedorchenko
Сообщения: 17
Зарегистрирован: 28 мар 2019, 17:51

Re: Интеграция с терминалами UCS

Сообщение dfedorchenko » 27 апр 2019, 13:44

Audim, благодарю за подсказку.
Вариант поставить тайм-аут 1 сек, а потом периодически запрашивать статус операции решит вопрос.

Единственное не понятно как быть в такой ситуации:
из CRM запрос в KKM-сервер отправлен, но не дошел (обрыв связи)
мы делаем запрос в ККМ-сервер на предмет статуса транзакции, если транзакция с данным номером не была получена ККМ-сервером в работу, то ККМ-сервер вернет ответ, что такой транзакции нет в работе?

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Интеграция с терминалами UCS

Сообщение Audim » 28 апр 2019, 03:25

>то ККМ-сервер вернет ответ, что такой транзакции нет в работе?
Да, именно.

mibuso
Сообщения: 14
Зарегистрирован: 11 июн 2018, 22:02

Re: Интеграция с терминалами UCS

Сообщение mibuso » 29 апр 2019, 22:23

Добрый день

Поясните, пожалуйста, какие именно команды нужно использовать для того, чтобы реализовать Вашу рекомендацию:
>> Тогда нужно подавать команду эквайринга отдельно, а потом самим формировать команды на печать слипов и чеков.

Предполагаю, что будет три команды:
1 IdCommand = KkmServer.PayByPaymentCard(Device, 0.01, 'TEST-01').Execute(ExecuteSuccess).IdCommand;
Команда вернет Id и что мне это дает? Как понять - прошла оплата или нет?
И заодно, хотелось бы уточнить, что такое - ReceiptNumber: Номер чека ? Откуда его взять?

2 PrintSlip()

3 RegisterCheck()

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Интеграция с терминалами UCS

Сообщение Audim » 01 май 2019, 01:38

Еще смену надо закрывть

vmajsuk
Сообщения: 1
Зарегистрирован: 01 май 2019, 03:05

Re: Интеграция с терминалами UCS

Сообщение vmajsuk » 01 май 2019, 03:08

Подскажите еще, пожалуйста, что передавать в параметр ReceiptNumber
Например, если часть оплаты наличными, а часть картой, нужно, я так понимаю, сделать следующее:

Код: Выделить всё

const check = await Execute({
	Command: 'RegisterCheck',
	Cash: cashAmount,
	ElectronicPayment: cardAmount,
	PayByProcessing: true,
	...restParams
})

Execute({
	Command: 'PayByPaymentCard',
	ReceiptNumber: check.CheckNumber,
	Amount: cardAmount,
	...restParams
})

dfedorchenko
Сообщения: 17
Зарегистрирован: 28 мар 2019, 17:51

Re: Интеграция с терминалами UCS

Сообщение dfedorchenko » 03 май 2019, 09:05

Audim писал(а):
01 май 2019, 01:38
Еще смену надо закрывть
Audim, я для чего и в какой момент нужно закрывать смену?
Здесь же задача распечатать чек после оплаты через терминал эквайринга.

Ответить