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

Материал из ПланФикс
Перейти к: навигация, поиск
м (Seva переименовал страницу ПланФикс API:Пример аутентификации на php в [[ПланФикс API:Пример аутентификации на php с использованием логина и па…)
 
Строка 12: Строка 12:
 
$api_key = 'your_api_key';
 
$api_key = 'your_api_key';
 
$api_secret = 'your_api_secret';
 
$api_secret = 'your_api_secret';
 
/**
 
*
 
* @param SimpleXMLElement $requestXml
 
* @param string $api_secret
 
* @return string
 
*/
 
function make_sign($requestXml, $api_secret) {
 
return md5(getStringForSign($requestXml) . $api_secret);
 
}
 
 
/**
 
*
 
* @param SimpleXMLElement $XmlElement
 
* @return string
 
*/
 
function getStringForSign($XmlElement) {
 
$result = '';
 
$list = (array) $XmlElement;
 
ksort($list);
 
foreach ($list as $node) {
 
if (is_array($node)) {
 
$result .= implode('', array_map('getStringForSign', $node));
 
} else if (is_object($node)) {
 
$result .= getStringForSign($node);
 
} else {
 
$result .= (string) $node;
 
}
 
}
 
return $result;
 
}
 
  
 
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="auth.login"><account></account><login></login><password></password></request>');
 
$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="auth.login"><account></account><login></login><password></password></request>');
Строка 49: Строка 18:
 
$requestXml->login = 'your_login';
 
$requestXml->login = 'your_login';
 
$requestXml->password = 'your_password';
 
$requestXml->password = 'your_password';
$requestXml->signature = make_sign($requestXml, $api_secret);
 
  
 
$ch = curl_init($api_server);
 
$ch = curl_init($api_server);
Строка 62: Строка 30:
  
 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':X');
+
curl_setopt($ch, CURLOPT_USERPWD, $api_key . ':');
  
 
curl_setopt($ch, CURLOPT_POST, true);
 
curl_setopt($ch, CURLOPT_POST, true);

Текущая версия на 14:04, 15 июля 2019

<?php

$api_server = 'https://api.planfix.ru/xml/';
$api_key = 'your_api_key';
$api_secret = 'your_api_secret';

$requestXml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request method="auth.login"><account></account><login></login><password></password></request>');

$requestXml->account = 'your_account';
$requestXml->login = 'your_login';
$requestXml->password = 'your_password';

$ch = curl_init($api_server);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // не выводи ответ на stdout
curl_setopt($ch, CURLOPT_HEADER, 1);   // получаем заголовки
curl_setopt($ch, CURLOPT_TIMEOUT, 5);   // устанавливам максимальное время ожидания
// не проверять 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 . ':');

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);
?>


Перейти