Форум OlegON > Программы и оборудование для автоматизации торговли > ЕГАИС в опте и рознице

Как вытащить проактивные уведомления в УТМ : ЕГАИС в опте и рознице

02.05.2024 19:36


08.11.2023 14:21
_R2D2_
 
В последних УТМ реализован раздел проактивных уведомлений (Сообщения и уведомления), в который из ФСРАР поступают уведомления о нарушениях.
Хотим научиться их вычитывать, что бы затем уведомлять клиентов о "письмах счастья", нужен совет как это можно сделать.
В документации и в swagger про способ их извлечения не написано, сервис рассчитан только на просмотр из веб-интерфейса.
Сами уведомления находятся по адесу localhost:8080/app/services/proactive/XXX, где ХХХ - это номер уведомления
Через "curl -X GET http://localhost:8080/app/services/proactive/" и "curl -X GET http://localhost:8080/opt/out" они не вычитываются
08.11.2023 14:23
_R2D2_
 
Вот пример уведомления с тестового контура
08.11.2023 14:32
OlegON
 
А этот ХХХ сквозной именно для вас или уникальный вообще? А то просто мониторить появление очередного ХХХ, нет?
08.11.2023 14:45
_R2D2_
 
Цитата:
OlegON А этот ХХХ сквозной именно для вас или уникальный вообще?
Видимо номер уникальный вообще :)
Цитата:
OlegON А то просто мониторить появление очередного ХХХ, нет?
Так где мониторить? в opt/out не появляются эти документы
08.11.2023 14:52
OlegON
 
Я имел ввиду на страничку localhost:8080/app/services/proactive/XXX долбиться... А на страничку выше curl нельзя попасть? А то там-то номера есть...
08.11.2023 14:57
_R2D2_
 
Цитата:
OlegON Я имел ввиду на страничку localhost:8080/app/services/proactive/XXX долбиться... А на страничку выше curl нельзя попасть? А то там-то номера есть...
вот что дает "curl -X GET http://localhost:8080/app/services"

<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>╨г╨в╨Ь</title>
<base href="/app">

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">

