Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Для доступа к описанию необходимо авторизоваться в кабинете оператора.Для доступа к описанию необходимо авторизоваться в кабинете оператора.

Полное описание (SWAGGER) https://api.24h.tv/v2/doc/provider#!/

...

Для доступа к API необходимо зарегистрироваться в 24ТВ, через менеджера получить доступ к личному кабинету провайдера и сгенерировать там TOKEN https://24h.tv/admin/settings/tokens/

Логи запросов от 24ТВ к партнёру по ссылке https://24htv.platform24.tv/admin/api-requests/

...

{ "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 пустым, его это поле можно в параметрах не указывать.

Изменение информации о пользователе.

...

{

"username": "<username пользователя>",
"first_name": "<Имя пользователя>",
"last_name": "<Фамилия пользователя>",
"provider_uid": "<id в биллинговой системе провайдера>",
"password": "<пароль>", <Только для платформенных клиентов с авторизацией по логину/паролю.> паролю>,
"is_provider_free": <Доступ к тв не из сети провайдера (false - запретить, true - разрешить)>,
"is_active": <Активность пользователя (false - заблокирован, true - активен)>
}

...

В случае неверных данных будет возвращена ошибка с описанием в json формате.

В случае блокировки пользователя, установкой флага is_active=false, данный пользователь не сможет войти в приложение 24ТВ. При этом подписки на пакеты не отключаются! Если вам необходимо блокировать пользователя, то перед этим остановите все его активные подписки!

Получение списка зарегистрированных пользователей.

...

В ответ будет возвращены данные в json формате со списком всех пользователей провайдера:

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= для получения полного списка пользователей.

Поиск пользователя

...

среди зарегистрированных

...

.

Поиск пользователей возможен по:

...

Описание - https://api.24h.tv/v2/doc/provider#!/Users/get_users

Тип запроса: GET

   поиск по номеру телефона:

   <http или https>://api.24h.tv/v2/users?phone=<Номер телефона абонента>&token=<TOKEN>

  поиск по ID из в биллинговой системы системе провайдера:

  <http или https>://api.24h.tv/v2/users?provider_uid=<ID пользователя из биллинговой системы провайдера>&token=<TOKEN>

...

Получение списка пакетов.

Для получения информации о пакетах провайдера в платформе 24ТВ необходимо использовать соответствующий метод API.

В платформе 24ТВ пакеты разделены на два типа: Базовые пакеты (в ответе "base": true) и Дополнительные пакеты (в ответе "base": false).

...

Code Block
{
  "error": {
    "message": "['You need billing account for subscription.']"
  },
  "status_code": 400,
  "detail": [
    "You need billing account for subscription."
  ]

Отключение

...

пакета

...

.

Описание - https://api.24h.tv/v2/doc/provider#!/Users/delete_users_user_id_subscriptions_subscription_id

...

Response Code - 200

Code Block
[{

"id": "<ID подписки>", # Идентификатор подписки
"renew": true, # Автообновление подписки
"is_paused": false, # Стоит ли подписка на паузе
"packet": {
    "id": <ID пакета>,
    "name": "<Описание пакета>",  # Название пакета
    "price": "<Стоимость пакета>"  # Цена пакета
},
"start_at": "2017-09-04T20:15:30.000Z", # Время начала подписки
"end_at": "2017-10-04T20:15:29.000Z"  # Время окончания подписки
}]

...

Описание - https://api.24h.tv/v2/doc/provider#!/Packets/post_users_user_id_packets

Тип запроса: POST

<http или https>://api.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/packets?token=<TOKEN>

Передаваемые параметры:

{
"name": "<Название пакета для абонента>",
"price": "<Отображаемая стоимость для абонента>",
"description": "<Отображаемое описание пакета для абонента>",
"packet_id": <ID пакета для персонализации>
}

...

{

"detail": "Не найдено.", "error": { "message": "Не найдено." }, "status_code": 404 }

Снятие с паузы подписки

...

.

Описание - https://api.24h.tv/v2/doc/provider#!/Users/delete_users_user_id_subscriptions_subscription_id_pauses_pause_id

...

{

"detail": "Не найдено.", "error": { "message": "Не найдено." }, "status_code": 404 }

Снятие с паузы всех подписок

...

.

Описание - https://api.24h.tv/v2/doc/provider#!/Users/delete_users_user_id_pauses

...

<http или https>://api.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/provider/account?token=<TOKEN>

Параметры:

  • id - id лицевого счета в биллинговой системе провайдера

  • amount - значение отображаемого баланса в рублях

...

{ "status_code": 404, "error": { "message": "Не найдено." }, "detail": "Не найдено." }

Так же есть метод Метод для просмотра установленного значения:

...

{ "status_code": 404, "error": { "message": "Не найдено." }, "detail": "Не найдено." }

Есть возможность отображать баланс напрямую из биллинга интеграционным запросом BALANCE. Данный запрос будет отправлен в сторону провайдера при входе абонента в личный кабинет или настройки в тв приложении. Запрос BALANCE описан ниже в следующем разделе.

Методы формируемые платформой в сторону интеграции оператора (биллинга).

...

  • AUTH запрос - автоматический поиск Пользователя пользователя в Биллинговой биллинговой системе по IP-адресу (реальному или «серому») и привязку Пользователя пользователя к учетной записи (метод AUTH - аутентификации). Данный функционал должен быть доступен для любого Пользователя пользователя постоянно;

  • В случае использования «серых» IP-адресов в сети и NAT (преобразование сетевых адресов) - наличие proxy-сервера для направления запросов к Сервису для определения фактических IP-адресов Пользователей (инструкция Установка proxy сервера на стороне провайдера при работе клиентов через NAT)

  • PACKET запрос - отработку со стороны системы биллинга запросов Пользователей пользователей на подключение ТВ-пакетов из Приложений приложений (метод PACKET). Данный функционал должен быть постоянно включен для всех Пользователейпользователей. Запросы должны отрабатываться для любых пакетов , кроме Бандловбандлов, при наличии положительного баланса на счету Пользователяпользователя.

  • списание оплаты за подключаемые из Приложения Продукты приложения продукты с основного счета Пользователя пользователя в системе биллинга

На стороне 24ТВ прописываются IP адреса провайдера. При регистрации абонентом абонента в Приложении 24ТВ с этих IP-адресов, он автоматически попадает/соотносится к провайдеру, после чего оплата возможна только провайдеру. Если абонент ранее зарегистрирован и числится за другим провайдером при этом не имеет платных подписок, то при трёхкратном подряд в сутки запуске приложения в сутки с указанных IP адресов, он будет автоматически соотнесен к провайдеру - владельцу IP адресов.

Цель AUTH запроса - установить соответствие у пользователя между системой 24ТВ и биллингом провайдера, в дальнейшем <provider_user_id> будет сообщаться провайдеру в запросе PACKET. При входе в приложение абонентом метод AUTH (запрос на получение идентификатора пользователя) придет придёт в API провайдера, если у пользователя не заполнен заполнено поле <provider_user_id> и используется биллинговая схема "simple_auth" (схема устанавливается службой поддержки 24ТВ по запросу провайдера). Цель AUTH запроса - установить соответствие у пользователя между системой 24ТВ и биллингом провайдера, в дальнейшем <provider_user_id> будет сообщаться провайдеру в запросе PACKET. См[cм. также файл “Схема обратной интеграции”.

AUTH каждый раз отправляется провайдеру при входе в приложение абонентом до тех пор пока не будет заполнен <provider_user_id>.

]

На указанный провайдером интеграционный url система URL 24ТВ отправляет POST-запрос формата (параметры передаются в строке запроса):

<http или https>://<url для интеграции>:<порт>/auth?ip=<ip_address>&phone=<phone>&mbr_id=<user_id>&provider_id=<provider_id>

где:

  • url для интеграции: порт - 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ТВ к биллинговой системе провайдера, когда пользователь желает подключить тот или иной платный пакет через ТВ-приложение.

...

  • Если у абонента уже подключен базовый пакет с большей стоимостью - необходимо отменить его автопродление (установкой флага renew=false) и подключить новый пакет с даты окончания текущего.

  • Если у абонента подключен базовый пакет с меньшей стоимостью - необходимо подключить новый с текущего времени. Для этого необходимо сначала остановить старый базовый пакет путем отправки запроса DELETE /users/{user-id}/subscriptions, после этого отправить запрос в 24часаТВ на подключение нового пакета.

Тип запроса: POST

Запрос: <http или https>://<Интергационный урл>/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>://<Интергационный урл>/delete_subscription?user_id=<Provider_user_id>&sub_id=<ID подписки в платформе 24часаТВ>

В теле запроса будет json такого типа:

...

Данный запрос отправляется в биллинг провайдера при входе абонента в личный кабинет 24ТВ или настройки приложения. Для включения данного запроса в сторону провайдера необходимо о этом сообщить службе поддержки 24ТВ.

Запрос: <http или https>://<Интергационный урл>/balance?user_id=<Provider_user_id>

В теле запроса будет json такого типа:

...

 {"status":-1,"errmsg":"<Причина ошибки>"}

Логи.

Посмотреть логи по запросам в биллинг провайдера можно в панели администратора открыв раздел Инструменты https://24htv.platform24.tv/admin/api-requests/

...

Тестирование схемы интеграции.

Тест (Бизнесбизнес-процесс)

Действие

Результат

Замечания

Действия через тв-приложение

1

Саморегистрация абонента через тв-приложение (реальный ip адрес)

Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента с этим ip адресом и общим балансом. Проставление provider_uid в системе 24ТВ



2

Саморегистрация абонента через тв-приложение (серый ip адрес)

Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента с этим ip адресом и общим балансом. Проставление provider_uid в системе 24ТВ



3

Саморегистрация абонента через тв-приложение (динамический ip адрес)

Появление в биллинге договора/учетки/услуги на тв, привязанной к интернет-договору абонента, которому выдан данный динамический-ip адрес в текущий момент, и общим балансом. Проставление provider_uid в системе 24ТВ



4

Подключение через тв-приложение базового пакета

В биллинге должно произойти списание денежных средств с договора/учетки/услуги и подключен этот пакет в биллинге и в 24ТВ



5

Подключение через тв-приложение дополнительного пакета

В биллинге должно произойти списание денежных средств с договора/учетки/услуги и подключен этот пакет в биллинге и в 24ТВ



6

Переход через тв-приложение на более дорогой пакет

В биллинге должно произойти списание денежных средств с договора/учетки/услуги и подключен этот пакет в биллинге и в 24ТВ



7

Переход через тв-приложение на дешевый дорогой пакет

В биллинге должно произойти планирование перехода на более дешевый пакет после окончания более дорогого



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

Проверка корректного отображения баланса из биллинга в тв-приложении

Должен отображаться правильный баланс из билинга в тв-приложении



...