Я использую PHP-OAuth2 из https://github.com/adoy/PHP-OAuth2 Это предложено Freeagent в их документах.Я смог настроить аутентификацию, получить токен, сохранить дату окончания срока действия, а затем настроить процесс автоматической загрузки нового токена по истечении срока действия текущего.
Пока все хорошо!
Я также смог установить контакты в Песочнице и затем перечислить их в своем веб-приложении, извлекая их из Freeagent.
Проблема, с которой я столкнулся, заключается в создании нового счета иЯ подозреваю, что причиной этого является отсутствие у меня знаний oAuth, несмотря на то, что я читаю документы по API и стараюсь найти решение.
Вот что я пытаюсь сделать, чтобы создать счет (PHP):
$client = new OAuth2\Client(CLIENTID, SECRET);
$params = array($xml); // See below
$response = $client->fetch("https://api.sandbox.freeagent.com/v2/invoices",
$params,
'GET',
array(
"Authorization" => "Bearer $freeagentaccesstoken",
"User-Agent" => "My web app",
"Content-Type" => "application/xml",
"Accept" => "application/json"
)
);
Я хочу отправить запрос на выставление счета в XML и получить ответ в формате JSON.
Мой XML ($ xml в приведенном выше) отформатирован следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<invoice>
<contact>https://api.sandbox.freeagent.com/v2/contacts/58019</contact>
<dated-on type="datetime">2019-05-07</dated-on>
<payment_terms_in_days>15<payment_terms_in_days>
<currency>GBP</currency>
<net-value type="decimal">0.0</net-value>
<total-value type="decimal">20.00</total-value>
<paid-value type="decimal">0.0</paid-value>
<due-value type="decimal">20.00</due-value>
<invoice-items type="array">
<invoice-item>
<description>Description will go here</description>
<item-type>Hours</item-type>
<price type="decimal">20.00</price>
<quantity type="decimal">1</quantity>
</invoice-item>
</invoice-items>
</invoice>
При отправке возвращается:
Array ( [result] => Array ( [invoices] => Array ( ) ) [code] => 200 [content_type] => application/Jon; charset=utf-8 )
Счета не создаются (я подозреваю, что пустые скобки в массиве счетов-фактур - пустая раздача, хотя в помощь не выдается никаких ошибок)я).
Затем я надеялся получить номер счета-фактуры (который я думаю, что называется "ссылка" в Freeagent), используя что-то вроде этого:
foreach ($response['result']['invoices'] as $item) {
$invoicenumber=$item['reference'];
}
Но я не получаютак далеко, и я подозреваю, что есть лучший способ получить это, когда я в конце концов это сделаю.
Freeagent API не дает конкретных примеров кода, и интернет не очень помог новичку oAuth, как я.Я бы очень признателен за помощь здесь.Спасибо!