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

Продажа отдельного видео

Ниже описано, как продать пользователю одно видео — в аренду на ограниченный срок (TVOD) или навсегда, без ограничения срока (DTO). Видео вы продаете в своей системе, а MEGOGO регистрирует покупку.

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

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

  • для ваших ключей включен TVOD или DTO. Уточните это у вашего менеджера MEGOGO;
  • MEGOGO добавил IP-адреса ваших серверов в список IP-адресов вашего ID партнера (см. Учетные данные);
  • пользователь уже есть в биллинге MEGOGO и у него есть токен доступа (см. Авторизация пользователя).

Шаг 1. Получите предложения для видео

Когда пользователь открывает страницу видео, отправьте /video/info с его access_token:

GET https://api.megogo.net/v1/video/info?id={video_id}&lang=en&access_token={access_token}&sign={sign}

Предложения передаются в purchase_info.tvod (аренда) и purchase_info.dto (покупка без ограничения срока); структура у них одинаковая. Ожидаемый ответ для аренды (сокращен):

{
  "data": {
    "id": 12345,
    "is_available": false,
    "delivery_rules": ["tvod"],
    "purchase_info": {
      "tvod": {
        "subscriptions": [
          {
            "subscription_id": 7181,
            "title": "Partner TVOD hd only",
            "currency_code": "uah",
            "is_bought": false,
            "tariffs": [
              {
                "tariff_id": 7211,
                "price": 59,
                "period": 7,
                "quality": { "group": "HD", "title": "Full HD", "bitrate": 1080 },
                "is_bought": false
              },
              {
                "tariff_id": 63835,
                "price": 39,
                "period": 7,
                "quality": { "group": "SD", "title": "SD", "bitrate": 576 },
                "is_bought": false
              }
            ]
          }
        ]
      }
    }
  }
}

Каждый элемент tariffs показывайте как отдельное предложение:

Поле Назначение
price, currency_code Цена
period Срок доступа в днях. Для DTO значение большое (например, 3 650) — показывайте его как «навсегда»
quality.title Максимальное качество в рамках предложения
is_bought true: у пользователя уже есть это предложение
tariff_id ID для покупки (шаг 3)

ОСТОРОЖНО

Цены и tariff_id берите только из /video/info. Цены и ID в XML-фиде относятся к тарифам MEGOGO — не используйте их.

Шаг 2. Пользователь оплачивает видео

Пользователь оплачивает в вашей системе одно из предложений, полученных на шаге 1.

Шаг 3. Зарегистрируйте покупку

Отправьте со своего сервера запрос:

GET https://billing.megogo.net/partners/{partner_id}/buyMovie?userId={user_id}&videoId={video_id}&serviceId={tariff_id}
Параметр Описание
userId Идентификатор пользователя в вашей системе
videoId ID видео
serviceId tariff_id предложения из шага 1. Не передавайте здесь subscription_id

ОСТОРОЖНО

Billing API не проверяет, доступен ли тариф для вашего ключа. Передавайте только тот tariff_id, который /video/info вернул для этого видео и этого пользователя.

Ожидаемый ответ:

{"successful": true}

Списывайте оплату с пользователя только после ответа "successful": true.

Шаг 4. Откройте пользователю просмотр

Запустите воспроизведение видео с токеном доступа пользователя (см. Воспроизведение видео).

Поток ограничен качеством предложения. Например, после покупки предложения SD в bitrates будут только варианты качества до 480.

ВНИМАНИЕ

Период аренды начинается не в момент покупки, а когда пользователь начинает смотреть, — при первом ответе /stream с src. Поэтому отправляйте /stream только тогда, когда пользователь запускает воспроизведение.

Проверка покупок пользователя

GET https://billing.megogo.net/partners/{partner_id}/user/subscriptions?identifier={user_id}

Ожидаемый ответ (сокращен):

{
  "identifier": "user-0001",
  "svod": [],
  "tvod": [
    {
      "serviceId": "7211",
      "serviceName": "Partner TVOD hd only",
      "objectId": 12345,
      "status": "started",
      "dateFinish": 1793958553,
      "dateFinishString": "2026-11-06 09:49:13"
    }
  ]
}
status Значение
unwatched Пользователь еще не начал смотреть, период аренды не начался. dateFinish отсутствует
started Период аренды начался. dateFinish — дата окончания аренды

Покупки DTO передаются в отдельном массиве dto. В его элементах есть serviceId, serviceName и objectId, но нет status и dateFinish:

"dto": [
  { "serviceId": "27561", "serviceName": "EST Disney UA 6-9", "objectId": 584181 }
]

Если покупок какого-либо типа у пользователя нет, ключ tvod или dto в ответе отсутствует.

Ошибки

Ответ Причина Что делать
Код 400 Пользователь уже купил это видео (TVOD или DTO) Ничего делать не нужно: пользователь может смотреть видео
Код 40416 serviceId — не ID тарифа вашего ID партнера. Например, передан subscription_id или ID из XML-фида Передайте tariff_id из /video/info
Код 2015, 2029 У видео нет предложения для продажи Не показывайте предложение
Код 2031 Этого качества нет в предложении Передайте tariff_id из /video/info этого видео
HTTP 401, простой текст Partner … not found IP-адреса вашего сервера нет в списке См. Учетные данные
Тайм-аут, HTTP 5xx Временный сбой Прежде чем повторить запрос, проверьте покупки пользователя. Выдерживайте между попытками 1 минуту; попыток — не больше 6

Полный список кодов приведен в справочнике по Billing API.

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


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