Перечитал пол справки (в переводе google) на Betfair.
Вытащил sessionToken, создал Application Key
Скачал пример кодов на PHP https://github.com/b...tree/master/php
От только ни как не получается вообще получить даже список событий.
Сначала в коды подставлял свой sessionToken и Application Key, потом вычитал в блоге, что sessionToken меняется, а вот Application Key всегда один и тот же (что логично) и тогда пытался подключиться таким кодом:
<?php
ob_start();
$sessionToken = getACookie();
ob_end_clean();
//echo $sessionToken;
$APP_KEY = 'мой код';
$SESSION_TOKEN = $sessionToken; //тут я получаю из куков текущий sessionToken
function getACookie(){
$loginEndpoint= "https://identitysso.betfair.com/api/login";
$cookie = "";
$username = "Мой логин";
$password = "Мой пароль";
$login = "true";
$redirectmethod = "POST";
$product = "home.betfair.int";
$url = "https://www.betfair.com/";
$fields = array
(
'username' => urlencode($username),
'password' => urlencode($password),
'login' => urlencode($login),
'redirectmethod' => urlencode($redirectmethod),
'product' => urlencode($product),
'url' => urlencode($url)
);
//open connection
$ch = curl_init($loginEndpoint);
//url-ify the data for the POST
$counter = 0;
$fields_string = "&";
foreach($fields as $key=>$value)
{
if ($counter > 0)
{
$fields_string .= '&';
}
$fields_string .= $key.'='.$value;
$counter++;
}
rtrim($fields_string,'&');
curl_setopt($ch, CURLOPT_URL, $loginEndpoint);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_HEADER, true); // DO RETURN HTTP HEADERS
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // DO RETURN THE CONTENTS OF THE CALL
//execute post
$result = curl_exec($ch);
echo $result;
if($result == false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
$temp = explode(";", $result);
$result = $temp[0];
$end = strlen($result);
$start = strpos($result, 'ssoid=');
$start = $start + 6;
$cookie = substr($result, $start, $end);
}
curl_close($ch);
return $cookie;
}
function sportsApingRequest($appKey, $sessionToken, $operation, $params)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://beta-api.betfair.com/rest/v1/$operation/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Application: ' . $appKey,
'X-Authentication: ' . $sessionToken,
'Accept: application/json',
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$response = json_decode(curl_exec($ch));
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_status == 200) {
return $response;
} else {
echo 'Call to api-ng failed: ' . "\n";
echo 'Response: ' . json_encode($response);
exit(-1);
}
}
function getAllEventTypes($appKey, $sessionToken)
{
$jsonResponse = sportsApingRequest($appKey, $sessionToken, 'listEventTypes', '{"filter":{}}');
return $jsonResponse[0]->result;
}
function extractHorseRacingEventTypeId($allEventTypes)
{
foreach ($allEventTypes as $eventType) {
if ($eventType->eventType->name == 'Horse Racing') {
return $eventType->eventType->id;
}
}
}
echo getAllEventTypes($APP_KEY, $SESSION_TOKEN);
?>
Результат: Call to api-ng failed: Response: null
Может я чего не так понял? Наведите на путь истинный, пжаласта
P.S.: в основном хочу мониторить коэффициенты, до ставок на автомате пока думается рановато...
2
PHP соединение с BETFAIR API (помогите пжаласта)
Автор newBet, Sep 17 2015 16:32
4 ответов в эту тему
#1 OFFLINE
Добавлено 17 September 2015 - 16:32
#2 OFFLINE
Добавлено 17 September 2015 - 21:01
А чего это у тебя https://beta-api.bet.../v1/$operation/ ?
Вот тут например адрес https://api.betfair....ing/json-rpc/v1
Вот тут например адрес https://api.betfair....ing/json-rpc/v1
#3 OFFLINE
Добавлено 18 September 2015 - 07:59
newBet, on 17 September 2015 - 16:32, сказал:
curl_setopt($ch, CURLOPT_URL, "https://beta-api.betfair.com/rest/v1/$operation/");
Может я чего не так понял? Наведите на путь истинный, пжаласта
Может я чего не так понял? Наведите на путь истинный, пжаласта
как минимум, неправильный endpoint, времена beta-api давно прошли. Для rest запроса (к рынкам) надо так:
https://api.betfair.com/exchange/betting/rest/v1.0/$operation/
#4 OFFLINE
Добавлено 18 September 2015 - 11:25
Попробовал этот вариант:
https://api.betfair....1.0/$operation/
ответ тот же: Call to api-ng failed: Response: null
И исходники от сюда:
https://github.com/b...php/jsonrpc.php
Я изначально взял!
Я там подменяю переменные:
$APP_KEY = 'Мой ключ';
$SESSION_TOKEN = 'мое значение на Betfair';
Так как механиз до конца так и не понял, но понимаю так, что $SESSION_TOKEN может меняться, поэтому пробовал и через куки, как описано в коде выше брать $SESSION_TOKEN.
Но появляется ошибка
1. Get all Event Types....
Notice: Trying to get property of non-object in on line 49
Т.е. ругается на строку return $jsonResponse[0]->result; в коде ниже:
function getAllEventTypes($appKey, $sessionToken)
{
$jsonResponse = sportsApingRequest($appKey, $sessionToken, 'listEventTypes', '{"filter":{}}');
return $jsonResponse[0]->result;
}
Я реально в ауте, не могу понять, почему тестовые примеры не работают, аааааааа. Непонятки одни
https://api.betfair....1.0/$operation/
ответ тот же: Call to api-ng failed: Response: null
И исходники от сюда:
https://github.com/b...php/jsonrpc.php
Я изначально взял!
Я там подменяю переменные:
$APP_KEY = 'Мой ключ';
$SESSION_TOKEN = 'мое значение на Betfair';
Так как механиз до конца так и не понял, но понимаю так, что $SESSION_TOKEN может меняться, поэтому пробовал и через куки, как описано в коде выше брать $SESSION_TOKEN.
Но появляется ошибка
1. Get all Event Types....
Notice: Trying to get property of non-object in on line 49
Т.е. ругается на строку return $jsonResponse[0]->result; в коде ниже:
function getAllEventTypes($appKey, $sessionToken)
{
$jsonResponse = sportsApingRequest($appKey, $sessionToken, 'listEventTypes', '{"filter":{}}');
return $jsonResponse[0]->result;
}
Я реально в ауте, не могу понять, почему тестовые примеры не работают, аааааааа. Непонятки одни
#5 OFFLINE
Добавлено 18 September 2015 - 14:12
А может быть, коды примеров, представленные здесь: https://github.com/b...tree/master/php
просто устарели (все таки 29 июля 2013 года) были опубликованы.
Может быть эти коды не только у меня не работают?
просто устарели (все таки 29 июля 2013 года) были опубликованы.
Может быть эти коды не только у меня не работают?