Для доступа к описанию и получения API-токена необходимо авторизоваться в админ-панели (логин / пароль запросить у менеджера).
...
Бизнесы-процессы и методология тестирования изложены последнем разделе “Тестирование схемы интеграции”.
...
Для регистрации пользователя в платформе 24ТВ необходимо использовать вызов API:
Описание https://provapi.24h.tv/v2/doc/provider#!/Users/post_users
Тип запроса: POST
<http или https>https://provapi.24h.tv/v2/users?token=<TOKEN>
...
{ "error": { "message": "{'email': ['User with this email already exists.'], 'phone': ['User with this phone already exists.'], 'username': ['User with this username already exists.']}" }, "status_code": 400, "detail": { "email": [ "User with this email already exists." ], "phone": [ "User with this phone already exists." ], "username": [ "User with this username already exists." ] } }
Поле email не является обязательным. Чтобы не было ошибки при передаче email пустым, это поле можно в параметрах не указывать.
Изменение информации о пользователе.
Метод позволяет изменить часть пользовательских данных и возвращает измененные данные пользователя.Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/patch_users_user_id
Тип запроса: PATCH
User_ID - полученный при создании пользователя:
<http или https>https://provapi.24h.tv/v2/users/<User_ID>?token=<TOKEN>
...
В случае неверных данных будет возвращена ошибка с описанием в json формате.
В случае блокировки пользователя, установкой флага is_active=false, данный пользователь не сможет войти в приложение 24ТВ. При этом подписки на пакеты не отключаются! Если вам необходимо блокировать пользователя, то перед этим остановите все его активные подписки!
Получение списка зарегистрированных пользователей.
Метод получать список всех зарегистрированных пользователей провайдера.Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/get_usersсписок всех зарегистрированных пользователей провайдера.
Тип запроса: GET
<http или https>https://provapi.24h.tv/v2/users?token=<TOKEN>
...
Code Block |
---|
[ { "id": <id пользователя в платформе 24часаТВ>, "username": "<username пользователя>", "first_name": "<Имя пользователя>", "last_name": "<Фамилия пользователя>", "phone": "<Номер телефона>", "email": "<email пользователя>", "timezone": null, "provider": { "id": <ID провайдера в платформе 24часаТВ>, "name": "<Название провайдера>", "proxy": null, "landing": { "shortname": "<Краткое название провайдера>", "logo": null, "url": "", "support": { "phone": "<Телефон провайдера>", "url": "<URL провайдера>" }, "login": { "title": "", "description": "<Сообщение приветствия при регистрации>" } } }, "provider_uid": "<id пользователя в биллинговой системе провайдера>" }, ... список остальных пользователей, вырезан для краткости ] |
При выводе большого списка используется постраничный вывод, поэтому, для получения полного списка пользователей необходимо в запрос добавлять параметры &limit= и &offset=.
Поиск пользователя среди зарегистрированных.
...
Поиск по id пользователя:
Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/get_users_user_id
Тип запроса: GET
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>?token=<TOKEN>
...
По номеру телефона или по id в биллинговой системе провайдера:Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/get_users
Тип запроса: GET
по номеру телефона:
<http или https>https://provapi.24h.tv/v2/users?phone=<Номер телефона абонента>&token=<TOKEN>
по ID в биллинговой системе провайдера:
<http или https>https://provapi.24h.tv/v2/users?provider_uid=<ID пользователя из биллинговой системы провайдера>&token=<TOKEN>
...
Запрос иерархичного списка пакетов.
https://provapi.24h.tv/v2/doc/provider#!/Packets/get_packets
...
packets?token=<TOKEN>&includes=<availables,includes,videos,channels>
Будут выведены все пакеты провайдера, в том числе неопубликованные. Пакеты с флагом
is_public=false
не будут показываться абоненту в приложении.На первом уровне списка — базовые пакеты. Чтобы увидеть дополнительные пакеты в виде дерева, добавьте аргумент
includes=availables
. Дополнительные пакеты будут в ключе «availables» каждого пакетаВозможные значения параметра
includes
:availables
— получение возможных пакетов для подключенияincludes
— получение включенных дополнительных пакетов в базовыеvideos
— включение в ответ информации о видеоисточниках, включенных в пакетchannels
— каналы в данном пакете
Значения
includes
можно комбинировать через запятую:includes=availables,videos
...
Без параметра includes
будет возвращен список базовых тарифов.
<http или https>https://provapi.24h.tv/v2/packets?token=<TOKEN>
...
Запрос плоского списка пакетов.
https://provapi.24h.tv/v2/doc/provider#!/Packets/get_packets_flat?token=<TOKEN>
При запросе с указанием провайдерского токена
token
будут выведены все пакеты провайдера, в том числе неопубликованныеПри запросе с указанием пользовательского токена
access_token
будут выведены только пакеты, видимые этому пользователюЕсли нужны только базовые пакеты, добавьте аргумент фильтра
is_base=true
. Если только дополнительные, добавьтеis_base=false
Подключение пакета.
...
Тип запроса: POST
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions?token=<TOKEN>
Передаваемые параметры:
...
Code Block |
---|
{ "error": { "message": "['You need billing account for subscription.']" }, "status_code": 400, "detail": [ "You need billing account for subscription." ] |
Отключение пакета.
Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/delete_users_user_id_subscriptions_subscription_id
Тип запроса: DELETE
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>?token=<TOKEN>
...
Для получения текущих подписок пользователя используется вызов API платформы 24ТВ:Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/get_users_user_id_subscriptionsплатформы 24ТВ:
Тип запроса: GET
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/current?token=<TOKEN>
...
Для получения списка всех когда либо назначенных подписок используется запрос:
Тип запроса: GET
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions?token=<TOKEN>
...
Используется при необходимости персонализировать название, описание или цену пакета для любого абонента.Описание - https://provapi.24h.tv/v2/doc/provider#!/Packets/post_users_user_id_packets
Тип запроса: POST
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/packets?token=<TOKEN>
Передаваемые параметры:
{
"name": "<Название пакета для абонента>",
"price": "<Отображаемая стоимость для абонента>",
"description": "<Отображаемое описание пакета для абонента>",
"packet_id": <ID пакета для персонализации>
}
...
В случае, если пользователь провайдера желает приостановить свои платные подписки на неопределенное время возможна установка паузы у подписок.
Получение списка подписок установленных на паузу:
Получение списка подписок установленных на паузу:
Тип запроса: GET
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>/pauses?token=<TOKEN>
...
Установка подписки на паузу:Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/post_users_user_id_subscriptions_subscription_id_pauses
Тип запроса POST
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>/pauses?token=<TOKEN>
...
{
"detail": "Не найдено.", "error": { "message": "Не найдено." }, "status_code": 404 }
Постановка всех подписок пользователя на паузу.
Установка подписки на паузу:
...
_code": 404 }
Постановка всех подписок пользователя на паузу.
Установка подписки на паузу:
Тип запроса POST
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/pauses?token=<TOKEN>
...
{
"detail": "Не найдено.", "error": { "message": "Не найдено." }, "status_code": 404 }
Снятие с паузы.
...
Тип запроса DELETE
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>/pauses/<ID паузы>?token=<TOKEN>
...
{
"detail": "Не найдено.", "error": { "message": "Не найдено." }, "status_code" : 404 }
Снятие с паузы всех подписок.
...
}, "status_code": 404 }
Снятие с паузы всех подписок.
Тип запроса DELETE
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/pauses/<ID паузы>?token=<TOKEN>
...
Установка отображаемого баланса:Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/post_users_user_id_provider_account
Тип запроса POST
<http или https>://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/provider/account?token=<TOKEN>
Параметры:
id - id лицевого счета в биллинговой системе провайдера
amount - значение отображаемого баланса в рублях
...
Метод для просмотра установленного значения:
Описание - https://provapi.24h.tv/v2/doc/provider#!/Users/get_users_user_id_provider_account
Тип запроса: GET
<http или https>://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/provider/account?token=<TOKEN>
...
{ "status_code": 404, "error": { "message": "Не найдено." }, "detail": "Не найдено." }
Другой способ - отображать баланс напрямую из биллинга интеграционным запросом BALANCE. Запрос будет отправлен в сторону провайдера при входе абонента в настройки приложения.
Запрос к провайдеру BALANCE.
Данный запрос Запрос отправляется в биллинг провайдера при входе абонента в личный кабинет 24ТВ или настройки приложения. Для включения данного запроса в сторону провайдера необходимо о этом сообщить службе поддержки 24ТВ.
Запрос: <http или https>://<Интергационный урл><API URL>/balance?user_id=<Provider_user_id>
В теле запроса будет json такого типа:
...
AUTH-запрос - автоматический поиск пользователя в биллинговой системе по IP-адресу (реальному или «серому») и привязку к учетной записи (метод AUTH - аутентификации). Данный функционал должен быть доступен для любого пользователя постоянно.
В случае использования «серых» IP-адресов в сети и NAT (преобразование сетевых адресов) - наличие proxy-сервера для направления запросов к Сервису для определения фактических IP-адресов Пользователей (инструкция Установка proxy сервера на стороне провайдера при работе клиентов через NAT).
PACKET-запрос - отработку со стороны системы биллинга запросов пользователей на подключение ТВ-пакетов из приложений (метод PACKET). Данный функционал должен быть постоянно включен для всех пользователей. Запросы должны отрабатываться для любых пакетов , кроме бандлов, при наличии положительного баланса на счету пользователя.
списание Списание оплаты за подключаемые из приложения продукты с основного счета пользователя в системе биллинга
ВАЖНО! На стороне 24ТВ прописываются IP адреса провайдера. При регистрации абонента в 24ТВ с этих IP- адресов, он автоматически попадает/соотносится к провайдеру, после чего и оплата возможна только провайдеру. Если абонент ранее зарегистрирован и числится за другим провайдером при этом , не имеет платных подписок, то при трёхкратном 3-х кратном в сутки запуске приложения с указанных IP адресов, он будет автоматически соотнесен к провайдеру - владельцу IP адресов. Если абонент регистрировался из другой сети, например, из сети мобильного оператора, вы можете выполнить перенос абонента самостоятельно через админ-панель, при соответствии условиям: прошел регистрацию не из вашей сети, хотя бы раз выполнил вход из вашей сети; не привязан к другому провайдеру. Для этого достаточно в поиске написать номер телефона такого абонента и согласиться на перенос нажав кнопку "Pick up user".
Цель AUTH-запроса - установить соответствие у пользователя между системой 24ТВ и биллингом провайдера - присвоить <provider_user_id>.В дальнейшем <provider_user_id> будет сообщаться провайдеру в запросе PACKET. При входе в приложение метод AUTH (запрос на получение идентификатора пользователя<provider_user_id>) придёт в API провайдера, если у пользователя не заполнено поле <provider_user_id> и используется биллинговая схема "simple_auth" (схема устанавливается службой поддержки 24ТВ по запросу провайдера). [cм. также файл “Схема обратной интеграции”]
На указанный провайдером интеграционный URL 24ТВ отправляет POST-запрос (параметры передаются в строке запроса):
<http или https>://<url для интеграции>:<порт><API URL>/auth?ip=<ip_address>&phone=<phone>&mbr_id=<user_id>&provider_id=<provider_id>
где:
url для интеграции: порт - url и порт указанный провайдером. Должен API URL должен заканчиваться на "/" так как далее к этому URL добавляется "auth?ip=..." или "packet?user_id=..." или "cont?user_id=..."
ip_address - ip адрес абонента.
phone - номер мобильного телефона, с которого зарегистрировался абонент.
mbr_id (user_id) - id учетной записи в 24ТВ.
provider_id - id провайдера (админки) в 24ТВ.
Платформа 24ТВ ожидает ответ в формате json:
...
Запрос синхронный. Биллинговая система провайдера после получения данного запроса определяет возможность подключения желаемого платного пакета, подключает платный пакет через API платформы 24ТВ (используя метод https://provapi.24h.tv/v2/users/<user_id><ID пользователя в платформе 24часаТВ>/subscriptions?token=<TOKEN>) и возвращает положительный ответ в успешном случае или отрицательный ответ с текстом сообщения об ошибке, которое транслируется в приложение пользователю.
Обращаем внимание, что в сервисе 24ТВ пакеты Пакеты обычно подключаются на месяц. Поэтому , при смене базового пакета должна быть реализована следующая логика:
Если у абонента уже подключен базовый пакет с большей стоимостью - необходимо отменить его автопродление (установкой флага renew=false) и подключить новый пакет с даты окончания текущего.
Если у абонента подключен базовый пакет с меньшей стоимостью - необходимо подключить новый с текущего времени. Для этого необходимо сначала остановить старый базовый пакет путем отправки запроса DELETE https://provapi.24h.tv/v2/users/{user-id}/subscriptions<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>?token=<TOKEN>, после этого отправить запрос в 24часаТВ на подключение нового пакета.
Тип запроса: POST
Запрос: <http или https> https://<Интергационный урл><API URL>/packet?user_id=<Provider_user_id>&trf_id=<ID платного пакета в платформе 24часаТВ>
В теле запроса будет json такого типа:
...
{"status":-1,"errmsg":"Недостаточно средств на счету"}
ВАЖНО! В случае нехватки денежных средств, запрос PACKET всегда должен возвращать status = -1
В случае других причин используйте любые другие коды с отрицательным значением (-2, -3 и т.п.)
...
Обращаем внимание, что в сервисе 24часаТВ по агентской схеме пакеты подключаются на срок не менее месяца. Поэтому биллинговая система при запросе пользователя на отключение должен снять автопродление пакета в собственной базе и проинформировать об этом сервис установкой флага renew=false в соответствующей подписке.
Тип запроса: POST
Запрос: <http или https>https://<Интергационный урл><API URL>/delete_subscription?user_id=<Provider_user_id>&sub_id=<ID подписки в платформе 24часаТВ>
В теле запроса будет json такого типа:
...
В случае расторжения договора с абонентом - перехода к другому провайдеру, необходимо обеспечить его возможностью оплаты не с лицевого счета в вашем биллинге. Для этого используется метод переноса в 24ТВ.
Тип запроса: PUT
<http или https>https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/change_provider/1?token=<TOKEN>
где 1 - id провайдера 24ТВ
...
Тестирование схемы интеграции.
№ | Тест (бизнес-процесс) | Действие | Результат | Замечания |
Действия через тв-приложение | ||||
1 | Саморегистрация абонента через тв-приложение (реальный ip адрес) | Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента с этим ip адресом и общим балансом. Проставление provider_uid в системе 24ТВ | ||
2 | Саморегистрация абонента через тв-приложение (серый ip адрес) | Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента с этим ip адресом и общим балансом. Проставление provider_uid в системе 24ТВ | ||
3 | Саморегистрация абонента через тв-приложение (динамический ip адрес) | Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента, которому выдан данный динамический-ip адрес в текущий момент, и общим балансом. Проставление provider_uid в системе 24ТВ | ||
4 | Подключение через тв-приложение базового пакета | В биллинге должно произойти списание денежных средств с договора/учетки/услуги и подключен этот пакет в биллинге и в 24ТВ | ||
5 | Подключение через тв-приложение дополнительного пакета | В биллинге должно произойти списание денежных средств с договора/учетки/услуги и подключен этот пакет в биллинге и в 24ТВ | ||
6 | Переход через тв-приложение на более дорогой пакет | В биллинге должно произойти списание денежных средств и подключен этот пакет в биллинге и в 24ТВ (см. также действия через биллинг п. 12) | ||
7 | Переход через тв-приложение на дешевый пакет | В биллинге должно произойти планирование перехода на более дешевый пакет после окончания более дорогого (см. действия через биллинг п. 13, 14) | ||
8 | Отключение подписки через тв-приложение | Отключения флага автопродления в системе 24ТВ и биллинге провайдера | ||
Действия через биллинг | ||||
9 | Создание тв договора/учетки/услуги через биллинг | Абонент должен появиться в системе 24ТВ с корректным номером телефона и provider_uid | ||
10 | Подключение базового пакета через биллинг | В системе 24ТВ должна появиться подписка на данный пакет | ||
11 | Подключение дополнительного пакета через биллинг | В системе 24ТВ должна появиться подписка на данный пакет | ||
12 | Переход на более дорогой базовый пакет | В системе 24ТВ должна появиться подписка на данный пакет, предыдущий дешевый должна быть отключен. Если у абонента вместе с дешевым был включен доп. пакет, который входит в запрошенный дорогой (см. также запрос иерархичного списка пакетов, includes=availables и получение списка подписок на пакеты пользователя), то его также необходимо отключить. | ||
13 | Переход на более дешевый базовый пакет | В билинге должна быть запланирована подписка на более дешевый пакет после окончания более дорогого. Пример: с Премиум (999 ₽) на Оптимум+ (399 ₽). | ||
14 | Переход на другой более дешевый базовый пакет | В билинге должна быть запланирована подписка на новый более дешевый пакет после окончания более дорогого. Пример: с Премиум (999 ₽) на Оптимум+ (399 ₽) и не дожидаясь его включения, на Лайт+(199 ₽). | ||
15 | Постановка подписки на паузу через биллинг | В системе 24ТВ подписка должна быть приостановлена | ||
16 | Снятие подписки с паузы через биллинг | В системе 24ТВ подписка должна быть возобновлена | ||
17 | Остановка/закрытие подписки через биллинг | Подписка в системе 24ТВ должна быть остановлена | ||
18 | Проверка корректного отображения баланса из биллинга в тв-приложении | Должен отображаться правильный баланс из билинга в тв-приложении | ||
19 | Расторжение договора - перенос в 24ТВ | Пользователь становится недоступным в админ панели провайдера, у него появляется возможность оплаты банковской картой. |
...