<!-- fix: -->
<!-- fix: -->
<script>
if (global === undefined) {
var global = window;
}
</script>
<!-- fix end-->
<!-- fix end-->
<style type="text/css">
body, html {
height: 100%;
}
.app-loading {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
}
.app-loading .spinner {
height: 200px;
width: 200px;
animation: rotate 2s linear infinite;
transform-origin: center center;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.app-loading .spinner .path {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
animation: dash 1.5s ease-in-out infinite;
stroke-linecap: round;
stroke: #d25851;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -35px;
}
100% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -124px;
}
}
</style>
<style>.app-loading .logo{width:150px;height:100px;background:url(egais_utm_primary.1111896167973c52bcb1.svg) 50% no-repeat;}body,html{height:100vh;overflow:hidden;}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif;}*{-webkit-box-sizing:border-box;box-sizing:border-box;}@-webkit-keyframes spinner{to{-webkit-transform:rotate(1turn);transform:rotate(1turn);}}@keyframes spinner{to{-webkit-transform:rotate(1turn);transform:rotate(1turn);}}.spinner:before{content:"";-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;border-radius:50%;border:2px solid #fff;border-top-color:#0b5ca6;-webkit-animation:spinner .8s linear infinite;animation:spinner .8s linear infinite;}</style><link rel="stylesheet" href="styles.937ae707241fbaad3681.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.937ae707241fbaad3681.css"></noscript></head>
<body>
<app-root>
<div class="app-loading">
<div class="logo"></div>
<svg class="spinner" viewBox="25 25 50 50">
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle>
</svg>
</div>
</app-root>
<script src="runtime-es2015.c8c48b2170c5b28af74f.js" type="module"></script><script src="runtime-es5.c8c48b2170c5b28af74f.js" nomodule defer></script><script src="polyfills-es5.c2223d813ac8417045b0.js" nomodule defer></script><script src="polyfills-es2015.d0bb6a7e1913fc8693aa.js" type="module"></script><script src="scripts.07a635ddfc26da723016.js" defer></script><script src="main-es2015.710642493395e8d8adbf.js" type="module"></script><script src="main-es5.710642493395e8d8adbf.js" nomodule defer></script>

</body></html>
08.11.2023 15:03
OlegON
 
Неправильно ты дядя Федор...
Зачем тебе эта страничка? Инструменты веб-мастера открой и посмотри, как грузится та, которая тебе нужна. Возможно, что стоит какая-то хитрая защита, тогда "ой", возможно, что ты ее легко заберешь, например, подставив referer, и расскажешь нам, как это делать.
08.11.2023 17:11
_R2D2_
 
Цитата:
OlegON Неправильно ты дядя Федор...
Зачем тебе эта страничка? Инструменты веб-мастера открой и посмотри, как грузится та, которая тебе нужна. Возможно, что стоит какая-то хитрая защита, тогда "ой", возможно, что ты ее легко заберешь, например, подставив referer, и расскажешь нам, как это делать.
Вызывается "http://localhost:8080/api/query/proxy/gateway/proactive/api/v1/utm-proxy/services?page=1&size=10&sortField=id&sortDirection=desc"
В Referrer указан "http://localhost:8080/app/services/proactive"
В Referrer Policy стоит strict-origin-when-cross-origin
08.11.2023 17:24
_R2D2_
 
Прочитать единичное уведомление в итоге получилось через
"curl -X GET http://localhost:8080/api/query/proxy/gateway/proactive/api/v1/utm-proxy/services/322001"
а вот получить список чет пока не получается, ругается 400 ошибкой на любой параметр списка
08.11.2023 21:14
JC Emulator
 
Цитата:
_R2D2_ "curl -X GET http://localhost:8080/api/query/proxy/gateway/proactive/api/v1/utm-proxy/services/322001"
Увидел знакомый адрес, не смог не прокомментировать.

Тут: https://olegon.ru/showthread.php?t=38538 я описывал как утм проверяет мчд и получает список точек продаж для доверенного физ лица с мчд. Тут примерно та же петрушка. SPA УТМа шлет запрос на апи контроллер универсальных запросов утм (... /api/query), тот проксирует его на соответствующий сервис егаис (действие proxy контроллера, все что за proxy - адрес сервиса на стороне рара вместе с параметрами). Адрес сервиса егаис описывался по указанной выше ссылке (отличается для контуров тест и прод). В предыдущем варианте был универсальный post запрос, в текущем - универсальный get. И что-то мне подсказывает, таких неизведанных универсальных запросов ещё тьма.

Тут надо выдергивать запрос со SPA УТМа на получение списка айдишников уведомлений (предполагаю, 322001 как раз такой айди) чтобы по нему получать внутрянку - скорее всего и такой запрос отправляется, ищите. Будет работать только при наличии работающего контура УТМ.

Вариант 2. Обзаведшись заветными адресами попытаться стучаться напрямую в рар (для нужного контура утм сервера разные) по адресам, следующим за proxy полученных. Только там mtls - без серта не пустят. Для тех, кто будет говорить, что это дичь, приведу свои соображения:
1. Мчд и (или) генерация рса сертификата для нового торгового объекта. Механизмы схожие, работает без наличия сертификата рса ибо его ещё нет. Идёшь по адресу - просят серт (или даже не просят, возможно, страница не отображается). Т. Е. механизм работает с общим для всех сертом. Собственно, его открытая часть прекрасно ловится в wireshark.
2. Раз используется общий рса серт для создания канала, но есть необходимость идентифицировать участника, наверняка УТМ дописывает что-то идентифицирующее в посылку. Без сертификата ГОСТ оно не работает - значит Инн. В адресе его нет - значит либо дописывает к отправляемым данным (но это работало бы только для post, а тут get) либо в заголовки. Скорее всего в заголовки. Это логично - не зря есть контроллер универсальных запросов - он может и пользователя идентифицировать и серт прикрепить

В общем делов-то всего ничего - получить адреса, понять что там перекидывается в рар, попросить в раре серт для обращения с их сервиса и и можно получать уведомления без УТМ.
Часовой пояс GMT +3, время: 19:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.