Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
gui [2019/07/09 09:59] ilya |
gui [2019/07/10 07:27] ilya |
||
---|---|---|---|
Строка 105: | Строка 105: | ||
} | } | ||
+ | ^Тэг/Параметр^Тип^Описание^ | ||
+ | |<request>|---|данный тэг говорит о том, что данные этого пакета относятся к запросам| | ||
+ | |version|string|идентификатор версии формата запроса; обязательный параметр| | ||
+ | |<datetime>|date-time|дата и время создания запроса в формате yyyy-MM-dd'T'HH:mm:ss.SSSZ; обязательный параметр| | ||
+ | |<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | ||
+ | |<transaction>|---|внутри данного тэга находятся передаваемые на сервер данные; обязательный параметр| | ||
+ | |type|string|идентификатор типа транзакции; зависит от вызываемого метода; обязательный параметр| | ||
+ | |id|long|уникальный номер транзакции в вашей системе; обязательный параметр| | ||
+ | ====== Ответ сервера ====== | ||
+ | **XML формат пакета** | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <response> | ||
+ | <datetime>2014-01-15T15:14:37.135+0200</datetime> | ||
+ | <xmlsign>cb05586bf7dca4c153eaf6156ab6d5e932ad153e</xmlsign> | ||
+ | <transaction id="10037" document="379"> | ||
+ | <signer id="88" name="KAG admin"/> | ||
+ | <timestamp>2014-01-15T15:14:37.129+0200</timestamp> | ||
+ | MCwCFCIhloIDw9/vtq8p9u8buDTUAWHLAhRUGOJiHVQ6BZFT3Vdmz9fr/41Idw== | ||
+ | </transaction> | ||
+ | </response> | ||
+ | **JSON формат пакета** | ||
+ | { | ||
+ | "response":{ | ||
+ | "datetime":"2014-01-15T15:14:36.600+0200", | ||
+ | "xmlsign":"2fd23c2528f6b792c9ab9442fc50c80ef38959a1", | ||
+ | "transaction":{ | ||
+ | "@id":"10036", | ||
+ | "@document":"379", | ||
+ | "signer":{"@id":"2","@name":"Sergey Titarchuk"}, | ||
+ | "timestamp":"2014-01-15T15:14:36.577+0200", | ||
+ | "$":"MCwCFCOlRYkrgD54W0lLQLY8FonCf0b8AhRGfk\/drCz96j5Bj6nUGI04CjiqYw==" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ^Тэг/Параметр^Тип^Описание^ | ||
+ | |<response>|---|данный тэг говорит о том, что данные этого пакета относятся к ответам| | ||
+ | |<datetime>|date-time|дата и время создания ответа в формате yyyy-MM-dd'T'HH:mm:ss.SSSZ; обязательный параметр| | ||
+ | |<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | ||
+ | |<transaction>|---|внутри данного тэга находятся передаваемые с сервера данные; обязательный параметр| | ||
+ | |||
+ | **Ошибка**\\ | ||
+ | В случае возникновения ошибки система должна вернуть пакет ошибки следующего вида | ||
+ | |||
+ | XML формат пакета | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <response> | ||
+ | <xmlsign>MCwCFBDENIKYn964yX5Dkg+F7m1pMCJdAhQTRB3UaMZ8aYk1ID6tt5Kzd1J1Ag==</xmlsign> | ||
+ | <datetime>2014-01-20T11:00:43.929+0200</datetime> | ||
+ | <error> | ||
+ | <code>5</code> | ||
+ | <text>Wrong request data packet or a signature.</text> | ||
+ | </error> | ||
+ | </response> | ||
+ | JSON формат пакета | ||
+ | { | ||
+ | "response":{ | ||
+ | "datetime":"2014-01-20T11:00:43.845+0200", | ||
+ | "xmlsign":"MCwCFHN0CMsiMZg3xUnWMLMP5pZcl7DQAhRka2zvFsomqj8bRzJNRAOnF5+gFA==", | ||
+ | "error":{ | ||
+ | "code":5, | ||
+ | "text":"Wrong request data packet or a signature." | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ^Тэг/Параметр^Тип^Описание^ | ||
+ | |<response>|---|данный тэг говорит о том, что данные этого пакета относятся к ответам| | ||
+ | |<datetime>|date-time|дата и время создания ответа в формате yyyy-MM-dd'T'HH:mm:ss.SSSZ; обязательный параметр| | ||
+ | |<xmlsign>|string|подпись пакета (подробнее см. Формирование подписи пакета); обязательный параметр| | ||
+ | |<error>|---|внутри данного тэга находятся передаваемые с сервера данные (информация об ошибке); обязательный параметр| | ||
+ | |<code>|long|код ошибки в системе; обязательный параметр| | ||
+ | |<text>|string|текст ошибки| | ||
+ | ====== Формирование подписи пакета ====== | ||
+ | |||
+ | Каждый пакет должен быть подписан цифровой подписью с помощью алгоритма **RSA** с использованием алгоритма хеш-функций **SHA256**. Для этого формируется полный пакет с данными, которые будут передаваться. Внутрь тэга ''<xmlsign>'' помещаем пробел. Переводим строку в массив байтов используя кодировку **UTF-8** и рассчитываем подпись с применением скрытого ключа. Результат подписи кодируется в | ||
+ | base64, переводится в **application/x-www-form-urlencoded** формат и заменяет содержимое тэга | ||
+ | ''<xmlsign>''. | ||
+ | |||
+ | Проверка подписи происходит в таком же порядке: берем пакет данных, Внутрь тэга **<xmlsign>** помещаем пробел, переводим строку в массив байтов используя кодировку **UTF-8** и проверяем подпись с применением открытого ключа.\\ | ||
+ | Выдача сертификатов для данной процедуры происходит в момент подключения внешнего приложения к системе. | ||
+ | ====== Общие запросы для всех систем CleverFormsTM API ====== | ||
+ | **Чтение сертификата приложения** | ||
+ | **<protocol>://<domain>/<app-name>/handler/api/certificate/<filename>.cer?app_id=<app_id>&serial_number=<serial_number>&sig=<signature>** – Возвращает файл сертификата | ||
+ | для зарегистрированного приложения. Получение информации только с помощью метода **GET**.\\ | ||
+ | \\ | ||
+ | |||
+ | Параметры запроса:\\ | ||
+ | * <app_id> - идентификатор приложения в системе. Выдается при подключении.\\ | ||
+ | * <serial_number> - идентификатор сертификата в системе. Выдается при подключении.\\ | ||
+ | * <signature> - подпись запроса. * Элемент ненумерованного списка\\ | ||
+ | Данные транзакции для запроса: транзакция отсутствует.\\ | ||
+ | Данные транзакции для ответа: транзакция отсутствует.\\ | ||
+ | Получение информации только с помощью метода GET.\\ |