Я работаю над интеграцией с Netsuite Rest Web Services API (не с SOAP / RESTlets). Я полностью функционирую в почтальоне, используя предоставленную коллекцию, но не выяснил фактическую строку для подписи, и документация REST ничего не показывает. Я попытался использовать документацию от других служб, но не go.
Итак, вытащил журнал у почтальона. Я пытался воспроизвести то, что я считаю, используя идентификатор учетной записи, ключ потребителя, токен, создание одноразового номера и отметку времени unix.
GET / rest / платформа / v1 / каталог метаданных / запись? Select = клиент HTTP / 1.1 Принятие: приложение / сваггер + json Авторизация: OAuth realm = "TSTDRV2164811", oauth_consumer_key = "2bb1d46bb5f3a69fdea1eedeb8eeb8d0ea8e8e8b8108b8b8e8b6108b6b6eb6 "02545230f53d0cf8fc5075f8cee01847f28131127fad358501479952bb8ce046", oauth_signature_method = "HMA C -sha1", oauth_timestamp = "1579805526", oauth_nonce = "V5GBSPyMRPB", oauth_version = "1.0", oauth_signature = "rp6xmqnCofmVPl9D0nk48G9DVww% 3D" User-Agent: PostmanRuntime / 7.22.0 кэш -Control: no-cache Почтальон-токен: cbc0f225-374 c -4e cc -8b5b-daf60469137e Хост: tstdrv2164811.suitetalk.api.netsuite.com Принять-кодирование: gzip, deflate, br Cook ie: NS_ROUTING_VERSION = LAGGING Соединение: keep-alive
<?php
$url = 'https://TSTDRV2164811.suitetalk.api.netsuite.com/rest/platform/v1/metadata-catalog/record?select=customer';
//$url = 'https://rest.netsuite.com/app/site/hosting/restlet.nl?script=6&deploy=1&customParam=someValue&testParam=someOtherValue';
//or https://webservices.netsuite.com/services/NetSuitePort_2015_2 for webservices
$httpMethod = 'GET';
$tokenKey = '02545230f53d0cf8fc5075f8cee01847f28131127fad358501479952bb8ce046';
$tokenSecret = '8c4bb18a6ff15a699825ad833845d0a3dc3abca80aa89abe3c58f77eecd96f9e';
$consumerKey = '2bb1d46bb5f3a69fdea1ede39bf46e186bd860a15d8deaf51f7488b1e09bd2a2';
$consumerSecret = 'a684af8065f75f647ff24f58c3eeb48423907981ea7b93027f53cf63dcfd7626';
$signatureMethod = 'HMAC-SHA1'; //or HMAC-SHA256
$version = '1.0';
$nonce = 'V5GBSPyMRPB'; //substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10);
$timestamp = '1579805526'; // time();
$realm = 'TSTDRV2164811'; //scompid
$baseString = 'oauth_consumer_key='. $consumerKey;
$baseString .= '&oauth_nonce='. $nonce;
$baseString .= '&oauth_signature_method='. $signatureMethod;
$baseString .= '&oauth_timestamp='. $timestamp;
$baseString .= '&oauth_token='. $tokenKey;
$baseString .= '&oauth_version='. $version;
//$baseString .= '&realm='. $realm;
$base = urlencode($baseString);
$sign = $httpMethod .'&'. urlencode($url) .'&'. $base;
$key = urlencode($consumerSecret) .'&'. urlencode($tokenSecret);
$signature = urlencode(base64_encode(hash_hmac('sha1', $sign, $key, true)));
$output .= sprintf(
'<root><signature>%s</signature><Nonce>%s</Nonce><Created>%s</Created></root>',
$signature,
$nonce,
$timestamp
);
echo $output;
Я ожидал бы получить t вышеупомянутое значение, но вместо этого я получаю это
<root>
<signature><![CDATA[MW0rGmPfcY7yxLOMSWV6jcWs6s8%3D]]></signature>
<Nonce><![CDATA[V5GBSPyMRPB]]></Nonce>
<Created><![CDATA[1579805526]]></Created>
</root>
Я изменил свой предыдущий код так, как я сейчас пытаюсь, и до сих пор нет go