Личный кабинет жителя

Описание функционала

В функционал личного кабинета входит: 

Авторизация:

Мобильное приложение:

Карточка пользователя на core-web:

Для корректной работы личного кабинета потребуется интеграция с основным билингом. Необходимо настроить обмен данными между системами для отображения актуальной информацией.

Требования к интеграции

Обратите внимание, что подключение личного кабинета возможно только при использовании 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,

"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" : "Доплата",

   "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

Справочник статусов договора:

Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).

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",
}

Управление разрешениями и блокировами пользователей

При создании пользователя к нему привязывается договор, которых хранит в себе информацию о тарифе. Тариф содержит информацию об услугах, которые активны на нем.

Рисунок 1 — Логика работы разрешений

Управление разрешениями

Чтобы управлять разрешениями, которые действуют на услугу, необходимо авторизоваться в платформе https://web-core.is74.ru/, перейти в раздел «Тарифы» и выбрать вкладку «Разрешения».

image.png

Рисунок 2 — Управление разрешениями

Чтобы добавить разрешение к услуге, нажмите плюс и выберите необходимые разрешения, которые относятся к данной услуге.

image.png

Рисунок 3 — Выбор разрешений

Готово. Теперь в нашем примере на услуге "Домофония" доступны сервисы: Просмотр видеопотока с домофона и открытие из приложения.

image.png

Рисунок 4 — Пример активированных разрешений

Как работают разрешения

При каждом обращении пользователя к приложению совершаются следующие проверки:

  1. Есть ли у пользователя доступ до подъезда
  2. Есть ли у пользователя тариф с активными разрешениями
  3. Баланс >= 0

Если все три условия соблюдены, то указанные в услуге сервисы доступны пользователю в мобильном приложении.

Если у организации нет ни одного тарифа с активными разрешениями, то пользователь организации по умолчанию получает все разрешения.