Я пишу небольшое приложение для сайта бухгалтерского учета под названием Xena.biz.
В системе есть API, который использует для подключения oAuth2. Все, что я разобрал - я отлично могу найти нужную мне информацию. Теперь мне нужно отправить строку PUT обратно Зене - вот где я не могу это понять.
Система построена на файле XenaClient.php, который содержит все вызовы авторизации и все запросы.
Вот пример того, как я получаю информацию:
<?
require('XenaClient.php');
const CLIENT_ID = 'SECRET';
const CLIENT_SECRET = 'VERY SECRET';
$xenaclient = new XenaOAuth2Client(CLIENT_ID, CLIENT_SECRET);
$xenaclient->setAccessToken($_COOKIE["MaskedCookieName"]);
$ordertask = $xenaclient->fetch('https://my.xena.biz/Api/Fiscal/'.$_GET["fiscal"].'/OrderTask/'.$_GET["orderId"]);
var_dump($ordertask);
?>
Но теперь я хочу ОТПРАВИТЬ информацию через PUT. Согласно сценарию XenaClient.php я должен использовать команду $ xenaclient-> fetch ($ url, $ parameters);
Так что это мой выстрел
require('XenaClient.php');
const CLIENT_ID = 'SECRET';
const CLIENT_SECRET = 'VERY SECRET';
$xenaclient = new XenaOAuth2Client(CLIENT_ID, CLIENT_SECRET);
$xenaclient->setAccessToken($_COOKIE["MaskedCookieName"]);
$xenaclient->fetch('https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',array('ConfirmationDate'=>NULL,'ConfirmationReportLayoutId'=>261205291));
?>
Это ничего не возвращает назад и не создает желаемого эффекта внутри системы бухгалтерского учета. Никакой помощи от самих Зен не получить, поэтому я прошу вас, ребята, надеюсь, вы сможете мне помочь.
Вот несколько указателей:
Ресурс API: https://dev.xena.biz
XenaClient.php: https://github.com/EG-BRS/Xena.ExampleApp.PHP/blob/master/XenaClient.php






XenoOAuth2Client :: выборка сообщает вам, что параметр в третьих функции выборки - хотя и необязательный - определяет метод запроса. По умолчанию это GET (XenaOAuth2Client::HTTP_METHOD_GET), поэтому, если вы хотите PUT, вы должны явно указать соответствующий параметр PUT (другие методы см. константы класса XenoOAuth2Client:
$xenaclient->fetch(
'https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',
array('ConfirmationReportLayoutId'=>261205291),
XenaOAuth2Client::HTTP_METHOD_PUT
);
большинство API сегодня используют json, возможно должен быть json ...
$xenaclient->fetch(
'https://my.xena.biz/Api/Fiscal/96946/Order/243936250/Confirmation',
json_encode(array('ConfirmationReportLayoutId'=>261205291)),
XenaOAuth2Client::HTTP_METHOD_PUT
);
@Xelot Я предполагаю, что вы действительно получаете токен доступа, как в github.com/EG-BRS/Xena.ExampleApp.PHP/blob/master/index.php
также согласно api dev.xena.biz/api/#!/Order324532ApiOrder/… ConfirmationDate является необязательным, поэтому вы можете оставить его или сделать целым числом (временная метка unix).
Я знаю, я пытался поставить текущую временную метку unix на запрос - все равно ничего не происходит.
@Xelot Я сейчас обдумываю, если $ parameters должны быть строкой в кодировке json ... это будет означать ... ну ... я записываю это в свой ответ
@Xelot также, вы должны посмотреть на возвращаемое значение этой функции (возможно, var_dump) или опубликовать сообщения об ошибках, если есть
ВЫ, поистине спасатель жизни Джакуми :) - третьим параметром было недостающее звено. Я весь день пытался json_encode этот массив, но теперь он работает !! ОГРОМНОЕ СПАСИБО
Я понимаю, что вы имеете в виду, но это не решило мою проблему. Мог ли я неправильно отправить свой массив? Все данные настроены на Json / xml на сервере. Правильно ли я отправляю свою информацию?