Для операторов–партнеров предусмотрена возможность интеграции «Личного кабинета» абонента автоматизированной системы расчетов (АСР) при помощи встраивания веб–страницы непосредственно в клиенте, что позволяет абоненту осуществлять покупку недоступных каналов или авторизацию на установку (сброс) PIN–кода родительского контроля.
Для этого оператор должен предоставить адрес веб–страницы «Личного кабинета» абонента автоматизированной системы расчетов, по которому приложение будет переходить для осуществления действий. Адрес на веб–страницу «Личного кабинета» может быть получен посредством Registry API.
При переходе на страницу «Личного кабинета» приложение передает дополнительные параметры методом GET протокола HTTP, позволяющие автоматизированной системе расчетов определить, с какой целью пришел абонент.
параметр | значения | смысл |
---|---|---|
inetra-visit-reason |
константа | причина визита абонента |
inetra-callback-url |
строка | кодированный URL страницы обратного вызова |
inetra-platform-idiom |
константа | тип клиентской платформы (подробности см. Выбор графического интерфейса пользователя) |
Подписка на каналы | ||
inetra-channel-ids |
числа через , |
числовые идентификаторы выбранных пользователем каналов |
Интеграция с внешними платежными системами | ||
inetra-stores |
строки через , |
идентификаторы внешних платежных систем (см. «Интеграция с внешними платежными системами») |
Возможные причины визита, inetra-visit-reason
:
buy-subscription
— желание абонентом подписаться на каналы;authorize-for-parental-pincode
– желание абонента получить авторизацию на сброс (на установку) PIN–кода родительского контроля посредством принудительной аутентификации в «Личном кабинете».check-parental-pincode-authorization
— запрос клиентом статуса выполненной ранее процедуры авторизации абонента на сброс PIN–кода родительского контроля (независимо от способа авторизации).Если параметр inetra-visit-reason
не указан, автоматизированная система расчетов может считать такое обращение как визит страницы «Личного кабинета» абонента без явно указанной цели. Подробное описание каждой цели визита находится в разделе «Цели визита».
Клиент должен отобразить веб–страницу как есть, отслеживая переходы на адрес, закодированный в параметре inetra-callback-url
.
Завершение взаимодействия пользователя со страницей автоматизированной системы расчета может быть осуществлено двумя способами:
inetra-callback-url
. В случае перехода на указанный адрес клиент должен закрыть браузер.При обращении к «Личному кабинету» клиент может указать аутентификационные данные пользователя с использованием схем HTTP Basic Auth или Bearer. Для схемы Bearer рекомендуется использовать HTTP заголовок Authorization
.
Автоматизированная система расчетов Оператора может запретить доступ к интерфейсу «Личного кабинета» неабонентам, вернув специальным образом сформированную страницу.
Для выбора способа формирования графического интерфейса веб-страницы «Личного кабинета» с учетом особенностей конкретного клиента, такими как дизайн, возможности браузера, разработчик клиента должен самостоятельно или при участии Инетры договориться с контрагентом о способе идентификации его приложения.
На данный момент рекомендуется идентифицировать клиентское ПО с помощью HTTP заголовка User-Agent
, отправляемое встроенным браузером клиентского ПО.
При обращении к веб–странице «Личного кабинета» оператора клиент должен сообщить о типе платформы (при помощи параметра inetra-platform-idiom
), на которой будет отображен пользовательский интерфейс:
mobile
— мобильный клиент, подразумевает ввод информации с использованием сенсорного экрана;tv
— телевизор или телевизионная приставка, подразумевает ввод информации при помощи пульта дистанционного управления;web
— сайт, подразумевает ввод информации при помощи манипулятора мышь или клавиатуры.Учитывая платформу клиента, веб–страница «Личного кабинета» должна отобразить соответствующий интерфейс и обеспечить навигацию по элементам интерфейса.
Если контрагент поддерживает взаимодействие с внешними платежными системами для совершения покупок, то клиент может передать список поддерживаемых внешних платежных систем при помощи параметра inetra-stores
, возможные значения:
google_play
— Google Play;apple_store
— Apple AppStore.Для обеспечения прямой связи c ЛК Оператора клиент должен интегрировать javascript–объект с именем store
и интерфейсами:
store_id
— строковый идентификатор внешней платежной системы;product_id
— строковый идентификатор продукта.store_id
— строковый идентификатор внешней платежной системы.Клиент должен отсылать события для DOM–элемента «document»:
store
;Пример отправки события «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
:
401
. Для прохождения аутентификации клиент должен воспользоваться запрошенными ранее аутентификационными данными или запросить их у пользователя;PINAuthorizationStatus
.Автоматизированная система расчетов Оператора должна в течении некоторого времени хранить информацию об успешных и неуспешных попытках подтверждения возраста абонента с целью в дальнейшем сообщить статус авторизации. Успешный статус авторизации должен устанавливаться в АСР Оператора мгновенно по завершению абонентом необходимых шагов.
Для отключения или восстановления забытого PIN–кода пользователь должен повторно получить авторизацию от «Личного кабинета» Оператора. В случае если пользователь отменил установку PIN–кода (покинул экран), клиент должен сбросить разрешение на смену 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;
}
Замечания:
status
— статус авторизации на установку (на сброс) PIN–кода родительского контроля:
ACCEPTED
— подтверждена;REJECTED
— отклонена, не пройдены все шаги для подтверждения возраста;NOT_REQUESTED
— запросов на получение авторизации от абонента не поступало.expire_in
— время в секундах, в течении которого клиент может установить или сбросить PIN–код родительского контроля. Значение по умолчанию — 3600 секунд;reason
— причина отклонения авторизации, может присутствовать в случае статуса REJECTED
.inetra-platform-idiom
, описывающий тип клиентской платформы.Bearer
.