Перейти до змісту

Продаж окремого відео

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

Перед початком роботи

Переконайтеся, що:

  • для ваших ключів увімкнено TVOD або DTO (це можна уточнити у вашого менеджера MEGOGO);
  • MEGOGO додав 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 · Повідомити про проблему на цій сторінці