Расчет - Базовые понятия
В ПКАСКО существует 2 типа расчета:
- Базовый или общий - всегда идет по фиксированному набору параметров и использует справочники ПКАСКО
- Уточняющий - набор параметров зависит от конкретного калькулятора, оперирует справониками конкретного калькулятора
Базовый расчет
Первым расчетом всегда должен идти базовый. В ответе на базовый расчет каждый калькулятор отдает набор своих установленные данных и результат расчета. Также калькулятор может вернуть сообщение об ошибке расчета.
При базовом расчете подхватываются все необходимые настройки аккаунта для конкретного калькулятора.
Базовый расчет происходит по всем компаниям, которые включены в настройках аккаунта ПКАСКО.
Если Вам необхоимо сделать расчет только по некоторым компаниям из вашего аккаунта, то к адресу запроса нужно добавить параметр codes и перечислить нужные коды калькуляторов через запятую.
ЗАПРОС:
POST https://pkasko.com/kasko/calc?api=1&codes=RESOWebservice,IngosstrahОПИСАНИЕ
api: (int) - вернуть уникальный идентификатор расчета codes: (string) - коды калькуляторов через запятую timeout: (int) - кол-во секунд, выделенное на расчет (калькуляторы, не успевшие произвести расчет, будут проигнорированы)
Ответ на базовый расчет представляет собой массив результатов расчета, каждый элемент которого - это результат одного калькулятора.
ОТВЕТ
[ // успешный расчет { "info": { // информация о калькуляторе и дополнительные данные "code": "RenessansWebservice" // код калькулятора (обязательно всегда в ответе) }, "data": { // набор установленные данных этого калькулятора (для уточняющего расчета) ..., "orig": { ... }, // оригинальные данные расчета "meta": { ... }, // мета-информация по расчету "hidden": { ... }, // служебная информация "source": { ... } // копия первого расчета ... }, "result": { ... }, // результат расчета (содержимое зависит от вида страхования) "warnings": [ ... ] // предупреждения (индексный массив) }, // расчет с ошибкой { "info": { "code": "RESOWebservice" }, "error": { "message": "Сообщение об ошибке в расчете" } } ]
Блок info - унифицированный ответ от калькулятора по определённым значениям.
"info": { "code": "RenessansWebservice", // код калькулятора }
Блок data - данные расчета нужного калькулятора.
"data": { "carNew": "Нет", "owner": "Физическое лицо", "explDate": "2018-05-08", "multidrive": "Ограниченный список", "orig": { ... }, "meta": { ... }, "hidden": { ... }, "source": { ... }, ... }
Уточняющий расчет
Если необходимо уточнить базовый расчет по каким-то конкретным параметрам калькулятора, то в этом случае делается уточняющих расчет по данным, которые были получение из базового. В ответе на уточняющий запрос приходит весь набор установленных данных, результат расчета, справочники значений, разделы и порядок их расположения. Также калькулятор может вернуть сообщение об ошибке расчета.
Структура ответа на уточняющий запрос:
{ "data": { ... }, "result": { ... }, "values": { ... }, // справочники значений (все возможные варианты значений) "options": { ... }, // список опций и их типы "order": [ ... ], // сортировка разделов и опций в них относительно друг-друга "warnings": [ ... ] }
Блок values - справочники значений опций (все возможные варианты значений). Ключ - имя опции, значение - варианты (индексный массив). Для полей с типом "input" в значении всегда будет массив с одним элементом
"values": { "carNew": [ "Нет", "Да" ], "owner": [ "Физическое лицо", "Юридическое лицо" ], "explDate": [ "2018-05-08" ], "multidrive": [ "Ограниченный список", "С ограничением минимального стажа и возраста", "Без ограничений" ], "credit": [ "Нет", "ВТБ 24", "Сбербанк", "Другой" ], "withoutCertificatesGlass": [ "Отсутствует", "1 раз", "2 раза", "Без ограничений" ], "withoutCertificatesBody": [ "Отсутствует", "1 раз", "2 раза", "Без ограничений" ], "franchise": [ null ] }
Блок options - список разделов, находящихся в них опций, названия опций и типы. Данный блок сделан для интерфейсов, чтобы отображать параметры расчеты сгруппированные по разделам.
"options": { "Транспортное средство": { "carNew": { "title": "Новое ТС", "type": "select" }, "explDate": { "title": "Дата начала эксплуатации", "type": "input" } }, "Базовые параметры": { "owner": { "title": "Страхователь", "type": "select" }, "credit": { "title": "Кредитное ТС", "type": "select" } }, "Условия страхования": { "withoutCertificatesBody": { "title": "Выплата без справок (кузов)", "type": "select" }, "withoutCertificatesGlass": { "title": "Выплата без справок (стеклянные элементы)", "type": "select" } }, "Лица, допущенные к управлению": { "multidrive": { "title": "Мультидрайв", "type": "select" } }, "Франшиза": { "franchise": { "title": "Франшиза", "type": "input" } } }
Блок order - сортировка параметров внутри разделов. Данный блок сделан для интерфейсов, чтобы в правильном порядке разместить разделы и опции.
"order": [ { "group": "Транспортное средство", "options": [ "carNew", "explDate" ] }, { "group": "Базовые параметры", "options": [ "owner", "credit" ] }, { "group": "Условия страхования", "options": [ "withoutCertificatesBody", "withoutCertificatesGlass" ] }, { "group": "Лица, допущенные к управлению", "options": [ "multidrive" ] } { "group": "Франшиза", "options": [ "franchise" ] } ]
Обработка ошибок
В случае ошибки в расчете формат ответа будет выглядеть следующим образом
{ "info": { "code": "RESOWebservice" }, "error": { "message": "С указанными данными ТС не страхуется или требуется согласование" } }