Мод "Авторизация командировок" - сценарий с работой через API
Данный сценарий мы используем в том случае, если нам нужно совместить стандартные сценарии авторизации при помощи системных уведомлений и авторизацию через API. Для такого решения мы используем специальную настройку, которую можно установить на любом уровне авторизации, например, в приведенном ниже примере мы сначала авторизуем заказ в Кортеос, а потом делаем авторизацию в какой-то внешней системе при помощи API.
Настройка схемы авторизации
В этом примере, после того, как авторизация первого уровня будет пройдена по правилу одной подписи, по адресу http://listener.corteos.ru/Home/Listen - можно использовать в том числе и для ваших тестов, - будет отправлен запрос такого вида:
{
"id_Complex": 1123333,
"hash": "asda3124r4ndasdas23321aas",
"id_Auth": 1111
}
На самой странице редактирование указано описание возможных переменных:
@id_ComplexReserve - номер авторизуемой командировки, предназначен для выгрузки при помощи метода SOAP API GetReservationDetails
@id_Authorization - идентификатор уровня авторизации, нужно передавать обратно при вызове метода согласования
@hash - подпись запроса для проверки целостности, следует передавать обратно при вызове метода согласования
Использование в рабочем процессе
В командировке, к который применима наша схема авторизации, запускаем процесс согласования стандартным способом:
Далее мы видим в списке авторизующих лиц такую запись:
После того, как подпись согласующего лица на первом уровне была получена, осуществляется обращение ко внешней системе через API в рамках настроенного выше процесса:
Мы видим, что обращение к сервису произошло ровно в том момент, когда согласующее лицо согласовало командировку, если бы вместо этого произошло отклонение командировки, то обращение во внешюю систему не было бы отправлено и заказ вернулся бы в состояние черновика.
В указанном примере мы видим параметры, которые Кортеос передал во внешнюю систему, далее их следует использовать в веб-сервисе согласования.
Пример полученных в callback данных:
{
"id_Complex": 766711,
"hash": "74829afd1d451bb43b3c5d299bd5411c",
"id_Auth": 417303
}
После получения данного уведомления можно выгрузить детали командировки при помощи метода API: Универсальный метод выгрузки заказа или командировки
Веб-сервис для согласования
Для согласования используется веб-сервис: /PortableViews/ModComplexAuthViews/API/ComplexAuthAPI.asmx
WSDL: https://jv3.corteos.ru/PortableViews/ModComplexAuthViews/API/ComplexAuthAPI.asmx?WSDL
В сервис необходимо передать следующие поля:
id_Authorization - int, первичный ключ согласования, получаем из коллбэка на авторизацию(см. выше)
IsSucceed - bool, статус согласования, true - согласовать, false - отклонить
Comment - string, текстовое пояснение к операции, будет выведено в деталях командировки в таблице согласований
Hash - string, подпись запроса, также получаем из коллбэка(см.выше)
В ответе на этот запрос мы получаем XML такого вида:
<ComplexAuthAPIResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://corteos.ru/" id_ComplexReserve="766711" State="Finished" AuthorizationSucceed="true">
<ComplexReserveName>Тест авторизации</ComplexReserveName>
</ComplexAuthAPIResponse>
В случае ошибки согласования мы получим SOAP Exception:
Внешний вид таблицы согласований для согласованной через API командировки:
Использование веб-сервиса из мода Авторизация командировок через API
Альтернативно вместо основного веб-сервиса можно использовать веб-сервис, описанный в приведенном ниже документе.
"Авторизация командировок через API"(ModExternalAuth)
в методе мода Авторизации командировок через API есть такие параметры, которые надо заменить следующим образом:
int id_ComplexReserve - тут передаем не id_ComplexReserve, а id_Auth из коллбэка
bool authorize - true или false - согласовать или отклонить
string hash - должен быть в специальном формате, “COMPLEXAUTH-{оригинальных хэш}”, в этом случае пойдет обращение к методу сложной авторизации
Реализация данного сценария к коде ModExternalAuth
Веб-сервис для получения списка командировок, по которым была запрошена авторизация в заданный период 08.02.2022
Для получения списка необходимо использовать веб-сервис: YourDomain/PortableViews/ModComplexAuthViews/API/ComplexAuthAPI.asmx
WSDL: YourDomain/PortableViews/ModComplexAuthViews/API/ComplexAuthAPI.asmx?WSDL
Метод: YourDomain/PortableViews/ModComplexAuthViews/API/ComplexAuthAPI.asmx?op=GetComplexReservesByStartAuth
Параметры:
string Token – токен клиента
DateTime dateFrom – дата “с“ периода
DateTime dateTo – дата “по“ периода
Вопросы:
Пример запроса:
Пример ответа:
Пример ошибки: