В один прекрасный день, хотя прекрасным его не назовешь раздался звонок, который не предвещал ничего хорошего. Мои предположения оправдались. У клиента перестала работать оплата через терминал оплаты Альфа-Банка. А учесть, что касса одна, наплыв народа... Сами понимаете ситуацию.
В какой момент произошла ошибка:
со слов кассира: сначала была ошибка 13, потом закончилась лента в фискальном регистраторе, она ее поменяла. И после этого когда кассир в iikoFront выбирал способ оплаты Банковские карты, появлялась ошибка:
Данную ошибку я исправлял долго (вечер того дня и пол дня следующего). Сказать конкретно из-за чего она произошла я не могу. И сказать точно, как я ее исправил не могу. Слишком многое пепепробовал. Но опишу те действия, которые я делал.
Начну:
Проблема произошла примерно в 14.00. Стал конечно же изучать логи фронт. Кстати, очень удобно это делать с помощью LogViewPlus.
Далее буду писать кратко все что я делал, без воды:
В качестве итога:
- что произошло, я так и не смог понять. То ли сбой на уровне терминала, то ли в iiko.
- в процессе изучения выяснил, что для использвания плагина Front.Api.PaymentSystem.DualConnector, надо иметь лицензию. Это можно проверить в iikoOffice.
- техподдержка терминала оплаты Альфа Банка - никакущая. Что сам Альфа Банк, что его сервис партнеры. Последние, когда им звонишь, помоему ничего не знают и боятся звонков . А приходящие сотрудники, кроме установки и переустановки DualConnector ничего не знают.
- много полезной информации можно почерпнуть на офф wiki.
- может быть половина моих действий были лишними, но я пытался разобраться как решить проблему.
- после установки DualConnector, систему желаьельно перезагрузить.
- после удаления DualConnector, надо удалить директорию, куда он устанавливался.
В какой момент произошла ошибка:
со слов кассира: сначала была ошибка 13, потом закончилась лента в фискальном регистраторе, она ее поменяла. И после этого когда кассир в iikoFront выбирал способ оплаты Банковские карты, появлялась ошибка:
При проведении оплаты на сумму ... типом Альфа-Банк (платежная система "dualConnector") возникла ошибка "No unity section defined". Обратитесь к администратору для выяснения причины проблемы.
Данную ошибку я исправлял долго (вечер того дня и пол дня следующего). Сказать конкретно из-за чего она произошла я не могу. И сказать точно, как я ее исправил не могу. Слишком многое пепепробовал. Но опишу те действия, которые я делал.
- На кассе установлен DualConnector + Api плагин - Front.Api.PaymentSystem.DualConnector для iiKo.
- Перебоев с интернетом не было.
- Версия iiko: 6.2.2015.0
Начну:
Проблема произошла примерно в 14.00. Стал конечно же изучать логи фронт. Кстати, очень удобно это делать с помощью LogViewPlus.
[2022-12-09 14:40:59,981] WARN [97] - Exchange error! Code: 13; Description: Connection error.
Code:
[2022-12-09 14:43:15,125] ERROR [ 6] - System.InvalidOperationException: No unity section defined
Server stack trace:
в Resto.Framework.Common.UnityHelper.GetFactoryContainer() в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\Helpers\UnityHelper.cs:строка 27
в Resto.Framework.Common.LogWrapper.get_Log() в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\Log\LogWrapper.cs:строка 17
в Resto.Framework.Xml.ObjectStateSaver.LoadObject[T](String fileName, Type restoredObjectType, T& restoredObject) в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\XML\ObjectStateSaver.cs:строка 206
в Resto.Framework.Xml.ObjectStateSaver.LoadObjectState[T](String fileName, T& restoredObject) в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\XML\ObjectStateSaver.cs:строка 155
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorData.Load(String dir) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorData.cs:строка 68
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorData.get_Instance() в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorData.cs:строка 43
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorOperationHelper.PayOut(Decimal sum) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorOperationHelper.cs:строка 100
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorPlugin.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorPlugin.cs:строка 135
в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
в System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
в Resto.Front.Api.V5.IExternalPaymentProcessor.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar)
в Resto.Front.Api.V5.Payment.PaymentProcessorWrapper.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IPluginPrinter printManager, PluginViewManager viewManager, IPluginPaymentDataContext paymentContext, IPluginProgressBar progressBar) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\V5\Payment\PaymentProcessorWrapper.cs:строка 50
в Resto.Front.Api.ApiExtensionsService.PerformPaymentAction(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, ActionType type, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\ApiExtensionsService.cs:строка 116
Code:
[2022-12-09 15:42:23,262] WARN [ 8] - Cannot signal “Resto.Front.Api.DeliverySms” to shutdown: Ошибка при обработке запроса на сервере: System.Threading.ThreadAbortException: Поток находился в процессе прерывания.
в System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
в System.Runtime.Remoting.Channels.Ipc.IpcServerTransportSink.ServiceRequest(Object state)
Code:
[2022-12-09 21:29:42,159] ERROR [ 6] [PaymentScreenController:PaymentOperationFailed] - Payment operation failed
Resto.Framework.Common.RestoException: При проведении оплаты на сумму 5,00 р. типом оплаты «Альфа-банк» (платежная система «dualConnector») возникла ошибка.
«No unity section defined»
Обратитесь к администратору для выяснения причины проблемы. ---> System.InvalidOperationException: No unity section defined
Server stack trace:
в Resto.Framework.Common.UnityHelper.GetFactoryContainer() в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\Helpers\UnityHelper.cs:строка 27
в Resto.Framework.Common.LogWrapper.get_Log() в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\Log\LogWrapper.cs:строка 17
в Resto.Framework.Xml.ObjectStateSaver.LoadObject[T](String fileName, Type restoredObjectType, T& restoredObject) в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\XML\ObjectStateSaver.cs:строка 206
в Resto.Framework.Xml.ObjectStateSaver.LoadObjectState[T](String fileName, T& restoredObject) в I:\BuildAgent\work\release-installer\dev\Framework\dev\Net\Resto.Framework\Src\Common\XML\ObjectStateSaver.cs:строка 155
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorData.Load(String dir) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorData.cs:строка 68
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorData.get_Instance() в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorData.cs:строка 43
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorOperationHelper.PayOut(Decimal sum) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorOperationHelper.cs:строка 100
в Resto.Front.Api.PaymentSystem.DualConnector.DualConnectorPlugin.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api.PaymentSystem.DualConnector\DualConnectorPlugin.cs:строка 135
в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
в System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
в Resto.Front.Api.V5.IExternalPaymentProcessor.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar)
в Resto.Front.Api.V5.Payment.PaymentProcessorWrapper.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IPluginPrinter printManager, PluginViewManager viewManager, IPluginPaymentDataContext paymentContext, IPluginProgressBar progressBar) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\V5\Payment\PaymentProcessorWrapper.cs:строка 50
в Resto.Front.Api.ApiExtensionsService.PerformPaymentAction(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, ActionType type, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\ApiExtensionsService.cs:строка 116
--- Конец трассировки внутреннего стека исключений ---
в Resto.Front.Api.ApiExtensionsService.PerformPaymentAction(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, ActionType type, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\ApiExtensionsService.cs:строка 171
в Resto.Front.Api.ApiExtensionsService.Pay(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Api\ApiExtensionsService.cs:строка 62
в Resto.CashServer.PaymentSystem.ExternalPaymentItem.PerformTransaction(IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.CashServer\PaymentSystem\ExternalPaymentItem.cs:строка 34
в Resto.CashServer.PaymentSystem.CardPaymentItem`1.ExecuteProcessingOperation(IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.CashServer\PaymentSystem\CardPaymentItem.cs:строка 167
в Resto.CashServer.PaymentSystem.PaymentItem.Process(IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.CashServer\PaymentSystem\PaymentItem.cs:строка 227
в Resto.CashServer.Services.OrderService.ProcessPaymentsItems(IBaseOrderBuilder orderBuilder, IUser cashier, ILockedObjectsToken token, ICafeSession cafeSession, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.CashServer\Services\OrderService.cs:строка 1271
в Resto.CashServer.Services.OrderService.ProcessOrderClose(IBaseOrderBuilder orderBuilder, ICafeSession cafeSession, IOrderCloseParameters closeParameters, ILockedObjectsToken token, Action`1 changeProgressBarMessage) в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.CashServer\Services\OrderService.cs:строка 503
в Resto.Front.Controllers.PaymentScreenController.<>c__DisplayClass75_0.<CloseOrder>b__3() в I:\BuildAgent\work\release-installer\dev\iikoFront.Net\Resto.Front.Controllers\PaymentScreenController.cs:строка 1510
в System.Threading.Tasks.Task.InnerInvoke()
в System.Threading.Tasks.Task.Execute()
Далее буду писать кратко все что я делал, без воды:
- Запустил DualConnector и стал проверять связь с терминалом и связь с хостом. DualConnector стал падать при проверке.
- Зашел на офф сайт и скачал последнюю версию DualConnector.
- Как оказалось, удалить DualConnector тоже не совсем просто. Нужно в трее его закрыть и остановить службу, только после этого удалять.
- Установил новую версию. Dual Connector 2.x или Dual Connector 1.x ставить, тут ничего не посоветую. Ставьте и смотрите как работает. Я поставил Dual Connector 1.x. Перезагрузил кассу.
- Запустил DualConnector и проверил связь с терминалом и связь с хостом. Так же сделал Оплату и Отмену. Тут без происшествий.
- Решил проверить оплату. Та же ошибка.
- В iikoOffice удалил Тип оплаты Альфа-Банк и забил его по новой.
- Фронт закрыл. Удалил Front.Api.PaymentSystem.DualConnector из папки
C:\Program Files\iiko\iikoRMS\Front.Net\Plugins
- Пошел на официальный FTP iiko и скачал оттуда все имеющиеся плагины Front.Api.PaymentSystem.DualConnector. А было их там два: Front.Api.PaymentSystem.DualConnector-1.0.0.18-2021.07.21.zip и Front.Api.PaymentSystem.DualConnector-1.0.0.28-2022.10.21.zip.
- Создал папку Front.Api.PaymentSystem.DualConnector (
C:\Program Files\iiko\iikoRMS\Front.Net\Plugins
) и в нее забросил все файлы из папки Front.Api.PaymentSystem.DualConnector-1.0.0.28-2022.10.21.zip. Прописал в конфиг файл плагина - ID терминала. - Запустил фронт пробую сделать оплату и теперь ловлю другую ошибку: Тип оплаты Альфа-Банк не настроен. И во фронте в пункте Плагины я не вижу DualConnctor.
- И тут я начинаю паниковать... ... шучу. Но на самом деле я уже на знал что делать...
- В офф документации нахожу пункт, который гласит:
После запуска iikoFront плагин регистрируется, создается его файл конфигурации в папке %AppData%\iiko\CashServer\PluginConfigs. - Снова удаляю плагин и закидываю Front.Api.PaymentSystem.DualConnector-1.0.0.18-2021.07.21.zip. Незабываю прописать ID.
- Перезагружаю сервер!
- Запускаю фронт и ... чудо. Оплата через терминал стала проходить.
- Для проверки выключаю кассу и все оборудование. Запускаю. Делаю оплату, все работает.
В качестве итога:
- что произошло, я так и не смог понять. То ли сбой на уровне терминала, то ли в iiko.
- в процессе изучения выяснил, что для использвания плагина Front.Api.PaymentSystem.DualConnector, надо иметь лицензию. Это можно проверить в iikoOffice.
- техподдержка терминала оплаты Альфа Банка - никакущая. Что сам Альфа Банк, что его сервис партнеры. Последние, когда им звонишь, помоему ничего не знают и боятся звонков . А приходящие сотрудники, кроме установки и переустановки DualConnector ничего не знают.
- много полезной информации можно почерпнуть на офф wiki.
- может быть половина моих действий были лишними, но я пытался разобраться как решить проблему.
- после установки DualConnector, систему желаьельно перезагрузить.
- после удаления DualConnector, надо удалить директорию, куда он устанавливался.
Attachments
Last edited: