Versions Compared

Key

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

Для доступа к описанию и получения API-токена необходимо авторизоваться в админ-панели (логин / пароль запросить у менеджера).

...

API-инструментарий (SWAGGER).

Логи запросов от 24ТВ.

Бизнесы-процессы и методология тестирования изложены последнем разделе “Тестирование схемы интеграции”.

...

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

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

...

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

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

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

...

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://provapi.24h.tv/v2/packets?token=<TOKEN>&includes=<availables,includes,videos,channels>

  • Будут выведены все пакеты провайдера, в том числе неопубликованные. Пакеты с флагом is_public=false не будут показываться абоненту в приложении.

  • На первом уровне списка — базовые пакеты. Чтобы увидеть дополнительные пакеты в виде дерева, добавьте аргумент includes=availables. Дополнительные пакеты будут в ключе «availables» каждого пакета

  • Возможные значения параметра includes :

    • availables — получение возможных пакетов для подключения

    • includes — получение включенных дополнительных пакетов в базовые

    • videos — включение в ответ информации о видеоисточниках, включенных в пакет

    • channels — каналы в данном пакете

  • Значения includes можно комбинировать через запятую: includes=availables,videos

...

Запрос плоского списка пакетов.

https://provapi.24h.tv/v2/?token=<TOKEN>

  • При запросе с указанием провайдерского токена token будут выведены все пакеты провайдера, в том числе неопубликованные

  • При запросе с указанием пользовательского токена access_token будут выведены только пакеты, видимые этому пользователю

  • Если нужны только базовые пакеты, добавьте аргумент фильтра is_base=true. Если только дополнительные, добавьте is_base=false

...

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

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

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

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

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

...

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

Параметры:

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

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

...

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

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

Запрос к провайдеру BALANCE.

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

https://<API URL>/balance?user_id=<Provider_user_id>

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

...

Согласно договору необходимо реализовать:

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

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

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

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

ВАЖНО! На стороне 24ТВ прописываются IP адреса провайдера. При регистрации абонента в 24ТВ с этих адресов, он автоматически попадает/соотносится к провайдеру, и оплата возможна только провайдеру. Если абонент ранее зарегистрирован и числится за другим провайдером, не имеет платных подписок, то при 3-х кратном в сутки запуске приложения с указанных IP адресов, он будет автоматически соотнесен к провайдеру - владельцу IP адресов. Если абонент регистрировался из другой сети, например, из сети мобильного оператора, вы можете выполнить перенос абонента самостоятельно через админ-панель, при соответствии условиям: прошел регистрацию не из вашей сети, хотя бы раз выполнил вход из вашей сети ; и не привязан к другому провайдеру. Для этого достаточно в поиске написать номер телефона такого абонента и согласиться на перенос нажав кнопку "Pick up user".

...

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

https>https://<API URL>/auth?ip=<ip_address>&phone=<phone>&mbr_id=<user_id>&provider_id=<provider_id>

где:

  • 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ТВ.

...

Запрос синхронный. Биллинговая система провайдера после получения данного запроса определяет возможность подключения желаемого платного пакета, подключает платный пакет через API платформы 24ТВ (используя метод https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions?token=<TOKEN>) и возвращает положительный ответ в успешном случае или отрицательный ответ с текстом сообщения об ошибке, которое транслируется в приложение пользователю.

...

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

  • Если у абонента подключен базовый пакет с меньшей стоимостью - необходимо подключить новый с текущего времени. Для этого необходимо сначала остановить старый базовый пакет путем отправки запроса DELETE https://provapi.24h.tv/v2/users/<ID пользователя в платформе 24часаТВ>/subscriptions/<ID подписки>?token=<TOKEN>, после этого отправить запрос в 24часаТВ на подключение нового пакета.

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

Запрос https://<API URL>/packet?user_id=<Provider_user_id>&trf_id=<ID платного пакета в платформе 24часаТВ>

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

...

Code Block
 {"status":-1,"errmsg":"Недостаточно средств на счету"}

ВАЖНО! В случае нехватки денежных средств, запрос PACKET всегда должен возвращать status = -1
В случае других причин используйте любые другие коды с отрицательным значением (-2, -3 и т.п.)

...

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

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

Запрос: https://<API URL>/delete_subscription?user_id=<Provider_user_id>&sub_id=<ID подписки в платформе 24часаТВ>

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

...

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

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

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ТВ

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

...