[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page:ru:doc-sport-events-api.html":3},{"id":4,"body":5,"extension":23,"meta":120,"slug":121,"stem":122,"__hash__":123},"content_ru\u002Fru\u002Fdoc-sport-events-api.json",{"template":6,"meta":7,"content":13},"docs",{"title":8,"description":9,"keywords":10,"ogTitle":11,"ogDescription":12},"API исходов, ставок и купонов — документация | Bet in Box","Техническая документация по интеграции системы расчёта ставок и купонов: как работает система, авторизация пользователя, отправка ставки\u002Fкупона, параметры remote_host и rate_mode, поля ответа, коды ошибок и интерпретация Status\u002FExtStatus.","API, спорт, коэффициенты, исходы, спортивная линия, интеграция, букмекер, ставки, расчёт купонов, remote_host, rate_mode","Документация API расчёта ставок и купонов - Bet in Box","Документация по интеграции системы расчёта рынков, коэффициентов и исходов для букмекеров. Расчёт ставок и купонов.",{"hero":14,"navLabel":35,"sections":36,"footer":108},{"eyebrow":15,"titleHtml":16,"lead":17,"cta":18,"code":21,"badges":25},"Документация API","Интеграция системы для \u003Cspan class=\"hl\">расчёта ставок и купонов\u003C\u002Fspan>","Данная система предназначена для операторов ставок на спорт, букмекеров и разработчиков платформ, которые стремятся автоматизировать процесс расчёта ставок и управления купонами. Она позволяет быстро интегрировать расчёт результатов, предоставляя точные данные о статусах купонов (выигрыш, проигрыш или возврат), а также упрощает взаимодействие между сервером оператора и системой расчёта.",{"label":19,"order":20},"Получить ключ",true,{"title":22,"lang":23,"body":24},"POST \u002Fv1\u002Fcoupon","json","{\n  \"coupon_id\": \"A7F3K9\",\n  \"type\": \"express\",\n  \"events\": [\n    { \"id\": 88213, \"pick\": \"1\", \"odds\": 2.10, \"result\": \"win\" },\n    { \"id\": 88150, \"pick\": \"over_2_5\", \"odds\": 1.80, \"result\": \"win\" }\n  ],\n  \"total_odds\": 3.78, \"status\": \"won\"\n}",[26,28,30,33],{"label":27},"REST over HTTPS",{"label":29},"JSON only",{"label":31,"tone":32},"Package header auth","lime",{"label":34},"api.sportapi.net","На этой странице",[37,41,47,69,75,79,83,87,93,97,103],{"id":38,"title":39,"html":40},"how","Как работает система?","\u003Ch3>Как работает система расчёта шансов и исходов?\u003C\u002Fh3>\n\u003Cp>Интеграция с нашей системой расчёта ставок и купонов проходит в три ключевых этапа:\u003C\u002Fp>\n\u003Ch4>Этап 1: Авторизация\u003C\u002Fh4>\n\u003Cp>На первом этапе необходимо авторизоваться в системе. Для этого выполняется \u003Cstrong>POST-запрос\u003C\u002Fstrong> с данными пользователя (логин и пароль). Успешная авторизация возвращает сессию, представленную в виде \u003Cstrong>cookie\u003C\u002Fstrong>, которая должна быть сохранена. Эти cookie обязательны для отправки всех последующих запросов, так как они используются для идентификации сессии пользователя в системе.\u003C\u002Fp>\n\u003Ch4>Этап 2: Отправка ставки\u003C\u002Fh4>\n\u003Cp>На этом этапе в нашу систему отправляется код ставки, содержащий:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>ID матча\u003C\u002Fstrong>, соответствующий событию.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Код ставки\u003C\u002Fstrong>, описывающий выбранный исход (например, победа команды, фора или тотал).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Коэффициент ставки\u003C\u002Fstrong>, актуальный на момент отправки.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>При отправке данных обязательно передаются \u003Cstrong>cookie\u003C\u002Fstrong>, полученные на этапе авторизации. Это позволяет корректно идентифицировать пользователя и обработать ставку.\u003C\u002Fp>\n\u003Ch4>Этап 3: Получение результатов\u003C\u002Fh4>\n\u003Cp>После завершения расчёта исходов или купонов наша система отправляет \u003Cstrong>POST-запросы\u003C\u002Fstrong> на указанный \u003Ccode>remote_host\u003C\u002Fcode>. Этот запрос содержит:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Статус купона\u003C\u002Fstrong> (выигрыш, проигрыш или возврат).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Статусы всех исходов\u003C\u002Fstrong>, входящих в купон.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Отправка результатов происходит в момент определения исхода. Например:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Если ставка была сделана на промежуточный исход (например, фора 2.5, и был забит третий гол), расчёт может быть выполнен прямо во время матча.\u003C\u002Fli>\n  \u003Cli>Если ставка сделана на финальный результат (например, победа команды), информация о статусе будет отправлена сразу после окончания матча.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Now review each step individually. We have described the requests, parameters, and API responses in detail.\u003C\u002Fp>",{"id":42,"title":43,"html":44,"json":45,"jsonTitle":46},"auth","Авторизация пользователя","\u003Cp>Логин, пароль и хост для отправки запросов можно получить у менеджера.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>URL для запроса:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{APIHOST}\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Тип отправки данных:\u003C\u002Fstrong> POST\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Передаваемые данные:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Параметр\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>login\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Логин пользователя\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>password\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Пароль пользователя\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Важно!\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Во время авторизации ответ включает \u003Cstrong>cookie\u003C\u002Fstrong>. Эти \u003Cstrong>cookie\u003C\u002Fstrong> необходимо сохранить и отправлять с последующими запросами.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Рекомендации для удобства интеграции:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Убедитесь, что поле \u003Ccode>login\u003C\u002Fcode> передаётся в формате строки.\u003C\u002Fli>\n  \u003Cli>Проверьте корректность сохранения и отправки cookie, так как от этого зависит выполнение последующих запросов.\u003C\u002Fli>\n  \u003Cli>В случае ошибки запрос вернёт пустой объект. Убедитесь, что вы обрабатываете такой сценарий.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>cookie\u003C\u002Fstrong> живут 3 месяца. Но они могут обновиться при перезапуске сервера. Поэтому вам нужно сделать повторную авторизацию, если вы получите ошибку при сохранении купона.\u003C\u002Fp>","\"errorCode\":1,\n\"fullErrorCode\":99,\n\"errorMessage\":\"Invalid access level\"","Ответ с ошибкой",{"id":48,"title":49,"codeTabs":50,"codeTitle":67,"html":68},"auth-example","Пример отправки запроса (используйте данные, которые выдал вам менеджер):",[51,55,59,63],{"label":52,"lang":53,"body":54},"Python","python","import requests\nimport json\n\nurl = \"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\"\n\npayload = json.dumps({\n  \"login\": \"demo-login@demosportapi.net\",\n  \"password\": \"demo-password\"\n})\nheaders = {\n  'Content-Type': 'application\u002Fjson'\n}\n\nprint(response.text)",{"label":56,"lang":57,"body":58},"PHP","php","$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n    CURLOPT_URL => 'https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_ENCODING => '',\n    CURLOPT_MAXREDIRS => 10,\n    CURLOPT_TIMEOUT => 0,\n    CURLOPT_FOLLOWLOCATION => true,\n    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_POSTFIELDS =>'{\n    \"login\":\"demo-login@demosportapi.net\",\n    \"password\":\"demo-password\"\n}',\n    CURLOPT_HTTPHEADER => array(\n    'Content-Type: application\u002Fjson'\n    ),\n));\n\n$response = curl_exec($curl);\n\ncurl_close($curl);\necho $response;",{"label":60,"lang":61,"body":62},"JavaScript","js","const myHeaders = new Headers();\nmyHeaders.append(\"Content-Type\", \"application\u002Fjson\");\n\nconst raw = JSON.stringify({\n    \"login\": \"demo-login@demosportapi.net\",\n    \"password\": \"demo-password\"\n});\n\nconst requestOptions = {\n    method: \"POST\",\n    headers: myHeaders,\n    body: raw,\n    redirect: \"follow\"\n};\n\nfetch(\"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\", requestOptions)\n    .then((response) => response.text())\n    .then((result) => console.log(result))\n    .catch((error) => console.error(error));",{"label":64,"lang":65,"body":66},"Java","java","OkHttpClient client = new OkHttpClient().newBuilder()\n.build();\nMediaType mediaType = MediaType.parse(\"application\u002Fjson\");\nRequestBody body = RequestBody.create(mediaType, \"{\\r\\n    \\\"login\\\":\\\"demo-login@demosportapi.net\\\",\\r\\n    \\\"password\\\":\\\"demo-password\\\"\\r\\n}\");\nRequest request = new Request.Builder()\n.url(\"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\")\n.method(\"POST\", body)\n.addHeader(\"Content-Type\", \"application\u002Fjson\")\n.build();\nResponse response = client.newCall(request).execute();","POST {APIHOST}\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F","\u003Cp>\u003Cstrong>Пример ответа:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Успешный:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\"d\":{\"UserId\":\"36557\"}}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Неуспешный:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\"d\":{}}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Описание полей ответа:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Поле\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>UserId\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Уникальный идентификатор пользователя\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>d\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Корневой объект ответа\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Общие рекомендации:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Перед первым запросом убедитесь, что пользователь ввёл корректные данные.\u003C\u002Fli>\n  \u003Cli>Настройте обработку ошибок для отображения пользователю причин неудачи авторизации (например, неверный логин или пароль).\u003C\u002Fli>\n  \u003Cli>Логируйте успешные и неуспешные попытки для анализа и мониторинга.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Cookie необходимо сохранять и отправлять с последующими запросами.\u003C\u002Fp>",{"id":70,"title":71,"html":72,"json":73,"jsonTitle":74},"coupon","Метод для отправки ставки или купона","\u003Cp>Для отправки ставки необходимо использовать cookie, полученные на этапе авторизации. Эти данные обязательны для идентификации вашей сессии и обработки запросов.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>URL для запроса:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{HOST_API}\u002Fbet\u002Fplace\u002F\u003C\u002Fcode>\u003C\u002Fpre>","{\n    \"data\":{\n        \"list_bets\":[\n            \"line#586464528|17|954|2.5#4.27\",  \"live#586464528|87|4|0#1.12\"\n        ],\n        \"realAmount\":\"2\",\n        \"currency\":\"USD\",\n        \"lang\":\"en\",\n        \"remote_host\":\"https:\u002F\u002Fmysites.com\",\n        \"rate_mode\":\"reject\"\n    }\n}","Пример тела запроса",{"id":76,"title":77,"html":78},"params","Параметры remote_host и rate_mode","\u003Ch4>Описание полей\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Параметр\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>list_bets\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Код ставки и коэффициенты. Формат: \u003Ccode>\"тип_события#ID_матча|Код_ставки#коэффициент\"\u003C\u002Fcode>. Например: \u003Ccode>\"live#579216393|1|1|0#2.1\"\u003C\u002Fcode>\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>realAmount\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Сумма ставки. Указывается в виде строки, например: \"150\".\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>currency\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Валюта купона.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>lang\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Язык, на котором сохраняются ставка и купон. Например: \"en\" или \"ru\" или \"tr\".\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>remote_host\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>URL для отправки результатов расчёта купона. Указывайте без конечного слэша.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>rate_mode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Опция принятия купона при изменении коэффициентов: \"reject\" (отклонить при изменении) или \"accept\" (принять при любых изменениях). По умолчанию: \"accept\".\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Примечание:\u003C\u002Fstrong> Убедитесь, что параметры передаются в корректном формате. Например, \u003Ccode>list_bets\u003C\u002Fcode> должен быть массивом, даже если ставка одна.\u003C\u002Fp>\n\u003Cblockquote>Мы не проверяем сумму ставки. Вы можете передавать как реальную сумму ставки, так и любое значение. Это сделано для обеспечения конфиденциальности ваших финансовых данных. Наша задача — предоставить результаты расчёта. Вы сами выполняете начисления выигрышей своим игрокам.\u003C\u002Fblockquote>\n\u003Ch4>Обязательные параметры для отправки ставки:\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>list_bets\u003C\u002Fstrong> — содержит информацию о ставке и соответствующем матче.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>remote_host\u003C\u002Fstrong> — URL, на который мы отправим результаты расчёта купона или исхода.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>rate_mode\u003C\u002Fstrong> — определяет, как система обрабатывает изменения коэффициентов.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Остальные параметры также нужно отправлять, но они являются необязательными и могут быть использованы для вашего удобства.\u003C\u002Fp>\n\u003Ch4>Описание параметра remote_host\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>remote_host\u003C\u002Fstrong> — это адрес вашего сервера, на который мы отправляем запросы с результатами расчёта ставок. На этом хосте должен быть настроен приём запросов от нашего сервера. Ниже описаны примеры возможных значений и особенности работы с этим параметром.\u003C\u002Fp>\n\u003Cp>Вы можете указать различные варианты \u003Cstrong>remote_host\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Простой хост:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Хост с портом:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com:78665\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Хост с дополнительными путями:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest\u002Fsportapi\u002Fsender\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Хост с параметрами:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Важно:\u003C\u002Fstrong> При отправке запроса наша система автоматически добавляет к указанному \u003Ccode>remote_host\u003C\u002Fcode> строку \u003Ccode>\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>. Таким образом, конечный адрес для получения запросов формируется как \u003Ccode>remote_host + \"\u002Fapi\u002Fbet\u002Fresult\"\u003C\u002Fcode>. Убедитесь, что ваш сервер настроен на приём данных по этому пути.\u003C\u002Fp>\n\u003Ch6>Примеры:\u003C\u002Fh6>\n\u003Cul>\n  \u003Cli>Вы передаёте \u003Ccode>remote_host = https:\u002F\u002Fmysites.com\u003C\u002Fcode>. Мы отправляем запросы на: \u003Ccode>https:\u002F\u002Fmysites.com\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>Вы передаёте \u003Ccode>remote_host = https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u003C\u002Fcode>. Мы отправляем запросы на: \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Технические детали:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Запросы отправляются методом \u003Ccode>POST\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>Ваш сервер должен быть готов принимать JSON-данные, которые мы отправляем.\u003C\u002Fli>\n  \u003Cli>Ваш сервер должен отдать код 200 в случае успешного приёма данных.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Убедитесь, что ваш сервер корректно обрабатывает указанный путь и запросы. В следующем разделе приведён пример структуры данных, которые отправляются нашим сервером.\u003C\u002Fp>\n\u003Ch4>Описание параметра rate_mode\u003C\u002Fh4>\n\u003Cp>Параметр \u003Cstrong>rate_mode\u003C\u002Fstrong> задаёт поведение системы при изменении коэффициентов. Он может принимать два значения:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>accept\u003C\u002Fstrong>: В этом режиме купон будет принят с текущим коэффициентом, даже если он изменился. Например, игрок добавил в купон ставку «Победа Манчестера» с коэффициентом 2.02. Пока он нажимал кнопку «Сделать ставку», коэффициент изменился на 1.37 или 2.78. В режиме \u003Ccode>accept\u003C\u002Fcode> система сохранит купон с новым коэффициентом без уведомления вашей системы.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>reject\u003C\u002Fstrong>: В этом режиме система отклонит купон, если коэффициент изменился. В ответе будет ошибка с уведомлением о том, что коэффициент изменился.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Выбирайте режим, который лучше всего соответствует вашим бизнес-процессам и обеспечивает удобство для ваших пользователей.\u003C\u002Fp>\n\u003Ch4>Важные рекомендации\u003C\u002Fh4>\n\u003Col>\n  \u003Cli>\u003Cstrong>Форматирование JSON:\u003C\u002Fstrong> Убедитесь, что данные корректно сериализуются в JSON-формат перед отправкой.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Cookie:\u003C\u002Fstrong> Передавайте cookie, полученные на этапе авторизации, для успешной идентификации сессии пользователя.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Обработка ошибок:\u003C\u002Fstrong> Обрабатывайте ответы сервера, особенно случаи, когда возвращается \u003Ccode>errorCode = 1\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Тестирование:\u003C\u002Fstrong> Проведите тесты на всех этапах интеграции, включая отправку одиночных и нескольких ставок.\u003C\u002Fli>\n\u003C\u002Fol>",{"id":80,"title":81,"html":82},"fields","Поля ответа и описание ошибок","\u003Ch4>Поля ответа\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Параметр\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>betCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Уникальный номер ставки в нашей системе\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>errorCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Основной статус результата запроса\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>fullErrorCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Детализация ошибок.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>errorMessage\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Текстовые сообщения об ошибках системы\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>AmountOut\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Возможная сумма выигрыша\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>CountEvents\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Количество ставок в купоне\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>Coef\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Коэффициенты исходов\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>IsLive\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Тип ставки: онлайн или до начала матча (true\u002Ffalse)\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>LinesId\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>ID матча\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>EventDate\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Дата матча\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Описание ошибок при отправке ставки\u003C\u002Fh4>\n\u003Cp>При отправке ставки могут возникнуть различные ошибки. Ответ сервера содержит три ключевых поля:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>errorCode\u003C\u002Fstrong>: Основной статус запроса.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>fullErrorCode\u003C\u002Fstrong>: Детализация ошибки.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>errorMessage\u003C\u002Fstrong>: Текстовое описание ошибки.\u003C\u002Fli>\n\u003C\u002Ful>",{"id":84,"title":85,"json":86,"jsonTitle":85},"success","Успешная операция","{\n  \"errorCode\": 0,\n  \"fullErrorCode\": 0,\n  \"errorMessage\": \"\"\n}",{"id":88,"title":89,"html":90,"json":91,"jsonTitle":92},"errors","Коды ошибок","\u003Cp>Если ставка успешно принята, сервер возвращает успешный ответ (см. выше). Купон принят, ошибок нет.\u003C\u002Fp>\n\u003Cp>Если произошла ошибка, сервер возвращает общий ответ об ошибке (см. выше). Произошла одна из возможных ошибок. Ниже приведены коды и сообщения ошибок.\u003C\u002Fp>\n\u003Ch4>Возможные коды и описания ошибок\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Код ошибки (fullErrorCode)\u003C\u002Fth>\u003Cth>Сообщение ошибки (errorMessage)\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_wrong_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Неверные данные ставки. Проверьте параметры \u003Ccode>list_bets\u003C\u002Fcode> и другие обязательные поля.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_block_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Ставка временно заблокирована и не может быть принята.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_repeat_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Повтор ставки на один и тот же исход из одного матча не допускается.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>2\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>label_change_rate\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Коэффициент изменился. Купон отклонён из-за несовпадения указанного и актуального коэффициентов.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>3\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_exist_bet\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Данный исход ставки уже не существует. Проверьте актуальность данных.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>99\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Неверный уровень доступа\u003C\u002Ftd>\u003Ctd>Пользователь не имеет прав для выполнения данной операции. Скорее всего, нужно заново авторизироваться, пропали куки, или аккаунт заблокирован.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>99\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Error exist remote host!\u003C\u002Ftd>\u003Ctd>Некорректный или отсутствующий параметр \u003Ccode>remote_host\u003C\u002Fcode>. Проверьте настройку вашего сервера.\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Рекомендации для обработки ошибок\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Проверка входных данных:\u003C\u002Fstrong> Убедитесь, что все обязательные параметры переданы корректно. Проверьте формат \u003Ccode>list_bets\u003C\u002Fcode> и наличие всех обязательных полей.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Работа с коэффициентами:\u003C\u002Fstrong> Если используется \u003Ccode>rate_mode = reject\u003C\u002Fcode>, обработайте ошибки, связанные с изменением коэффициентов (\u003Ccode>label_change_rate\u003C\u002Fcode>).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Настройка сервера:\u003C\u002Fstrong> Убедитесь, что ваш сервер корректно указан в параметре \u003Ccode>remote_host\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Журналирование ошибок:\u003C\u002Fstrong> Ведите логирование всех ошибок (\u003Ccode>errorCode\u003C\u002Fcode>, \u003Ccode>fullErrorCode\u003C\u002Fcode>, \u003Ccode>errorMessage\u003C\u002Fcode>) для упрощения отладки и взаимодействия с поддержкой.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Действия при критических ошибках:\u003C\u002Fstrong> В случае ошибок уровня \u003Ccode>99\u003C\u002Fcode> проверьте права доступа и настройки API на вашей стороне.\u003C\u002Fli>\n\u003C\u002Ful>","{\n  \"errorCode\": 1,\n  \"fullErrorCode\": [ERROR_CODE],\n  \"errorMessage\": \"[ERROR_DESCRIPTION]\"\n}","Общая ошибка",{"id":94,"title":95,"json":96,"jsonTitle":95},"odds-changed","Рекомендации для обработки ошибок, если коэффициент изменился","{\n    \"errorCode\":1,\n    \"fullErrorCode\":2,\n    \"errorMessage\":\"Odds have changed\",\n    \"rate_mode\":\"reject\",\n    \"changed\":[\n        {\n            \"gid\":\"586464528\", \u002F\u002F match ID\n            \"rb\":2.15, \u002F\u002F odds in your coupon\n            \"rg\":\"2.27\", \u002F\u002F current real odds\n            \"rt\":0 \u002F\u002F status of change. 0 - decreased, 1 - increased\n        }\n    ]\n}",{"id":98,"title":99,"html":100,"json":101,"jsonTitle":102},"results","Отправка результатов расчёта","\u003Cp>Когда ставка добавлена в нашу систему и рассчитана, мы отправляем результаты купона на ваш сервер. Это могут быть:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Результаты купона (полный расчёт).\u003C\u002Fli>\n  \u003Cli>Статусы купона (выигрыш, проигрыш, возврат).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Запросы отправляются на адрес, указанный вами в параметре \u003Ccode>remote_host\u003C\u002Fcode>. К этому адресу автоматически добавляется строка \u003Ccode>\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>. Убедитесь, что ваш сервер настроен на приём данных по этому пути.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Пример конечного адреса:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Если вы передали: \u003Ccode>remote_host = https:\u002F\u002Fmysite.com\u003C\u002Fcode>, мы отправим данные на: \u003Ccode>https:\u002F\u002Fmysite.com\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fp>","{\n    \"remote_host\": \"https:\u002F\u002Fmysite.com\",\n    \"Heads\": [{\n        \"KeyHead\": {\n            \"Id\": \"344143\",\n            \"BarCode\": \"x9c52i8411\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 11130,\n        \"DateReceive\": \"1597075782\"\n    }]\n}","Пример payload: один купон",{"id":104,"title":105,"html":106,"json":107,"jsonTitle":105},"results-multi","Пример payload: несколько купонов","\u003Ch4>Описание полей\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Поле\u003C\u002Fth>\u003Cth>Описание\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Cstrong>remote_host\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Адрес вашего сервера, на который отправляются данные.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>Id\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Уникальный идентификатор ставки в нашей системе. Игнорируется в большинстве случаев.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>BarCode\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Уникальный номер купона.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>Status\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Текущий статус купона. Возможные значения: \u003Cstrong>2\u003C\u002Fstrong> — выигрыш, \u003Cstrong>4\u003C\u002Fstrong> — проигрыш.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>ExtStatus\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Дополнительный статус, если был возврат: \u003Cstrong>0\u003C\u002Fstrong> — изменений нет, \u003Cstrong>1\u003C\u002Fstrong> — один или несколько исходов рассчитаны с изменением коэффициента.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>AmountOut\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Сумма выигрыша (если купон выиграл).\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>DateReceive\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Время и дата расчёта купона.\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Как интерпретировать Status и ExtStatus\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Status = 2 и ExtStatus = 0:\u003C\u002Fstrong> Купон выиграл.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Status = 4 and ExtStatus = 0:\u003C\u002Fstrong> Купон проиграл.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Status = 2 и ExtStatus = 1:\u003C\u002Fstrong> Возврат. Купон рассчитан с коэффициентом 1.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Важные моменты для интеграции\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Обработка ExtStatus = 1:\u003C\u002Fstrong> Это может произойти, если матч был отменён или завершён досрочно. В таких случаях все ставки рассчитываются с коэффициентом 1.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Технические требования:\u003C\u002Fstrong> Запросы отправляются методом \u003Cstrong>POST\u003C\u002Fstrong>. Ваш сервер должен быть готов принимать JSON-данные по пути \u003Ccode>remote_host + \u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>","{\n    \"remote_host\": \"https:\u002F\u002Fmysite.com\",\n    \"Heads\": [{\n        \"KeyHead\": {\n            \"Id\": \"313\",\n            \"BarCode\": \"75vz48t935\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 19.85,\n        \"DateReceive\": \"1592937968\"\n    }, {\n        \"KeyHead\": {\n            \"Id\": \"312\",\n            \"BarCode\": \"77i0r6e15t\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 12.51,\n        \"DateReceive\": \"1592937280\"\n    }]\n}",{"title":109,"items":110},"Другая интеграция",[111,114,117],{"label":112,"href":113},"Sports Line docs","\u002Fru\u002Fdoc-sport-line-api.html",{"label":115,"href":116},"Sports Line API","\u002Fru\u002Fsport-line-api.html",{"label":118,"href":119},"Match Results API","\u002Fru\u002Fsport-rezult-api.html",{},"doc-sport-events-api.html","ru\u002Fdoc-sport-events-api","_ojrm11lp6PPqlR5HQOeseZh34wmGUHRcQjv4JrTtko"]