Личный кабинет

Статус документа

Оглавление

Введение

Для операторов–партнеров предусмотрена возможность интеграции «Личного кабинета» абонента автоматизированной системы расчетов (АСР) при помощи встраивания веб–страницы непосредственно в клиенте, что позволяет абоненту осуществлять покупку недоступных каналов или авторизацию на установку (сброс) PIN–кода родительского контроля.

Для этого оператор должен предоставить адрес веб–страницы «Личного кабинета» абонента автоматизированной системы расчетов, по которому приложение будет переходить для осуществления действий. Адрес на веб–страницу «Личного кабинета» может быть получен посредством Registry API.

Взаимодействие с Личным кабинетом

При переходе на страницу «Личного кабинета» приложение передает дополнительные параметры методом GET протокола HTTP, позволяющие автоматизированной системе расчетов определить, с какой целью пришел абонент.

параметр значения смысл
inetra-visit-reason константа причина визита абонента
inetra-callback-url строка кодированный URL страницы обратного вызова
inetra-platform-idiom константа тип клиентской платформы (подробности см. Выбор графического интерфейса пользователя)
Подписка на каналы
inetra-channel-ids числа через , числовые идентификаторы выбранных пользователем каналов
Интеграция с внешними платежными системами
inetra-stores строки через , идентификаторы внешних платежных систем (см. «Интеграция с внешними платежными системами»)

Возможные причины визита, inetra-visit-reason:

Если параметр inetra-visit-reason не указан, автоматизированная система расчетов может считать такое обращение как визит страницы «Личного кабинета» абонента без явно указанной цели. Подробное описание каждой цели визита находится в разделе «Цели визита».

Клиент должен отобразить веб–страницу как есть, отслеживая переходы на адрес, закодированный в параметре inetra-callback-url.

Завершение взаимодействия пользователя со страницей автоматизированной системы расчета может быть осуществлено двумя способами:

  1. По инициативе пользователя. Пользователь самостоятельно закрывает страницу с помощью элементов графического интерфейса, например, с помощью кнопки «закрыть окно» в браузере.
  2. По инициативе системы расчета. Для этого браузер, открывший страницу «Личного кабинета» абонента должен быть перенаправлен на адрес, указанный в параметре inetra-callback-url. В случае перехода на указанный адрес клиент должен закрыть браузер.

Аутентификация пользователя

При обращении к «Личному кабинету» клиент может указать аутентификационные данные пользователя с использованием схем HTTP Basic Auth или Bearer. Для схемы Bearer рекомендуется использовать HTTP заголовок Authorization.

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

Выбор графического интерфейса пользователя

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

На данный момент рекомендуется идентифицировать клиентское ПО с помощью HTTP заголовка User-Agent, отправляемое встроенным браузером клиентского ПО.

При обращении к веб–странице «Личного кабинета» оператора клиент должен сообщить о типе платформы (при помощи параметра inetra-platform-idiom), на которой будет отображен пользовательский интерфейс:

Учитывая платформу клиента, веб–страница «Личного кабинета» должна отобразить соответствующий интерфейс и обеспечить навигацию по элементам интерфейса.

Интеграция с внешними платежными системами

Если контрагент поддерживает взаимодействие с внешними платежными системами для совершения покупок, то клиент может передать список поддерживаемых внешних платежных систем при помощи параметра inetra-stores, возможные значения:

Для обеспечения прямой связи c ЛК Оператора клиент должен интегрировать javascript–объект с именем store и интерфейсами:

Клиент должен отсылать события для DOM–элемента «document»:

Пример отправки события «onStoreReady» при помощи javascript:

var readyEvent = document.createEvent('Events')
readyEvent.initEvent('onStoreReady')
readyEvent.store = store
document.dispatchEvent(readyEvent)

Пример отправки события «onPurchaseComplete» при помощи javascript:

var completeEvent = document.createEvent('Events')
completeEvent.initEvent('onPurchaseComplete')
completeEvent.store_id = store_id
completeEvent.product_id = product_id
document.dispatchEvent(completeEvent)

Цели визита

Подписка на каналы

С целью подписки на каналы приложение переходит на страницу «Личного кабинета», передав в параметре inetra-visit-reason значение buy-subscription, а в параметре inetra-channel-ids — числовые идентификаторы каналов, на которые абонент хочет подписаться.

Числовые идентификаторы каналов могут быть получены клиентом из списка каналов (см. документы M3U8 и XSPF) или посредством связывания по названию канала при помощи Media Guide API.

Внимание! Если приложение не сможет определить числовой идентификатор канала, приложение передаст только причину визита абонента (inetra-visit-reason=buy-subscription), без указания выбранного пользователем канала.

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

Родительский контроль

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

Если PIN–код не установлен, то пользователь должен его установить, предварительно получив авторизацию через «Личный кабинет» Оператора. При получении авторизации приложение переходит на веб–страницу «Личного кабинета», передав в качестве параметра inetra-visit-reason значение authorize-for-parental-pincode. Для получения авторизации пользователь должен выполнить шаги инструкции, предоставленной Оператором на открытой веб–странице. Рекомендуемые для Оператора варианты инструкций для получения авторизации пользователем:

Завершение взаимодействия с «Личным кабинетом» Оператора может означать, что пользователь успешно выполнил все шаги инструкции и приложение должно проверить статус авторизации. Чтобы проверить статус авторизации приложение должно выполнить запрос к странице «Личного кабинета» без отображения графического интерфейса, передав в качестве параметра inetra-visit-reason значение check-parental-pincode-authorization:

Автоматизированная система расчетов Оператора должна в течении некоторого времени хранить информацию об успешных и неуспешных попытках подтверждения возраста абонента с целью в дальнейшем сообщить статус авторизации. Успешный статус авторизации должен устанавливаться в АСР Оператора мгновенно по завершению абонентом необходимых шагов.

Для отключения или восстановления забытого PIN–кода пользователь должен повторно получить авторизацию от «Личного кабинета» Оператора. В случае если пользователь отменил установку PIN–кода (покинул экран), клиент должен сбросить разрешение на смену PIN–кода родительского контроля.

Описание сообщений в формате Google Protocol Buffers

PINAuthorizationStatus — проверка статуса авторизации на сброс PIN–кода родительского контроля

message PINAuthorizationStatus {
  enum Status {
    ACCEPTED = 0;
    REJECTED = 1;
    NOT_REQUESTED = 2;
  }

  optional Status status = 1;
  optional uint32 expire_in = 2 [default = 3600];
  optional String reason = 3;
}

Замечания:

Изменения по версиям

Изменения в версии 1.0.0 (TVREC–378)

Изменения в версии 1.0.1

Изменения в версии 1.0.2

Изменения в версии 1.1.0 (TVREC–515)

Изменения в версии 1.2 (TVREC–591)

Изменения в версии 1.3 (TVREC–677)

Изменения в версии 1.3.1

Изменения в версии 1.3.2 (TVREC–816)

Изменения в версии 1.4.0 (TVREC–907)