VitalyKravtsov2016 / OposWebkassa

OPOS driver for WebKassa
0 stars 0 forks source link

Ошибка сервера "Срок действия сессии истек". Смена токена #57

Closed Dafafgh closed 7 months ago

Dafafgh commented 10 months ago

На стенде заказчика возвращается ошибка "Срок действия сессии истек", из-за этого хотел попробовать сменить токен. Автоматически токен не сменился

[11.01.2024 19:35:05.648 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Cashboxes [11.01.2024 19:35:05.648 ] [00002640] [DEBUG] => {"Token":"0944cc84aa034e2db85e4f2711ca16ab"} [11.01.2024 19:35:06.780 ] [00002640] [DEBUG] <= {"Errors":[{"Code":2,"Text":"Срок действия сессии истек"}]} [11.01.2024 19:35:06.780 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Authorize [11.01.2024 19:35:06.780 ] [00002640] [DEBUG] => {"Login":"Adilkhan.seilbekov@petroretail.kz","Password":"Aa123456789!"} [11.01.2024 19:35:07.299 ] [00002640] [DEBUG] <= {"Data":{"Token":"0944cc84aa034e2db85e4f2711ca16ab"}} [11.01.2024 19:35:07.299 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Cashboxes [11.01.2024 19:35:07.299 ] [00002640] [DEBUG] => {"Token":"0944cc84aa034e2db85e4f2711ca16ab"} [11.01.2024 19:35:07.361 ] [00002640] [DEBUG] <= {"Errors":[{"Code":2,"Text":"Срок действия сессии истек"}]} [11.01.2024 19:35:07.361 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Authorize [11.01.2024 19:35:07.361 ] [00002640] [DEBUG] => {"Login":"Adilkhan.seilbekov@petroretail.kz","Password":"Aa123456789!"} [11.01.2024 19:35:07.599 ] [00002640] [DEBUG] <= {"Data":{"Token":"0944cc84aa034e2db85e4f2711ca16ab"}} [11.01.2024 19:35:07.599 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Cashboxes [11.01.2024 19:35:07.599 ] [00002640] [DEBUG] => {"Token":"0944cc84aa034e2db85e4f2711ca16ab"} [11.01.2024 19:35:07.646 ] [00002640] [DEBUG] <= {"Errors":[{"Code":2,"Text":"Срок действия сессии истек"}]} [11.01.2024 19:35:07.646 ] [00002640] [ERROR] OPOS_E_EXTENDED, 302, "Срок действия сессии истек"

SHTRIH-M-OPOS-1_2024.01.10.log SHTRIH-M-OPOS-1_2024.01.11.log

VitalyKravtsov2016 commented 10 months ago

Если посмотреть на лог, то видно, что драйвер получает новый токен, но он такой же как старый, поэтому ошибка не проходит. Мне кажется, что это ошибка сервера.

VYNesterenko commented 10 months ago

Виталий, добрый день. Провели совещание с вебкассой, Ардак настоятельно рекомендует по возможности исключить команды Cashboxes и Employee/List, насколько я понял: [11.01.2024 19:35:05.648 ] [00002640] [DEBUG] Post: http://localhost:1332/api/Cashboxes [27.12.2023 14:57:41.800 ] [00006196] [DEBUG] Post: https://devkkm.webkassa.kz/api/Employee/List

[12:57, 12.01.2024] Ардак Ахметов Webkassa: Здравствуйте Я ранее писал об этой ошибке. У вас на каждый запрос открывается новая сессия. Это ошибка появляется именно из-за этого. Сессию необходимо открыть только при начале работы системы и пользоваться ею все смену (24часа) В случае если пользователь закрыл приложение в середине смены и открыл снова открываете новую сессию. [12:59, 12.01.2024] Ардак Ахметов Webkassa: И второе. У вас постоянно происходят запросы списка пользователей и списка доступных касс. Сервер воспринимает это как спам и может блокировать такие сессии. На текущий момент ваша система постоянно отправляет запросы по списку кассиров и списку доступных касс. При этом сопровождая эти операции авторизацией на нашем сервере. Вот эти операции необходимо исключить

Ошибка локального сервера вебкассы безусловно есть, сессия похоже подвисла - это не наши проблемы, вебкасса разбирается с ней.

По поводу исключения команд прикладываю переписку с аргументами в пользу этого:

[15:19, 12.01.2024] Владимир Нестеренко: "Сервер жив, если вы получили токен." - в качестве сервера конкретно в нашем случае выступает локальный вебсервис, правильно? При старте кассового приложения мы должны быть уверены, что приложение в состоянии обслуживать клиента. Для этого мы используем команду Cashboxes. Почему это неправильно? [15:21, 12.01.2024] Ардак Ахметов Webkassa: Если локальный модуль отвалится в автономный режим(пропадет связь с сервером вебкассы) данная команда вернет ошибку. Она работает только в онлайн. [15:22, 12.01.2024] Ардак Ахметов Webkassa: это сервисная команда, которая требует связь с серверм [15:22, 12.01.2024] Владимир Нестеренко: а, теперь ясно [15:22, 12.01.2024] Владимир Нестеренко: тогда как нам проверить состояние локального сервера? [15:23, 12.01.2024] Ардак Ахметов Webkassa: авторизация [15:24, 12.01.2024] Владимир Нестеренко: но авторизацию стоит делать только раз в смену. Если приложение перегрузить в середине смены, то мы при старте приложения не сможем проверить состояние локального сервера? [15:25, 12.01.2024] Ардак Ахметов Webkassa: раз в смену при запуске программы [15:25, 12.01.2024] Ардак Ахметов Webkassa: если у вас произошла перезагрузка приложения авторизоваться рекомендуется в любом случае

VitalyKravtsov2016 commented 10 months ago

https://github.com/VitalyKravtsov2016/OposWebkassa/releases/tag/0.50

VYNesterenko commented 10 months ago

Виталий, благодарю! Правда я не увидел попытки авторизации при запуске приложения, но Cashboxes более не отправляются.

Dafafgh commented 7 months ago

Добрый день, как сейчас происходит смена токена? мы пробовали авторизоваться вчера и сегодня, в логах токен один и тот же

в логе некоторые попытки claim были не из приложения, а из тестдрайвера

[16.04.2024 19:52:19.557 ] [00004748] [DEBUG] => {"Token":"6b251826ff1e4023a26af22c67616aa3","CashboxUniqueNumber":"SWK00033442"} [16.04.2024 19:52:19.651 ] [00004748] [DEBUG] <= {"Errors":[{"Code":2,"Text":"Срок действия сессии истек"}]}

[17.04.2024 13:40:34.206 ] [00007024] [DEBUG] => {"Token":"6b251826ff1e4023a26af22c67616aa3","CashboxUniqueNumber":"SWK00033442"} [17.04.2024 13:40:34.316 ] [00007024] [DEBUG] <= {"Errors":[{"Code":2,"Text":"Срок действия сессии истек"}]}

debug20240417.txt SHTRIH-M-OPOS-1_2024.04.16.log SHTRIH-M-OPOS-1_2024.04.17.log

VitalyKravtsov2016 commented 7 months ago

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

Dafafgh commented 7 months ago

в самом локальном сервере хранились прошлые незавершенные транзакции. они и мешали, после переустановки чистого локального сервера вебкассы токен успешно сменился. при следующем повторении разберем ситуацию с вебкассой