Платное радио пример реализации

Программная реализация платного прослушивания радио при помощи API нашей панели управления.

В нашей платформе Интернет-радио предусмотрена возможность создания защищенных ссылок на прослушивание. Вручную такими слушателями можно управлять в разделе "Пользователи" - "Авторизованные слушатели". Данная возможность поддерживается только для потоков сервера Icecast, Shoutcast 1 и 2 версий не поддерживают авторизацию для ссылок на потоки. В том случае, если Вы хотите на своем радио организовать платное прослушивание - управлять пользователями и их оплатой вручную можно, но крайне затруднительно, плюс в нашей платформе технически невозможно реализовать прием платежей, списание средств и любой комплексный биллинг для слушателей, так как реализация биллинга может быть совершенно разной и общего решения не существует. Поэтому на помощь приходит API нашей платформы и ниже мы расскажем как программно интегрировать биллинг с Вашей стороны с автоматическим управлением авторизованными слушателями в нашей платформе радио.

Авторизация в API.

API для управления слушателями не общедоступен в том смысле, что данные по таким пользователям защищены и не предоставляются в анонимных запросах и сначала необходимо произвести авторизацию. Авторизация в платформе основана на токенах, токен можно получить используя POST запрос на URL /api/v2/api-token-auth/, например
https://demoaccount.s02.radio-tochka.com:8080/api/v2/api-token-auth/

(домен demoaccount.s02.radio-tochka.com здесь только для примера, Вы должны использовать домен своей панели управления) в payload запроса необходимо передать имя пользователя и пароль от входа в Вашу панель управления, все запросы происходят в JSON формате:

{
    "username":"demo",
    "password":"123"
}

в случае успешной авторизации в ответ на этот запрос будет возвращен токен, например:

{
  "token":"eyJ0eX"
}

(значение токена сокращено для удобства).

В дальнейших запросах к API необходимо включать этот токен в заголовки запросов в виде:

"authorization: JWT eyJ0eX"
То есть имя заголовка - "authorization", значение - строка "JWT" + пробел + значение токена. Теперь, когда у вас есть токен вы можете использовать следующие методы API для управления защищенными пользователями:
GET /api/v2/authlisteners/?server=1
Выгружает существующих авторизованных слушателей из панели управления, где server=1 это номер радио сервера в панели. Для листинга большого количества пользователей поддерживается пагинация через параметры limit & offset, например
/api/v2/authlisteners/?server=1&limit=10&offset=0

Пример ответа API

[
  {
    "id": 3,
    "listen_links": [
      {
        "bitrate": "64",
        "s_format": "aac",
        "stream_url": "http://s02.radio-tochka.com:4600/stream?cnk1yszthed4za5fyscnwuq0af5i07ccn",
        "secure_stream_url": "https://demoaccount.s02.radio-tochka.com:4605/stream?cnk1yszthed4za5fyscnwuq0af5i07ccn"
      }
    ],
    "created": "2022-05-14T17:28:15.128152",
    "username": "test",
    "token": "cnk1yszthed4za5fyscnwuq0af5i07ccn",
    "active": true,
    "last_connection_ts": "2022-05-14T17:28:42.915369",
    "server": 1
  }
]

Здесь видно имя пользователя (оно существует только для удобства, что важно - это ID пользователя), токен на прослушивание для этого пользователя, время когда слушатель создан (created), активен ли слушатель (active), время последнего его подключения к потоку (last_connection_ts) и listen_links - это массив ссылок на прослушивание, которые уже включают в себя токен этого слушателя.

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

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

Создание нового слушателя.

URL: POST /api/v2/authlisteners/

Payload:

{
  "active": true,
  "token": "wx9zf2wn64n0y5wfnvan36k62u3u2ev24b",
  "username": "test",
  "server": 1
}

Поля:

  • active - bool, активен пользователь или нет
  • token - string, 255 символов максимум - значение токена пользователя. Токены Вы генерируете у себя на стороне и гарантируете их уникальность, двух одинаковых токенов быть не может.
  • username - используется для удобства, например в этом поле вы можете хранить уникальный логин пользователя или его email, чтобы быстро понять о каком слушателе идет речь.
  • server - int, номер сервера радио в панели управления на котором заводите слушателя.

Изменение данных слушателя.

Этот метод необходим для изменения данных пользователя. Можно менять токен, имя пользователя, username и поле active.

URL: PUT /api/v2/authlisteners/LISTENER_ID/

Где LISTENER_ID - это ID слушателя, сохраненный после его создания через API POST /api/v2/authlisteners/ (см. выше).

Отключение или удаление слушателя.

Например, в биллинге на вашей стороне слушатель не оплатил абонентскую плату, в этом случае Вы можете либо его временно отключить с сохранением данных, либо полность удалить такого слушателя. Чтобы отключить пользователя -
URL: PUT /api/v2/authlisteners/LISTENER_ID/

Где в поле active передаёте false.

Чтобы удалить слушателя полностью:

URL:  DELETE /api/v2/authlisteners/LISTENER_ID/

Как выглядит весь процесс простым языком без технических деталей: постараемся описать наиболее распространенный вариант биллинга.

У Вас на сайте есть регистрация пользователей для платного прослушивания, прикручены методы оплаты и т.п. После создания такого пользователя в базе данных Вашего сайта - делается запрос к нашему API, который заводит такого слушателя в панели управления радио, после чего ID этого авторизованного слушателя в нашей платформе Вы сохраняете у себя + его токен на прослушивание или сразу ссылку (или несколько ссылок) на прослушивание потоков.

У себя на сайте после того, как пользователь авторизовался, вместо обычных ссылок на прослушивание в плеере - Вы выводите защищенные ссылки с токеном этого слушателя.

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

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