Общая информация

Важная информация перед интеграцией расчета ставок в нашей системе.

Некоторые разъяснения:

Ставка - это набор данных на 1 исход в матче, который сделал пользователь. Ставка может входить в состав как одинара, так и экспресса.

Купон - это набор ставок или исходов, которые ставит игрок. Купон состоит из отдельных ставок. Если в купон входит 1 ставка - значит это одинар. Если в купон входит более одной ставки - это экспресс.

 

Чтобы подключить расчет ставок в нашей системе вам необходимо выполнить следующие шаги:

1. Попросить ИД партнера, и зарегистрировать своего личного пользователя в нашей системе. Регистрация пользователя следует регистрировать в таком виде:

Регистрация для сервера тестового (где будет проводиться интеграция)

company@sitemail.test 

betstrong@betstrong.com.test

или для рабочего сервера, где будет работать ваша система

company@sitemail.prod

betstrong@betstrong.com.prod

 

2. После того как пользователь успешно зарегистрирован, Вам нужно авторизоваться в нашей системе с теми данными, которые вы указали при регистрации. Успешной авторизацией является факт, если Вам вернулся объект с ИД вашего пользователя:

{"d":{"UserId":"1344225"}}

Так же при успешной авторизации в ответ приходит кукис  и сессия. Эти данные нужно передавать для того, чтобы сохранить ставку у нас.

 

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

 

4. После того как произойдет расчет ставки - Вам будет отправлен результат по КУПОНУ (выигрыш, проигрыш или возврат ставки). Обратите внимание - Мы присылаем результат общий по купону, мы не присылаем результат по конкретной ставке. Если Вам необходимо получить данные - Вы можете их взять самостоятельно по АПИ в любой момент времени.

Параметры API

Список параметров для API

Папарметр Описание
{HOST_API} Урл, на который нужно отправлять запросы. Можно получить у администратора.
{PARTNER_ID_API} Номер, который выдется для влядельца апи. Этот номер партнера, индифицирует Вас в шаней системе. Можно получить у администратора.
Регистрация пользователей:

Для начала Вам нужно зарегистрировать пользователя, через которого и будут приниматься ставки. Этот пользователь будет единым в нашей системе, через данного пользователя будут осуществлятся прием ставок.

ОБРАТИНЕ внимание на вложеность данных в примере: "registerModel"

Тип отправки данных: POST

Url на который отправляется запрос:

{HOST_API}/WebServices/Mobile/BetsStoreService.asmx/Register/

Данные для отправки:

Параметр Описание
Email Почта пользователя
Password Пароль пользователя
registr_phone Телефон пользователя
currency Валюта пользователя, 3 символа
partner id партнера, выдается при интеграции
ext_name Параметр, который начинается с ext_ - является дополнительным, в дальнейшем будет доступен как name либо другое название, которое будет указано.


Обратите внимание:

Мы не требуем чтобы Вы слали достоверные данные. Вы можете указать номер телефона и Валюту - любыми

	
	$dataSend = array("registerModel"=>array(
		"Email"=>"betstrong@betstrong.com.test",
		"Password"=>"tq354j533ge",
		"registr_phone"=>"050986542585",
		"currency"=>"USD",
		"partner"=>"{PARTNER_ID_API}"	
	));

$request = WGet::post_request('{HOST_API}/WebServices/Mobile/BetsStoreService.asmx/Register/',json_encode($dataSend));

	
Авторизация пользователя:

Url на который отправляется запрос:

{HOST_API}/WebServices/BCService.asmx/LogIn/

Тип отправки данных: GET

Данные для отправки:

Параметр Описание
login Логин пользователя
password Пароль пользователя

Внимание! Во время авторизации, в ответ приходит cookies, эту куку нужно сохранить, и при последующих запросах ее нужно отправлять.



В ответ приходит объект:

{"d":{"UserId":"1344225"}}

Внутри него лежит ИД пользователя если авторизация была успешно. Если же авторизация не удалась то, объект будет пустой.

{"d":{}}



	
	$dataSend = array(
		"login"=>'betstrong@betstrong.com.test',
		"password"=>"tq354j533ge"
	);
	
	$request = WGet::post_request('{HOST_API}/WebServices/BCService.asmx/LogIn/',json_encode($dataSend));

	
Сохранение купона

Обращаем Ваше внимание, что мы не застявляем слать в купоне реальные суммы ставок. Вы можете указать статическое число, если Вам это необходимо. Например "realAmount"=>"1", всегда будет приходить нам в размере 1USD. Хотя пользователь поставил совершенно другую сумму ставки.

