Продажа отдельного видео¶
Ниже описано, как продать пользователю одно видео — в аренду на ограниченный срок (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 · Сообщить о проблеме на этой странице