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

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

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

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

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

Карточка пользователя на 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

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

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

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 — Пример активированных разрешений

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

image.png

Рисунок 5 — Включение блокировок в мобильном приложении

Управление блокировкой аналоговых трубок

Блокировать звонки в аналоговые трубки жителей вы можете в зависимости от тарифа и отдельно от блокировки цифровых функций в приложении. Чтобы включить блокировку аналоговых трубок, активируйте опцию «Активировать блокировку звонков в абонентские трубки» на странице тарифов.

image.png

Рисунок 6 — Блокировка аналоговых трубок

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

image.png

Рисунок 7 — Выбор тарифов для блокировки аналоговых трубок

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

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

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

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

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

Порог блокировки

Для каждого из тарифов вы можете установить порог блокировки. То есть если баланс станет меньше данного значения, то доступные на тарифе услуги будут заблокированы. Чтобы установить порог блокировки, перейдите в раздел «Тарифы», вкладка «Тарифы», нажмите на карандаш рядом со значением порога и введите нужное вам значение.

image.png

Рисунок 8 — Вкладка «Тарифы»

image.png

Рисунок 9 — Редактирование порога блокировки