Url на который отправляется запрос:

{HOST_API}/bet/place/

Параметр Описание
list_bets Бетпоинтеры ставок - Что такое бетпоинтер
realAmount Сумма ставки
currency Валюта купона
lang Язык на котором сохраняем ставку
remote_host Url на который мы потом будем отсылать результаты расчета купона
rate_mode

Вариант приема купона, в зависимости от изменения коэффициента. reject - не принимать при изменении коэффициента. accept - принимать в любом случаи. По умолчанию accept.



Обратите внимание, что нужно указать хост вашего сайта (тестового или рабочего, именно на этот  урл будут отправляться результаты по ставке.)

remote_host - нужно указывать без слеша, просто урл сайта.

Отправка будет осуществляться на урл: hostUrl/api/bet/result

Пример отправки данных для ОДИНАРА:

	

	$dataSend = array(
		"data"=>array(
			"list_bets"=>array('live#187183313|17|9|0.5#1.02'),
			"realAmount"=>"150",
			"currency"=>"USD",
			"lang"=>"ru",
			"remote_host"=>"http://Yoursite.name.com",
			"rate_mode"=>"accept"
		)
	);
	
	$request = WGet::post_request('{HOST_API}/bet/place/',json_encode($dataSend));


	
	

Пример отправки данных для ЕКСПРЕССА:

	

	$dataSend = array(
		"data"=>array(
			"list_bets"=>array('live#187183313|17|9|0.5#1.02', 'line#217118313|1|1|0#3.12'),
			"realAmount"=>"150",
			"currency"=>"USD",
			"lang"=>"ru",
			"remote_host"=>"http://Yoursite.name.com",
			"rate_mode"=>"accept"
		)
	);
	
	$request = WGet::post_request('{HOST_API}/bet/place/',json_encode($dataSend));


	
	

Ответ по присланной ставке ОДИНАР

ВАЖНО!!! Вы можете сохранить данные на свое усмотрение, но главное сохранить: betCode, именно по нему и будет приходить статус ставки

	
	{
	"betCode": "607vtec620",
    "status": 1,
    "errorCode": 0,
    "fullErrorCode": 0,
    "d": {
        "BetHeadDetail": {
            "LiveType": "Обычный",
            "AmountOut": 30.85,
            "CoefOrig": 1.99,
            "BetCode": "607vtec620",
            "BetDate": 1581249549000,
            "Bet": 15.5,
            "Status": 1,
            "CountEvents": 1,
            "BetId": "607vtec620",
            "Coef": 1.99,
            "IsLive": false,
            "PosWin": 30.85
        }
    },
    "__type": "BR.Web.BLL.Objects.Bets.BetInfo",   
    "BetsContentDataList": [
        {
            "LinesId": 224751652,
            "CountResults": 0,
            "Outcome": 1,
            "TournamentName": "Чемпионат Испании. Примера",
            "IsBonus": false,
            "CoefOrig": 1.99,
            "Coef": 1.99,
            "BetName": "П1",
            "Result": "Ещё нет результата",
            "SportId": 1,
            "IsLive": true,
            "EventDate": 1581245100000,
            "Teams": "Эспаньол - Мальорка"
        }
    ],
	
    "errorMessage": ""
}

	
	

Ответ по присланной ставке ЕКСПРЕСС

ВАЖНО!!! Вы можете сохранить данные на свое усмотрение, но главное сохранить: betCode, именно по нему и будет приходить статус ставки

	
	{
	"betCode": "76r9i02g9x",
    "status": 1,
    "errorCode": 0,
    "fullErrorCode": 0,
    "d": {
        "BetHeadDetail": {
            "LiveType": "Обычный",
            "AmountOut": 1843.5,
            "BetCode": "76r9i02g9x",
            "BetDate": 1597146488000,
            "Bet": 150,
            "Status": 1,
            "CountEvents": 2,
            "BetId": "76r9i02g9x",
            "Coef": 12.29,
            "PosWin": 1843.5
        }
    },
    "__type": "BR.Web.BLL.Objects.Bets.BetInfo",    
    "BetsContentDataList": [{
        "LinesId": 250614983,
        "Outcome": 1,
        "TournamentName": "Чемпионат Китая",
        "Coef": 4.82,
        "BetName": "Тотал (2.5) Б",
        "Result": "Ещё нет результата",
        "SportId": 1,
        "IsLive": true,
        "EventDate": 1597139100000,
        "Teams": "Шицзячжуан Эвер Брайт - Тяньцзинь Тэда",
    }, {
        "LinesId": 250612386,
        "Outcome": 1,
        "TournamentName": "КВО. Чемпионат Южной Кореи",
        "Coef": 2.55,
        "BetName": "Фора 1 (-4.5)",
        "Result": "Ещё нет результата",
        "SportId": 5,
        "IsLive": true,
        "EventDate": 1597138200000,
        "Teams": "Дусан Беарс - Самсунг Лайонс",
    }],	
    "errorMessage": ""
}

	
	

