Перейти к содержанию

Пошагово: первое видео

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

Время: около 30 минут.

Перед началом работы

Убедитесь, что:

  • у вас есть тестовые учетные данные от MEGOGO: тестовый ID партнера, публичный и приватный ключ одной платформы, соль и ID услуги тестовой подписки (см. Учетные данные);
  • IP-адрес вашего компьютера внесен в список IP-адресов для Billing API (см. Учетные данные);
  • у вас есть Python 3 и браузер;
  • вы прошли раздел Начало работы и ваша подпись вычисляется правильно.

Все запросы отправляются на рабочие серверы. Тестовый пользователь и тестовая подписка — это реальные записи, оформленные на вашего тестового партнера. На шаге 6 подписка удаляется.

Шаг 1. Подготовьте скрипт

Сохраните этот скрипт как megogo_tutorial.py и впишите в первые строки свои тестовые значения.

import json
import urllib.parse
import urllib.request
from hashlib import md5

PARTNER_ID = "{partner_id}"       # test partner ID, for example testprod_ua
PUBLIC_KEY = "{public_key}"
PRIVATE_KEY = "{private_key}"
SALT = "{salt}"
SERVICE_ID = "{service_id}"       # the test subscription
USER_ID = "tutorial-user-001"     # any new user identifier

API = "https://api.megogo.net/v1/"
BILLING = f"https://billing.megogo.net/partners/{PARTNER_ID}/"


def content_api(path, **params):
    """Send a signed Content API request. The order of the parameters is kept."""
    joined = "".join(f"{k}={v}" for k, v in params.items())
    sign = md5((joined + PRIVATE_KEY).encode("utf-8")).hexdigest() + PUBLIC_KEY
    query = urllib.parse.urlencode({**params, "sign": sign})
    with urllib.request.urlopen(f"{API}{path}?{query}") as response:
        return json.load(response)


def billing_api(path, **params):
    """Send a Billing API request. It is not signed: MEGOGO checks your IP address."""
    query = urllib.parse.urlencode(params)
    with urllib.request.urlopen(f"{BILLING}{path}?{query}") as response:
        return json.load(response)

Шаг 2. Зарегистрируйте подписку тестового пользователя

Добавьте в скрипт эти строки и запустите его:

print(billing_api("subscription/subscribe", userId=USER_ID, serviceId=SERVICE_ID))
print(billing_api("user/subscriptions", identifier=USER_ID))

Ожидаемый результат:

{'successful': True}
{'identifier': 'tutorial-user-001', 'svod': [{'serviceId': '...', 'serviceName': '...', 'dateFinish': ..., 'dateFinishString': '...'}]}

MEGOGO создал пользователя и зарегистрировал подписку. В рабочей интеграции этот запрос отправляется после того, как пользователь оплатил подписку в вашем биллинге. См. Продажа подписки.

Шаг 3. Получите токен доступа пользователя

Токен авторизации — это MD5-хеш идентификатора пользователя, ID партнера и соли:

token = md5((USER_ID + PARTNER_ID + SALT).encode("utf-8")).hexdigest()
auth = content_api("auth/by_partners", isdn=USER_ID, partner_key=PARTNER_ID, token=token)
access_token = auth["data"]["tokens"]["access_token"]
print(auth["result"], access_token[:12] + "...")

Ожидаемый результат: ok и начало токена доступа. См. Авторизация пользователя.

Шаг 4. Найдите видео, доступное пользователю

Возьмите из своего XML-фида ID фильма с vod="svod" или фильм из тестовых данных. Затем убедитесь, что пользователь может его смотреть:

VIDEO_ID = 6680  # replace with a video of your feed
info = content_api("video/info", id=VIDEO_ID, lang="en", access_token=access_token)
print(info["data"]["title"], info["data"]["is_available"], info["data"]["delivery_rules"])

Ожидаемый результат: название, True и ['svod']. Если вы получили False, причина указана в поле restrictions ответа — возьмите другое видео.

Шаг 5. Получите поток и воспроизведите его

Запросите поток с токеном доступа пользователя:

stream = content_api("stream", video_id=VIDEO_ID, lang="en", access_token=access_token)
data = stream["data"]
print(data["stream_type"], repr(data["drm_type"]))
print(data["src"])

Ожидаемый результат: hls '' (HLS без DRM) и URL манифеста. Если src пустой, проверьте restrictions. См. Воспроизведение видео.

Чтобы воспроизвести поток, сохраните эту страницу как player.html, подставьте в нее значение src и откройте ее в браузере:

<!doctype html>
<video id="video" controls width="640"></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@1.5.17/dist/hls.min.js"></script>
<script>
  const src = "PUT_THE_SRC_VALUE_HERE";
  const video = document.getElementById("video");
  if (video.canPlayType("application/vnd.apple.mpegurl")) {
    video.src = src;            // Safari plays HLS without a library
  } else {
    const hls = new Hls();      // other browsers: hls.js
    hls.loadSource(src);
    hls.attachMedia(video);
  }
</script>

Видео начнет воспроизводиться. Если ваш ключ отдает DASH или DRM (stream_type равен dash или drm_type не пустой), эта простая страница его не воспроизведет. См. Воспроизведение видео и DRM.

ВНИМАНИЕ

URL из src предназначен только для этого пользователя и этого воспроизведения. Не сохраняйте его и не передавайте другим пользователям. Запрашивайте новый src каждый раз, когда пользователь запускает воспроизведение.

Шаг 6. Удалите тестовую подписку

print(billing_api("subscription/unsubscribe", userId=USER_ID, serviceId=SERVICE_ID))
print(billing_api("user/subscriptions", identifier=USER_ID))

Ожидаемый результат: {'successful': True}, затем 'svod': [].

Что вы сделали

Шаг Интерфейс Что произошло
2 Billing API MEGOGO зарегистрировал подписку вашего пользователя
3 Content API Ваш сервер получил токен доступа для пользователя
4 Content API Вы нашли видео, которое пользователь может смотреть
5 Content API, CDN Ваш плеер воспроизвел поток
6 Billing API Вы отключили подписку

Дальнейшие шаги


Версия руководства 1.4.1, 2026-10-31 · Сообщить о проблеме на этой странице