ПланФикс API: Пример получения списка проектов на php — различия между версиями

Материал из ПланФикс
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий этого же участника)
Строка 7: Строка 7:
  
 
Простой пример получения списка проектов и вывод его.  
 
Простой пример получения списка проектов и вывод его.  
Из примера становится ясно назначение параметра '''sid'''.
 
  
  
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
 +
<?php
 +
 
$api_server = 'https://api.planfix.ru/xml/';
 
$api_server = 'https://api.planfix.ru/xml/';
$api_key = 'APIKey-ВАШЕГО_ПРИЛОЖЕНИЯ';// смотри http://dev.planfix.ru/
+
$api_key = 'APIKey-ВАШЕГО_ПРИЛОЖЕНИЯ';//  
$api_secret = 'APISecret-ВАШЕГО_ПРИЛОЖЕНИЯ';
+
$api_token = 'ТОКЕН_АВТОРИЗАЦИИ';
$planfixAccount = 'ВАШ_АККАУНТ';
+
 
$planfixUser = 'ЛОГИН_ПОЛЬЗОВАТЕЛЯ_В_ПЛАНФИКС';
+
/** получаем список доступных нам проектов и выводим его
$planfixUserPassword = 'ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ';
+
* используем функции на: http://goo.gl/E41Vv
 +
*/
 +
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="project.getList"><account></account></request>');
 +
 
 +
$requestXml->account = 'your_account';
 +
$requestXml->pageCurrent = 1;
 +
// остальные параметры являются необязательными, поэкспериментируйте сами
 +
 
 +
$ch = curl_init($api_server);
 +
 
 +
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 +
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // не выводи ответ на stdout
 +
curl_setopt($ch, CURLOPT_HEADER, 1);  // получаем заголовки
 +
// не проверять SSL сертификат
 +
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 +
// не проверять Host SSL сертификата
 +
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  
include 'lib.php';
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 +
curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':' . $api_token);
  
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="auth.login"><account></account><login></login><password></password></request>');
+
curl_setopt($ch, CURLOPT_POST, true);
 +
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml->asXML());
 +
echo $requestXml->asXML();
  
$requestXml->account = $planfixAccount;
+
$response = curl_exec($ch);
$requestXml->login =  $planfixUser;
+
$error = curl_error($ch);
$requestXml->password = $planfixUserPassword;
+
var_dump($error);
$requestXml->signature = make_sign($requestXml, $api_secret);
 
  
$result = apiRequest($api_server, $api_key, $requestXml);
+
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
if(!$result['success']) {
+
$responseBody = substr($response, $header_size);
echo $result['response'];
 
exit();
 
}
 
$apiResult = $result['response'];
 
parseAPIError($apiResult);
 
  
/**
+
curl_close($ch);
* Важно понимать:
 
* 1 - что полученный идентификатор сессии необходим для вызова всех остальных функций;
 
* 2 - время жизни сессии ограничено 20-ю минутами;
 
* 3 - при каждом следующем вызове это время продлевается;
 
* 4 - сессию не надо получать перед каждым вызовом функции (количество запросов ограничено);
 
*/
 
$api_sid = $apiResult->sid;
 
echo "sid is: $api_sid<br>";
 
/*
 
* получаем список доступных нам проектов и выводим его
 
* используем функции на: http://goo.gl/E41Vv
 
*/
 
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="project.getList"><account></account><sid></sid></request>');
 
$requestXml->account = $planfixAccount;
 
$requestXml->sid = $api_sid;
 
$requestXml->pageCurrent = 1;
 
// остальные параметры являются необязательными, поэкспериментируйте сами
 
$requestXml->signature = make_sign($requestXml, $api_secret);
 
$result = apiRequest($api_server, $api_key, $requestXml);
 
if(!$result['success']) {
 
echo $result['response'];
 
exit();
 
}
 
$apiResult = $result['response'];
 
parseAPIError($apiResult);
 
$totalCount = $apiResult->projects['totalCount'];
 
$count = $apiResult->projects['count'];
 
echo "Всего проектов $totalCount<br>";
 
echo "Получено проектов $count<br>";
 
  
foreach($apiResult->projects->project as $project) {
+
var_dump($responseBody);
echo "Проект:{$project->title} создатель:{$project->owner->name}";
 
echo '<br>';
 
}
 
 
?>
 
?>
 +
 
</source>
 
</source>
  

Текущая версия на 13:00, 5 декабря 2019

Простой пример получения списка проектов и вывод его.


<?php
<?php

$api_server = 'https://api.planfix.ru/xml/';
$api_key = 'APIKey-ВАШЕГО_ПРИЛОЖЕНИЯ';// 
$api_token = 'ТОКЕН_АВТОРИЗАЦИИ';

/** получаем список доступных нам проектов и выводим его
 * используем функции на: http://goo.gl/E41Vv
 */
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="project.getList"><account></account></request>');

$requestXml->account = 'your_account';
$requestXml->pageCurrent = 1;
// остальные параметры являются необязательными, поэкспериментируйте сами

$ch = curl_init($api_server);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // не выводи ответ на stdout
curl_setopt($ch, CURLOPT_HEADER, 1);   // получаем заголовки
// не проверять SSL сертификат
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':' . $api_token);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml->asXML());
echo $requestXml->asXML();

$response = curl_exec($ch);
$error = curl_error($ch);
var_dump($error);

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$responseBody = substr($response, $header_size);

curl_close($ch);

var_dump($responseBody);
?>


Перейти