Странная работа getEvents

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти  
Веб-сервисы » Прямой доступ
Страницы: 1
Странная работа getEvents
Никак не могу разобраться, каким образом получать информацию о своих заявках.
Отправляю заявку, получаю requestNumber.
Далее вызываю getEvents с параметром lastEventID = полученному requestNumber. В результате статус операции получаю положительный, однако данные по запросу пустые. loadEventDetails работает только по eventID, которого у меня нет.
Если вызываю getEvents без параметров, я получаю список своих запросов, причем их несколько, с одним requestNumber и разными eventID. По eventID я также получаю пустые данные из GetEvents. В списке же события находятся определенное время, потом список становится пустым и есть вероятность, что я просто не успею обработать весь список если анализировать каждый раз его целиком.
Собственно вопрос. Как и по какому параметру надо отслеживать состояние конкретной заявки? Или может есть какой-то порядок вызова методов, после выполнения которого, я однозначно получу информацию о текущем состоянии своей заявки?
Да, мы тоже столкнулись с такой проблемой. Изначально не известно eventID, но при вызове getEvents без параметров возвращается список все ваших запросов причем каждый повторяется столько раз сколько статус у него уже получено (например: заявление принято, заявление в обработке и т.д.). В этом списке уже будет
eventID по которому можно сделать детальный запрос loadEventDetails. Действительно loadEventDetails иногда пустой, подозреваю в случаях когда заявление принято в работу и ожидает результата окончания обработки. но когда идет отказ или ошибка то в loadEventDetails как раз и должны быть причины ошибки или отказа. еще замечено что с пустым запросом getEventsвыдается 200 первых по списку, остальные не видны. по этой причине заявления периодически надо удалять deleteEvents, чтобы увидеть последние.
Схема такая.

1) отправляем заявку методом createRequest, на выходе получаем requestNumber;

2) периодически вызываем getEvents (). Аргумент - пустая строка либо null. На выходе получаем список идентификаторов (eventsIDs) всех событий (200 первых) из ящика пользователя, по сертификату которого установлен TLS канал;
3) для каждого из eventsIDs получаем детальные описания события. requestNumber, для которого пришло данное событие, содержится в поле requestNumber детального описания. Там же есть дата события, код события и некий неформализованный message.
Если код события = 002, то в message содержится код оплаты в виде "Код платежа 5527293218408084". Из которого надо брать 16 цифр кода для оплаты. Состояние конкретной заявки нужно определять по её коду. Событие с максимальным кодом есть состояние заявки в текущий момент. Хотя, я чувствую, что в этом месте есть нюанс, но пока проблем не было;
(loadEventDetails "пустой" у меня никогда не возвращался. message в loadEventDetails да, бывает пустым.)
4) вызываем deleteEvents со списком eventsIDs, которые мы успешно обработали. По идее, вместо deleteEvents разработчиками предусмотрена возможность вызова getEvents и передачей в него последнего из списка eventsIDs. Но добиться нормальной работы такой схемы мне не удалось;

и опять к пункту 2)

P.S.

Цитата
Алексей Ябров пишет:
В списке же события находятся определенное время, потом список становится пустым и есть вероятность, что я просто не успею обработать весь список если анализировать каждый раз его целиком.
Без вызова deleteEvents события из ящика пользователя не удаляются.
В deleteEvents надо передавать список только полностью обработанных событий. Тогда и теряться ничего не будет.
Спасибо за подробные разъяснения, будем пробовать...

В том то и дело, что я метод deleteEvents не вызывал, сами куда то пропали. Хотя сейчас уже третий день все на месте. Возможно был очередной глюк тестового сервера.
ну, на тестовом сервере может происходить вообще всё что угодно )
Цитата
Роман Камерлох пишет:
ну, на тестовом сервере может происходить вообще всё что угодно )
Это да :D

А к чему привязывается список событий? Сначала я думал что к сертификату. Но, попробовал отправить через портал (подписал сертификатом), получил номер заявки. А из своей программы читаю события по этому же сертификату и получаю пустой список...
Я думаю, что
Цитата
Роман Камерлох пишет:
из ящика пользователя, по сертификату которого установлен TLS канал;
А это может быть другой сертификат, которым подписана заявка.
Цитата
Роман Камерлох пишет:
Я думаю, что
Цитата
Роман Камерлох пишет:
из ящика пользователя, по сертификату которого установлен TLS канал;
А это может быть другой сертификат, которым подписана заявка.
Тогда другой вопрос, а если у ЭЦП закончился срок, то после его продления, вроде, выдается новый сертификат. Как тогда обработать заявки от старого сертификата?
Будет ли выдаваться список событий по просроченному сертификату?
если новый сертификат будет "продлён", то события по новому сертификату будут приходить.
Ну, по крайней мере, мне приходили :)
По какому из полей сертификата происходит идентификация - незнаю.
Цитата
Роман Камерлох пишет:
если новый сертификат будет "продлён", то события по новому сертификату будут приходить.
Ну, по крайней мере, мне приходили :)
По какому из полей сертификата происходит идентификация - незнаю.
Ясно, спасибо. Просто так долго подписи у меня еще нет, а вопросы возникают :)
Цитата
Роман Камерлох пишет:
4) вызываем deleteEvents со списком eventsIDs, которые мы успешно обработали.
Что представляет собой элемент списка? При попытке выполения запроса выводит следующую ошибку:
скрин.png (5.49 КБ)
String[] eventIDs
А можно конкретный пример в виде XML?
Изменено: Дмитрий Рыженко - 28.07.2014 16:30:24
Ребята, подскажите, может кто сталкивался, непонятная работа метода getEvents, почему то не возвращается весь список заявок, а только те которые были созданы методом createRequest.
Была отправлена заявка через портал, известен идентификатор последнего события, через портал статус проверяется, а через getEvents - пусто ..........

Заранее спасибо!
А что странного?
В getEvents попадают заявки поданные через веб-сервисы.
GetEvent возвращает сообщения из очереди. Идентификатором очереди является отпечаток сертификата, если сообщение было передано другим способом/ с помощью другого сертификата, то оно будет в другой очереди. принцип такой
Я не удаляю события. Я ловлю последнее из всей очереди и передаю в метод getevents, и так далее.
Как мне кажется, события фильтруютсч по email. Если задать пустой бинарник обращения, в результате пишется, тело запроса должно быть больше N BYTE и электронку
Да, по email сертификата, по которому устанавливается TLS соединение.
В продолжение темы... то есть нет никакой возможности через сервис видеть события по заявкам отправленные через портал?

Понял, вопрос закрыт:-)
Изменено: Григорий Поверенный - 03.04.2015 22:34:53
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Администрирование и хостинг ООО "ИндорСофт"