Описание полей при ответе:

Параметр Описание
betCode

Уникальный номер ставки в нашей системе

errorCode

Это поле может принимать два значения.

  • 0 - хорошо. Купон принят.
  • 1 - неудача
fullErrorCode

Если поле "errorCode"  принимает значение 1. Вы можете проверить поле fullErrorCode.

Это поле может принимать разные значения.

  • 0 - хорошо. Купон принят.
  • 1 - Невозможно получить итоговые данные или данные повреждены.
  • 3 - Результат не существует.
  • 99 - Неизвестная ошибка
errorMessage

Хранятся метки системных ошибок в текстовом фомате

error_exist_bet - такого исхода больше нет

error_repeat_bet_data - ставки из одного матча на разные ивенты. Например, П2 и Тотал больше 1 добавлены в экспресс с одного и того же матча.

error_block_bet_data - на данный момент ставка временно заблокирована для приема.

AmountOut - PosWin

Сумма выигрыша купона

betCode - BetId

Уникальный номер ставки в нашей системе

Bet

Сумма ставки пользователем

CountEvents

Количество ставок в купоне

Coef

Коэфициент на исход

IsLive

Где была сделана ставка. В линии или в Лайве. Может принимать значения: false или true

LinesId

Айди матча

EventDate

Дата матча



Отправка результатов расчета и статусов по купону

Когда добавлена ставка в нашу систему бедет расчитана, Вам отправляется результат по КУПОНУ. Обратите внимание, Вам приходит РЕЗУЛЬТАТ или СТАТУС ПО КУПОНУ. Если Вам необходимы данные по ставкам из купона, смотрите АПИ ниже.

Пример отправки данных:

	
{
    "remote_host": "https://sitepartner_url.com",
    "Heads": [{
        "KeyHead": {
            "Id": "344143",
            "BarCode": "x9c52i8411"
        },
        "Status": 2,
        "ExtStatus": 0,
        "AmountOut": 11130,
        "DateRecive": "1597075782"
    }]
}


ЕСЛИ НЕСКОЛЬКО СТАВОК:
{
	"remote_host": "https://sitepartner_url.com",
	"Heads": [{
		"KeyHead": {
			"Id": "313",
			"BarCode": "75vz48t935"
		},
		"Status": 2,
		"ExtStatus": 0,
		"AmountOut": 19.85,
		"DateRecive": "1592937968"
	}, {
		"KeyHead": {
			"Id": "312",
			"BarCode": "77i0r6e15t"
		},
		"Status": 2,
		"ExtStatus": 0,
		"AmountOut": 12.51,
		"DateRecive": "1592937280"
	}]

}

	

Вам нужно проверить поля <Status> и при необходимости ExtStatus.

Это поле <Status> может принимать разные значения.

  • 2 - купон выигран
  • 4 - купон рассчитывается как проигрыш

 

Это поле <ExtStatus> может принимать два значения.

  • 0 - купон не имеет изменений.
  • 1 - Одна или несколько игр в купоне рассчитываются с изменением коэффициента.

 

ExtStatus = 1.

Например, это происходит, когда игра была отменена. Игра будет рассчитываться с коэффициентом 1.

 

Подводим итог по статусам:

Status = 2 и ExtStatus = 0 - Выигрыш;

Status = 4 и ExtStatus = 0 - Проигрыш;

Status = 2 и ExtStatus = 1 - Возврат (по умолчанию указываем коэфициент 1)

 

ВАЖНО!!!

Вам нужно пересчитать купон, если мы отправим новый статус.

Например. Мы отправили статус 4. А позже мы можем отправить статус 2. Вам нужно добавить деньги пользователю.

А также. Мы отправили статус 2. А позже мы можем отправить статус 4. Вам следует списать деньги пользователя. Это связано с тем, что иногда приходит не верный счет матча. В таком случаи мы в ручном режиме выполняем пересчет

 

