Личный кабинет жителя
Описание функционала
В функционал личного кабинета входит:
Авторизация:
- Авторизация по номеру телефона или по логину-паролю. С помощью авторизации по номеру телефона можно предоставить доступ к функционалу приложения пользователям, которые не знают свой логин или не являются абонентами.
- Авторизоваться по номеру телефона могут и абоненты, если к их карточке привязан номер телефона.
Мобильное приложение:
- Мобильное приложение с отдельным экраном для Абонентов и Не абонентов. В личном кабинете абонента отображается информация по Договорам, Тарифам, Балансу и общие данные абонента (ФИО, номер телефона и т.д.). В неабонентской версии личного кабинета отображается информация по доступным Тарифам.
- Макет личного кабинета Абонента и Не абонента.
Карточка пользователя на core-web:
- Карточка пользователя на 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”:"9090909090",
“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-И",
"state":2 // 1 - новый, 2 - подключено
"balance":36900,
"address":"г. Челябинск, ул Ленина 1",
"building_code":"08213690-eb4c-47a1-a509-bd9c3d5d65d8",
"region":74,
"building_num":”1",
"flat":"92",
"options" : [
{"category_name" : "Доплата",
"hidden": true,
"name" : "Доплата за труднодоступный/удалённый регион",
"value" : 2000 }
],
"tariffs": [
{“id” : "52082301",
"options" : [
{"category_name" : "Скидка",
"name" : "Скидка за регулярную оплату",
"hidden" : false,
"value" : -1000 },
],
}
],
}]
Контракты не найдены: http code 404
Все денежные суммы необходимо передавать в минимальных единицах (например, в копейках).
4. Получение определенного контракта
GET http://127.0.0.1/api/contracts?id=12331231
Успешный ответ: http code 200
[{
"ext_id":"12331231",
"account":"1595-И",
"contract":"1595-И",
"state":2 // Полный список статусов ниже
"balance":36900,
"required_payment": 1000, // DEPRICATED
"address":"г. Челябинск, ул Ленина 1",
"building_code":"08213690-eb4c-47a1-a509-bd9c3d5d65d8",
"region":74,
"building_num":"1",
"flat":"92",
"options" : [
{ "category_name" : "Settings", // Данный параметр-настройку необходимо передавать только в том случае,
// если необходимо активировать принудительную блокировку услуг вне зависимости от суммы баланса.
// В случае, если необходимости такой блокировки нет, данный параметр передавать не нужно.
"name" : "services_suspended_pending_payment",
"hidden" : false,
"value" : 1},
{ "category_name" : "Скидка",
"name" : "Скидка пенсионерам",
"hidden" : false,
"value" : -1000},
{"category_name" : "Доплата",
"hidden": true, // опция не будет отображаться клиенту
"name" : "Доплата за труднодоступный/удалённый регион",
"value" : 2000}
],
"tariffs": [
{ “id” : "52082301",
"options" : [
{"category_name" : "Скидка",
"name" : "Скидка за регулярную оплату",
"hidden" : false,
"value" : -1000 },
],
}],
}]
Контракт не найден: 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",
}
Управление разрешениями и блокировками пользователей
При создании пользователя к нему привязывается договор, которых хранит в себе информацию о тарифе. Тариф содержит информацию об услугах, которые активны на нем.
Рисунок 1 — Логика работы разрешений
Управление разрешениями в приложении
Чтобы управлять разрешениями, которые действуют на услугу и доступны пользователю в мобильном приложении, необходимо авторизоваться в платформе https://web-core.is74.ru/, перейти в раздел «Тарифы» и выбрать вкладку «Разрешения».
Рисунок 2 — Управление разрешениями
Чтобы добавить разрешение к услуге, нажмите плюс и выберите необходимые разрешения, которые относятся к данной услуге.
Рисунок 3 — Выбор разрешений
Готово. Теперь в нашем примере на услуге "Домофония" доступны сервисы: Просмотр видеопотока с домофона и открытие из приложения.
Рисунок 4 — Пример активированных разрешений
После того, как все разрешения для тарифов будут настроены, перейдите на страницу «Тарифы» на вкладку «Тарифы» и активируйте функцию «Активировать блокировки в мобильном приложении».
Рисунок 5 — Включение блокировок в мобильном приложении
Управление блокировкой аналоговых трубок
Блокировать звонки в аналоговые трубки жителей вы можете в зависимости от тарифа и отдельно от блокировки цифровых функций в приложении. Чтобы включить блокировку аналоговых трубок, активируйте опцию «Активировать блокировку звонков в абонентские трубки» на странице тарифов.
Рисунок 6 — Блокировка аналоговых трубок
После этого выберите тарифы, к которым нужно применить данную блокировку и нажмите сохранить. Спустя некоторое время пользователи будут синхронизированы, а трубки будут заблокированы, если баланс лицевого счета будет меньше порога блокировки выбранного тарифа.
Рисунок 7 — Выбор тарифов для блокировки аналоговых трубок
Как работают разрешения
При каждом обращении пользователя к приложению совершаются следующие проверки:
- Есть ли у пользователя доступ до подъезда
- Есть ли у пользователя тариф с активными разрешениями
- Баланс больше или равен установленному администратором порога блокировки
Если все три условия соблюдены, то указанные в услуге сервисы доступны пользователю в мобильном приложении.
Если у организации нет ни одного тарифа с активными разрешениями, то пользователь организации по умолчанию получает все разрешения.
Порог блокировки
Для каждого из тарифов вы можете установить порог блокировки. То есть если баланс станет меньше данного значения, то доступные на тарифе услуги будут заблокированы. Чтобы установить порог блокировки, перейдите в раздел «Тарифы», вкладка «Тарифы», нажмите на карандаш рядом со значением порога и введите нужное вам значение.
Рисунок 8 — Вкладка «Тарифы»
Рисунок 9 — Редактирование порога блокировки