Мы пытаемся интегрироваться с Xero с помощью PHP.Похоже, мы застряли при попытке добавить простой контакт, используя следующий код:
Что у нас пока нет:
- Получить токен неавторизованного запроса - Работает
- Перенаправление пользователя - Works
- Замена токена запроса на токен доступа - Works
- Подключение к Xero API - Works
- Получить контакт, используя ('https://api.xero.com/api.xro/2.0/Contacts’) - Работает
- POST-контакт с использованием ('https://api.xero.com/api.xro/2.0/Contacts’) - Возвращает ошибку auth_problem = signature_invalid & oauth_problem_advice = Failed% 20to% 20validate% 20signature
нижекод до сих пор используется для этой функции. Если кто-то из вас мог бы помочь нам с этим начальным шагом, это было бы чрезвычайно полезно.
$url_xero = 'https://api.xero.com/api.xro/2.0/Contacts';
$data = "{ \r\n Name: HFG Limited \r\n }";
$data_json = json_encode($data);
$consumer = new OAuthConsumer($xero_consumer_key, $xero_consumer_secret);
$access_token2 = new OAuthToken($oauth_token_final, $oauth_token_secret_final);
$request = OAuthRequest::from_consumer_and_token($consumer,
$access_token2,'POST', $url_xero, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, $access_token2);
$headers = array($request->to_header());
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url_xero);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$rsp = curl_exec($ch);
$info = curl_getinfo($ch);
$results = json_decode($rsp);
if ($rsp === false) {
throw new Exception(curl_error($ch), curl_errno($ch));
}