Ошибка No unity section defined...

Messages
1,600
Reaction score
288
Website
tehadm.ru
В один прекрасный день:rolleyes:, хотя прекрасным его не назовешь раздался звонок, который не предвещал ничего хорошего. Мои предположения оправдались. У клиента перестала работать оплата через терминал оплаты Альфа-Банка. А учесть, что касса одна, наплыв народа... Сами понимаете ситуацию.

В какой момент произошла ошибка:
со слов кассира: сначала была ошибка 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()

Далее буду писать кратко все что я делал, без воды:
  1. Запустил DualConnector и стал проверять связь с терминалом и связь с хостом. DualConnector стал падать при проверке.
  2. Зашел на офф сайт и скачал последнюю версию DualConnector.
  3. Как оказалось, удалить DualConnector тоже не совсем просто. Нужно в трее его закрыть и остановить службу, только после этого удалять.
  4. Установил новую версию. Dual Connector 2.x или Dual Connector 1.x ставить, тут ничего не посоветую. Ставьте и смотрите как работает. Я поставил Dual Connector 1.x. Перезагрузил кассу.
  5. Запустил DualConnector и проверил связь с терминалом и связь с хостом. Так же сделал Оплату и Отмену. Тут без происшествий:).
  6. Решил проверить оплату. Та же ошибка.
  7. В iikoOffice удалил Тип оплаты Альфа-Банк и забил его по новой.
  8. Фронт закрыл. Удалил Front.Api.PaymentSystem.DualConnector из папки C:\Program Files\iiko\iikoRMS\Front.Net\Plugins
  9. Пошел на официальный 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.
  10. Создал папку 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 терминала.
  11. Запустил фронт пробую сделать оплату и теперь ловлю другую ошибку: Тип оплаты Альфа-Банк не настроен:cry::cry::cry:. И во фронте в пункте Плагины я не вижу DualConnctor.
  12. И тут я начинаю паниковать... :rolleyes: ... шучу. Но на самом деле я уже на знал что делать...
  13. В офф документации нахожу пункт, который гласит:
    После запуска iikoFront плагин регистрируется, создается его файл конфигурации в папке %AppData%\iiko\CashServer\PluginConfigs.
    У меня возникла мысль, что от старого плагина осталась конфигурация. Я удаляю папку, которая отвечает за данный плагин, хотя она была пустая.
  14. Снова удаляю плагин и закидываю Front.Api.PaymentSystem.DualConnector-1.0.0.18-2021.07.21.zip. Незабываю прописать ID.
  15. Перезагружаю сервер!
  16. Запускаю фронт и ... чудо. Оплата через терминал стала проходить.
  17. Для проверки выключаю кассу и все оборудование. Запускаю. Делаю оплату, все работает.

В качестве итога:
- что произошло, я так и не смог понять. То ли сбой на уровне терминала, то ли в iiko.
- в процессе изучения выяснил, что для использвания плагина Front.Api.PaymentSystem.DualConnector, надо иметь лицензию. Это можно проверить в iikoOffice.
- техподдержка терминала оплаты Альфа Банка - никакущая. Что сам Альфа Банк, что его сервис партнеры. Последние, когда им звонишь, помоему ничего не знают и боятся звонков :cry: . А приходящие сотрудники, кроме установки и переустановки DualConnector ничего не знают.
- много полезной информации можно почерпнуть на офф wiki.
- может быть половина моих действий были лишними, но я пытался разобраться как решить проблему.
- после установки DualConnector, систему желаьельно перезагрузить.
- после удаления DualConnector, надо удалить директорию, куда он устанавливался.
 

Attachments

  • photo_2022-12-10_15-12-22.jpg
    photo_2022-12-10_15-12-22.jpg
    109.3 KB · Views: 6
Last edited:
Back
Top