Параметр Описание
Id ИД ставки в нашей системе, можно не брать во внимание.
BarCode Уникальный номер купона
Status Статус купона. Может быть Выигрыш = 2, Проигрыш = 4, Возврат.
ExtStatus Статус отпределения купона, если был возврат. МОжет принимать два значения. 0 и 1.
AmountOut Сумма возможного выигрыша
DateRecive Дата и время расчета


Пример запроса:

	
	$dataSend = array(
		"begin"=> "1549922400",
		"count"=> 10,
		"end"=> "1552428000",
		"page"=> 1,
		"periodType"=> 0,
		"showLossBets"=> true,
		"showWinBets"=> true,
		"showWorkBets"=> true
	);
	
	
	$request = WGet::post_request('http://partner_site.com/GetUserBets/',json_encode($dataSend));

	

Пример ответа:

Получение Активных и истории ставок пользователя

Получения ставок пользователя происходит по ссылке:

{HOST_API}/GetUserBets/

Параметр Описание
begin Дата начала выбора вывода ставок
count Количество выводимых ставок на страницу
end Дата конца выборки ставок
page Активная страница
periodType Тип ставки (активные, история)
showLossBets Показать проигрышные
showWinBets Показать выигрышные
showWorkBets Показать не рассчитаны


Пример запроса:

	
	$dataSend = array(
		"begin"=> "1549922400",
		"count"=> 10,
		"end"=> "1552428000",
		"page"=> 1,
		"periodType"=> 0,
		"showLossBets"=> true,
		"showWinBets"=> true,
		"showWorkBets"=> true
	);
	
	
	$request = WGet::post_request('http://partner_site.com/GetUserBets/',json_encode($dataSend));

	

