Для обмена данными программный интерфейс СБИС API использует формат JSON. Обмен с online.sbis.ru происходит с помощью HTTP-запросов/ответов.
- POST — запросы на выполнение команд;
- GET — запросы для получения содержимого указанного ресурса, данных вложений или электронных подписей (ЭП).
Заголовок запроса
В заголовке запроса обязательно указывается:
- адрес сервера:
- для команд аутентификации — https://online.sbis.ru/auth/service/;
- для прочих команд — https://online.sbis.ru/service/?srv=1 HTTP/1.1;
- идентификатор сессии «X-SBISSessionID»;
- кодировка символов в поле «Content-Type»:
- application/json-rpc;charset=utf-8 — рекомендуем «utf-8»;
- application/json-rpc;charset=windows-1251 — «windows-1251».
- размер запроса в байтах в «Content-Length»;
- название и версия информационной системы в заголовке «User-Agent».
Объект запроса
Объект запроса содержит:
- значение и версию спецификации JSON-RPC — «jsonrpc»:«2.0»;
- параметр «method» с названием команды;
- параметр «params» с объектом параметров команды;
- параметр «id»с целочисленным значением.
Объект ответа
В ответ на запрос с сервера возвращается JSON-структура:
- значение и версия спецификации JSON-RPC — «jsonrpc»:«2.0»;
- параметр «id» со значением из объекта запроса;
- значение объекта «result», содержащее ответ на команду.
Если произошла ошибка, в ответе на запрос вернется «error».
Объект ошибки
Если вернулась ошибка, в объекте ответа в поле «error» будут указаны:
- «code» — код ошибки;
- «message» — текст ошибки;
- «details» — подробное описание;
- «data» — тип ошибки.
Пример POST-запроса
POST https://online.sbis.ru/service/?srv=1 HTTP/1.1
Content-Type: application/json-rpc;charset=utf-8
Accept: */*
User-Agent: YourSystemName/0.1.0
X-SBISSessionID: 0000ea78-0000ea79-00ba-d3b85272bc0c4842
{
"jsonrpc": "2.0",
"method": "СБИС.ПрочитатьДокумент",
"params": {
"Документ": {
"Идентификатор": "e1756445-f1be-4562-b5cf-4549968b5f4f"
}
},
"id": 0
}
Пример ответа (упрощенный)
{
"jsonrpc": "2.0",
"result": {
...
}
}
Пример GET-запроса для получения содержимого из вложения
GET https://disk.sbis.ru/disk/api/v1/bc12100c-8113-4478-a66c-ae45ca9210b6_9f621811-7542-4830-a26c-8779738ba55d?object=simple_file_sd&uuid=ff398d1b-d143-4600-b267-b8c9a60990fc&diskhmac=DuBy%2B9W9oa%2BSThKU5rbZVRUsDQ4%3D
Content-Type: application/json-rpc;
charset=windows-1251 Accept:*/*
X-SBISSessionID: 0009c95c-0009ccc4-00ba-f2c8df9cc0d14d1b
Host: disk.sbis.ru
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/octet-stream; charset=windows-1251
Content-Length: 1555
Content-Range: bytes 0-1554/1555
X-SBISSessionID: 0000ea78-0000ea79-00ce-dc4d2645fe204752
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Content-type
Content-Disposition: attachment; filename="ON_SFAKT.XML"
Cache-Control: must-revalidate, max-age=0
<?xml version="1.0" encoding="WINDOWS-1251"?>
<Файл ВерсПрог="0.1 Beta" ВерсФорм="5.01" ИдФайл="ON_SFAKT_9999999998000000001_9999999998000000001_3333333330000000001_20120823_251a931a-0ce4-4ae6-9d5c-7c5e44cfd7d9">
<Документ КНД="1115101">
<Подписант ПрПодп="1">
<ФИО Имя="Электронных" Отчество="Документов" Фамилия="Отправитель"/>
</Подписант>
<СвСчФакт ДатаПРС="00.00.0000" ДатаСЧ="18.01.2011" НомерПРС=" " НомерСЧ="00000013">
<СведПокуп>
<РегСвед>
<СведЮЛ ИННЮЛ="9999999998" КПП="000000001" НаимОрг="ООО Получатель"/>
</РегСвед>
<АдресСвед>
<АдрПокупРФ Город="385002" Дом="ул.Адмирала Грейга" Индекс="" КодРегион="" Корпус="2" НаселПункт="Санкт-Петербург г" Район="Россия" Улица="г.Кронштадт"/>
</АдресСвед>
</СведПокуп>
<СведПрод>
<РегСвед>
<СведЮЛ ИННЮЛ="3333333330" КПП="000000001" НаимОрг="ООО Отправитель"/>
</РегСвед>
<АдресСвед>
<АдрПокупРФ Город="Кронштадт г" Дом="1" Индекс="197762" Кварт=" " КодРегион="Санкт-Петербург г" Корпус=" " НаселПункт=" " Район=" " Улица="Арсенальный пер"/>
</АдресСвед>
</СведПрод>
</СвСчФакт>
<ТаблСчФакт ОКВ_СФ="810" СтТРУУчНалВс="708.00" СумНДСВс="108.00">
<СведТРУ ЕдИзм_ТРУ="шт" КодПроисх=" " КолТРУ="12.00000" НаимТРУ=""Все о жизни" электронная книга" НалСтав="18.00" НомерТД=" " ОКЕИ_ТРУ="796" СтТРУБезНДС="600.00" СтТРУУчНал="708.00" СтрПроисх=" " СумАкц="0.00" СумНДС="108.00" ЦенаТРУ="0.00"/>
</ТаблСчФакт>
</Документ>
</Файл>
Пример ошибки
{
"jsonrpc": "2.0",
"error": {
"code": -32000,
"message": "Сервис оператора временно недоступен.",
"details": "Ошибка определения АЯ: Сервис http://operator-online.sbis.ru/data/service/ временно недоступен. Повторите попытку позже.",
"type": "error",
"data": {
"classid": "{00000000-0000-0000-0000-1aa000050000}",
"addinfo": null
}
},
"id": 0
}
Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.