Ординары, экспрессы и multi
Тип создаваемого купона зависит от количества элементов в list_bets и значения multi.
API возвращает тип в поле coupon_type:
coupon_type | Тип купона | Количество ставок |
|---|---|---|
1 | Ординар | Одна ставка |
2 | Экспресс | Две или несколько ставок |
Ординар
Ординар — это отдельный купон с одной ставкой.
Пример:
{
"list_bets": [
"line#737779544#1#1#0#1.85"
],
"amount": 10,
"multi": false
}
Результат:
{
"coupon_type": 1,
"events_count": 1,
"amount": 10
}
Если list_bets содержит только один элемент, значения multi = false и multi = true в обоих случаях создадут один ординар.
Экспресс
Экспресс — это один купон, объединяющий несколько ставок на разные матчи.
Для создания экспресса передайте несколько указателей и установите:
{
"multi": false
}
Пример:
{
"list_bets": [
"line#737779544#1#1#0#1.85",
"line#737880112#8#6#2.5#1.64"
],
"amount": 10,
"currency": "USD",
"multi": false
}
Система создаст один купон:
{
"coupon_type": 2,
"events_count": 2,
"amount": 10
}
amount относится ко всему экспрессу и не применяется отдельно к каждой ставке внутри него.
После успешного создания один amount автоматически списывается с баланса клиентского аккаунта SportAPI.
Один экспресс может содержать не более 15 событий.
Как работает multi
multi определяет, нужно ли объединить элементы list_bets в один купон или создать отдельный купон для каждого элемента.
| Значение | Поведение |
|---|---|
false | Все элементы list_bets образуют один ординар или экспресс. |
true | Каждый элемент list_bets образует отдельный ординар. |
null или поле отсутствует | Используется значение по умолчанию false. |
multi = false
При multi = false:
- один элемент создает один ординар;
- несколько элементов создают один экспресс;
amountявляется суммой всего созданного купона;- в
body.couponsвозвращается один купон.
multi = true
При multi = true:
- каждый элемент создает отдельный ординар;
- каждый ординар получает собственный
coupon_code; amountприменяется полностью к каждому ординару;- каждый ординар рассчитывается независимо;
- в
body.couponsвозвращается несколько купонов.
Важно. Значение
amountне делится между создаваемыми ординарами. Общая сумма равнаamount × количество элементов list_bets.
Именно эта общая сумма автоматически списывается с баланса клиентского аккаунта SportAPI при успешном создании. Если средств на все ординары недостаточно, API возвращает 507 и не создает ни одного купона.
Пример расчета суммы
Пользователь выбрал две ставки и ввел сумму 10.
Исходный запрос:
{
"list_bets": [
"line#737779544#1#1#0#1.85",
"line#737880112#8#6#2.5#1.64"
],
"amount": 10
}
Результат зависит от multi:
| Режим | Что будет создано | Сумма каждого купона | Списание клиентского баланса |
|---|---|---|---|
multi = false | Один экспресс с двумя ставками | 10 | 10 |
multi = true | Два отдельных ординара | 10 | 20 |
При multi = true сокращенная часть успешного ответа будет выглядеть так:
{
"code": 1,
"body": {
"coupons": [
{
"coupon_code": "000000000272",
"coupon_type": 1,
"events_count": 1,
"amount": 10
},
{
"coupon_code": "000000000273",
"coupon_type": 1,
"events_count": 1,
"amount": 10
}
]
}
}
Партнер должен сохранить оба объекта и оба значения coupon_code.
Корзина партнера
До подтверждения ставки интерфейс партнера должен ясно показать:
- будет создан один экспресс или несколько ординаров;
- сумму каждого создаваемого купона;
- количество создаваемых купонов;
- общую сумму.
Для multi = true общая сумма рассчитывается так:
общая сумма = amount × количество элементов list_bets
Например:
amount = 10
количество ставок = 3
общая сумма = 30
Содержимое корзины остается предварительным выбором пользователя. Сохранять купоны как принятые можно только после ответа с code = 1 и на основе объектов из body.coupons.
Баланс конечного пользователя в системе партнера и клиентский баланс SportAPI — разные сущности. SportAPI автоматически списывает только свой клиентский баланс; партнер отдельно управляет резервом и списанием средств своего пользователя.
Ставки одного матча в экспрессе
В один экспресс нельзя включать несколько исходов, относящихся к одному матчу. Ограничение распространяется на основное событие и все связанные с ним саб-события.
Запрещенные примеры:
- исход основного матча и угловые этого же матча;
- исход основного матча и ставка на отдельный тайм;
- угловые и фолы одного матча;
- разные таймы, периоды или другие саб-события одного матча.
Для одного матча выберите только один исход. Остальные ставки экспресса должны относиться к другим матчам.
Если при multi = false передана запрещенная комбинация, API отклоняет создание экспресса:
error_code = 506
Партнеру рекомендуется применять это ограничение в корзине и не разрешать пользователю отправить недопустимый экспресс.
При multi = true каждый исход становится отдельным ординаром, поэтому исходы не объединяются в один экспресс.
Что обрабатывать в ответе
После успешного создания всегда перебирайте весь массив:
body.coupons
Не следует обрабатывать только body.coupons[0]: при multi = true массив содержит отдельный объект для каждого созданного ординара.
Для каждого возвращенного купона:
- сохраните
coupon_codeкак строку; - сохраните необходимые поля самого купона;
- сохраните необходимые данные ставок из
events_data; - отслеживайте и рассчитывайте каждый купон независимо.
Полный запрос и ответ описаны в разделе «Создание купона».
Следующий раздел: «Изменение коэффициентов и доступности исхода».