Требования к интеграции
Обратите внимание, что подключение личного кабинета возможно только при использовании stand-alone платформы управления домофонией.
Методы для реализации обмена данными
Обмен данными возможен только при авторизации пользователя. После того, как пользователь ввел логин/пароль или номер телефона, наша система запрашивает данные по пользователю и сохраняет их у себя. При этом пароль хешируется.
Все стоимости указываются в минимальных единицах валюты (копейки)
Для реализации данного способа обмена данными нам требуются следующие методы:
1. Авторизация / проверка логина-пароля пользователя
POST http://127.0.0.1/api/auth
Body:
{
“login”:”1595”,
“pswd”:”58208891”
}
Ответ:
Успех: http code 200
{
“ext_user_id”: "58208891",
}
Ошибка: http code 401
2. Получение информации о пользователе
GET http://127.0.0.1/api/users?user_id=58208891
Успешный ответ: http code 200
[{
"ext_user_id":"58208891",
"login":"1595",
"password":"58208891",
"is_blocked" ; true, // bool
"full_name":”Жанна Владимировна",
"phones": [
{
“number”:"79090833414",
“confirmed”:false,
}
]
}]
Пользователь не найден: http code 404
Пароль необходимо передавать в открытом виде, у себя мы храним его в хэшированном виде
3. Получение контрактов-лицевых счетов пользователей
GET http://127.0.0.1/api/contracts?user_id=58208891
Успешный ответ: http code 200
[{
"ext_id":"12331231",
"account":"1595-И",
"contract":"1595-И",
"balance":36900,
"address":"г. Челябинск, ул Ленина 1",
"building_code":"08213690-eb4c-47a1-a509-bd9c3d5d65d8",
"region":74,
"building_num":”1",
"flat":"92",
"tariffs": [
{
“id” : "52082301",
"options" : [
{
"category_name" : "Скидка",
"name" : "Скидка за регулярную оплату",
"hidden" : false,
"value" : -1000
},
],
}
],
"options" : [
{
"category_name" : "Доплата",
"hidden": true,
"name" : "Доплата за труднодоступный/удалённый регион",
"value" : 2000
}
],
"state":2 // 1 - новый, 2 - подключено
} ]
Контракты не найдены: http code 404
Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).
4. Получение определенного контракта
GET http://127.0.0.1/api/contracts?id=12331231
Успешный ответ: http code 200
[{
"ext_id":"12331231",
"account":"1595-И",
"contract":"1595-И",
"balance":36900,
"required_payment": 1000, // Сумма, к оплате, которая ожидается на данный момент по данному договору
"address":"г. Челябинск, ул Ленина 1",
"building_code":"08213690-eb4c-47a1-a509-bd9c3d5d65d8",
"region":74,
"building_num":"1",
"flat":"92",
"tariffs": [
{
“id” : "52082301",
"options" : [
{
"category_name" : "Скидка",
"name" : "Скидка за регулярную оплату",
"hidden" : false,
"value" : -1000
},
],
}
],
"options" : [
{
"category_name" : "Скидка",
"name" : "Скидка пенсионерам",
"hidden" : false,
"value" : -1000
},
{
"category_name" : "Доплата",
"hidden": true, // опция не будет отображаться клиенту
"name" : "Доплата за труднодоступный/удалённый регион",
"value" : 2000
}
],
"state":2 // Полный список статусов ниже
}]
Контракт не найден: http code 404
Справочник статусов договора:
- 1 - новый
- 2 - подключено
- 3 - приостановление
- 4 - расторжение
Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).
5. Список услуг
GET http://127.0.0.1/api/services
[
{"id":"40216201","name":"Teko"},
{"id":"40216202","name":"Видеонаблюдение"},
{"id":"40216203","name":"Телефония"}
]
6. Список тарифов
GET http://127.0.0.1/api/tariffs
[
{"id":"52081501",
"name":"Космос",
"services": [
{ "id" : "40216201" },
{ "id" : "40216203" }
]
"description":"Описание тарифа",
"cost": 1200
“link”:”https://your-domain.ru/tariff/kosmos”},
]
{"id":"1081664501",
"name":"Снежный",
"services": [
{ "id" : "40216201" }
]
"description":"Описание тарифа",
"without_cost": true,
“link”:”https://your-domain.ru/tariff/snow”},
]
Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).
7. Начисления
GET http://127.0.0.1/api/charges?user_id=58208891&limit=1
Запрос для получения отсортированных начислений пользователя
limit - количество начислений, которые хотим получить. К примеру limit=1 отдаст самое последнее начисление.
[
{
"account" : "1595-И",
"cost" : 20000,
"period" : "02-22" // месяц
"description" : "Оплата услуг связи сентябрь 2022"
},
]
Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).
CallBack
В core есть функционал обработки callback-уведомлений. Его можно использовать для оповещения платформы об изменениях во внутреннем билинге.
1. Изменение данных договора (баланс, тарифы). В случае обращения к этому хэндлеру, платформа сделает запрос а API Data Provider (по спецификации, описанной выше), и обновит данные.
Авторизация HTTP basic, данные можно запросить отдельно
POST https://core.coredev.is74.ru/api/v1/mb/callback/contract
{
"ext_id" : "12347",
}
2. Изменение данных всех договоров (баланс, тарифы). В случае обращения к этому хэндлеру, платформа сделает запрос а API Data Provider (по спецификации, описанной выше), и обновит данные.
Авторизация HTTP basic, данные можно запросить отдельно
POST https://core.coredev.is74.ru/api/v1/mb/callback/contract
{
"user_ext_id" : "58208891",
}
3. Обновление начислений пользователя
Авторизация HTTP basic, данные можно запросить отдельно
POST https://core.coredev.is74.ru/api/v1/mb/callback/charge
{
"user_ext_id" : "58208891",
}