Пример ответа:

	
{
    "d": [{
        "events": [{
            "dateEvent": 1597146000,
            "name": "Atlet (Yellow) - Wolfs (Black) - [с ОТ]",
            "oc_name": "1Х",
            "tournamentName": "Премьер лига 4х4",
            "score": "-:-",
            "status": 0,
            "coef": 1.02
        }, {
            "dateEvent": 1597147200,
            "name": "Чунцин Лифань - Циндао Хайню",
            "oc_name": "Ничья",
            "tournamentName": "Чемпионат Китая",
            "score": "-:-",
            "status": 0,
            "coef": 4.15
        }],
        "date": "1597147108",
        "amountIn": "150",
        "amountOut": "634.5",
        "betCode": "gi7888283r",
        "coef": "4.23",
        "type": 2,
        "countEvents": 2,
        "match": "",
        "id": "109",
        "status": "0"
    }, {
        "events": [{
            "dateEvent": 1597146000,
            "name": "Atlet (Yellow) - Wolfs (Black) - [с ОТ]",
            "oc_name": "1Х",
            "tournamentName": "Премьер лига 4х4",
            "score": "-:-",
            "status": 0,
            "coef": 1.02
        }, {
            "dateEvent": 1597147200,
            "name": "Чунцин Лифань - Циндао Хайню",
            "oc_name": "Ничья",
            "tournamentName": "Чемпионат Китая",
            "score": "-:-",
            "status": 0,
            "coef": 4.15
        }],
        "date": "1597147097",
        "amountIn": "150",
        "amountOut": "634.5",
        "betCode": "t75890591t",
        "coef": "4.23",
        "type": 2,
        "countEvents": 2,
        "match": "",
        "id": "108",
        "status": "0"
    }, {
        "events": [{
            "dateEvent": 1597147200,
            "name": "Перт (20) - Армадейл (20)",
            "oc_name": "1Х",
            "tournamentName": "Чемпионат Австралии. Премьер-лига Западной Австралии до 20 лет",
            "score": "-:-",
            "status": 0,
            "coef": 1.02
        }, {
            "dateEvent": 1597147200,
            "name": "Чунцин Лифань - Циндао Хайню",
            "oc_name": "Ничья",
            "tournamentName": "Чемпионат Китая",
            "score": "-:-",
            "status": 0,
            "coef": 4.15
        }],
        "date": "1597147081",
        "amountIn": "150",
        "amountOut": "634.5",
        "betCode": "155g6g92x3",
        "coef": "4.23",
        "type": 2,
        "countEvents": 2,
        "match": "",
        "id": "107",
        "status": "0"
    }, {
        "events": [{
            "dateEvent": 1597147200,
            "name": "Перт (20) - Армадейл (20)",
            "oc_name": "1Х",
            "tournamentName": "Чемпионат Австралии. Премьер-лига Западной Австралии до 20 лет",
            "score": "-:-",
            "status": 0,
            "coef": 1.02
        }, {
            "dateEvent": 1597147200,
            "name": "Чунцин Лифань - Циндао Хайню",
            "oc_name": "Ничья",
            "tournamentName": "Чемпионат Китая",
            "score": "-:-",
            "status": 0,
            "coef": 4.15
        }],
        "date": "1597147075",
        "amountIn": "150",
        "amountOut": "634.5",
        "betCode": "45x65075v6",
        "coef": "4.23",
        "type": 2,
        "countEvents": 2,
        "match": "",
        "id": "106",
        "status": "0"
    },  {
        "events": [{
            "dateEvent": 1597139100,
            "name": "Шицзячжуан Эвер Брайт - Тяньцзинь Тэда",
            "oc_name": "Тотал (2.5) М ",
            "tournamentName": "Чемпионат Китая",
            "score": "-:-",
            "status": 0,
            "coef": 1.45
        }],
        "date": "1597146309",
        "amountIn": "150",
        "amountOut": "217.5",
        "betCode": "v921921i9i",
        "coef": "1.45",
        "type": 1,
        "countEvents": 1,
        "match": "",
        "id": "102",
        "status": "0"
    }, {
        "events": [{
            "dateEvent": 1597139100,
            "name": "Миндил Эйсес - Касуарина",
            "oc_name": "П2",
            "tournamentName": "Чемпионат Австралии. Премьер-Лига Северной территории",
            "score": "-:-",
            "status": 2,
            "coef": 25
        }],
        "date": "1597146179",
        "amountIn": "150",
        "amountOut": "3750",
        "betCode": "i7a4489439",
        "coef": "25",
        "type": 1,
        "countEvents": 1,
        "match": "",
        "id": "100",
        "status": "2"
    }],
    "count": "11",
    "e": [],
    "u": {
        "id": "24070",
        "name": "t1esrter",
        "mail": "t1esteer@test.loc"
    },
    "t": "",
    "log": {
        "cookies": {
            "PHPSESSID": "aosthk5rseo0pjccpd4cni4lsb",
            "COOKIS": "82f4a36113b2ed879a84eb9ca7256486"
        },
        "params": {
            "data_set": "{\"begin\":\"1594395909\",\"count\":10,\"end\":\"1597151604\",\"page\":1,\"periodType\":0,\"showLossBets\":true,\"showWinBets\":true,\"showWorkBets\":true}",
            "page": 1,
            "count": 10,
            "type": "all",
            "forced_type": "",
            "start": 1594395909,
            "end": 1597151604
        }
    }
}

	
Параметр Описание
events -> dateEvent Дата матча
events -> name Название матча
events -> oc_name Исход, на который сделана ставка
events -> tournamentName Название турнира
events -> score Счет матча
events -> status Статус ставки (2 выигрыш, 4 проигрыш, 0 - не расчитано)
events -> coef Коэфициент ставки
date Дата Купона
amountIn Сумма ставки
amountOut Сумма купона
betCode Номер купона
coef Общий коэфициент купона
type Тип купона (Одинар или Експресс)
countEvents Количестко ставок в купоне
status Статус купона (2 выигрыш, 4 проигрыш, 0 - не расчитано)


Взятие результатов по купонам

Все результаты по расчету купонов, наша система отсылает на указаный remote_host. В случаи, если не пришел результат по копону в течении трех попыток, можно с помошью данного апи, взять результат в любой момент времени.


Получения статусов по купонам:

{HOST_API}/loadbars/

Параметр Описание
mails почта пользователя
links link или номер купона


Отправка запроса:

	
	$dataSend = array(
		"mails"=>array('user@email.com'),
		"links"=>array('fd1rv7z10c')
	);
	
	$request = WGet::post_request('http://partner_site.com/loadbars/',json_encode($dataSend));


	

Получения ответа:

	
			[{
			"Heads": [{
				"KeyHead": {
					"Id": "644559",
					"BarCode": "fd1rv7z10c"
				},
				"Status": 4,
				"AmountOut": "1509",
				"list": [{
					"status": 0,
					"oc_name": "X",
					"rate": 7.22,
					"game_name": "San Lorenzo de Almagro - Independiente",
					"game_dop_name": "",
					"game_score": "7:2 (4:0,3:2)"
				}, {
					"status": 4,
					"oc_name": "Handiсap 1 (0)",
					"rate": 2.09,
					"game_name": "Norwich City - Wolverhampton Wanderers",
					"game_dop_name": "",
					"game_score": "8:5 (3:2,5:3)"
				}]
			}],
			"remote_host": "partner_site.com"
		}]