2015-09-30 2 views
2

Я попытался получить доступ к Netsuite по идентификатору, имени пользователя и паролю с помощью PHP Toolkit. И я могу получить детали клиента, используя вышеуказанные учетные данные. У меня есть токен доступа. Но теперь я попытался получить доступ к Netsuite, используя токен доступа. Мне нужен PHP-код для доступа к Netsuite с использованием токена, и я хочу получить информацию о клиенте.Реализация Oauth в netsuite с использованием php

Заранее спасибо

+2

Это слишком широкое, пожалуйста, напишите код, который вы использовали, какие проблемы/ошибки, которые вы получаете, и т. д. – maxshuty

+0

У меня есть код для доступа к Netsuite с использованием учетных данных, не использующих Oauth. Мне нужен этот код только с помощью Oauth. – Prabhu

ответ

9

Вот код, я написал для PHP -> NS интеграции с использованием Restlets и OAuth:

define("NETSUITE_URL", 'https://rest.netsuite.com/app/site/hosting/restlet.nl'); 
define("NETSUITE_SCRIPT_ID", 'XXXXXX'); 
define("NETSUITE_DEPLOY_ID", 'XXXXXX'); 
define("NETSUITE_ACCOUNT", 'XXXXXX'); 
define("NETSUITE_CONSUMER_KEY", 'XXXXXX'); 
define("NETSUITE_CONSUMER_SECRET", 'XXXXXX'); 
define("NETSUITE_TOKEN_ID", 'XXXXXX'); 
define("NETSUITE_TOKEN_SECRET", 'XXXXXX'); 

function sendOrderToNS($details) { 
    $data_string = json_encode($details); 

    $oauth_nonce = md5(mt_rand()); 
    $oauth_timestamp = time(); 
    $oauth_signature_method = 'HMAC-SHA1'; 
    $oauth_version = "1.0"; 

    $base_string = 
     "POST&" . urlencode(NETSUITE_URL) . "&" . 
     urlencode(
      "deploy=" . NETSUITE_DEPLOY_ID 
      . "&oauth_consumer_key=" . NETSUITE_CONSUMER_KEY 
      . "&oauth_nonce=" . $oauth_nonce 
      . "&oauth_signature_method=" . $oauth_signature_method 
      . "&oauth_timestamp=" . $oauth_timestamp 
      . "&oauth_token=" . NETSUITE_TOKEN_ID 
      . "&oauth_version=" . $oauth_version 
      . "&realm=" . NETSUITE_ACCOUNT 
      . "&script=" . NETSUITE_SCRIPT_ID 
     ); 
    $sig_string = urlencode(NETSUITE_CONSUMER_SECRET) . '&' . urlencode(NETSUITE_TOKEN_SECRET); 
    $signature = base64_encode(hash_hmac("sha1", $base_string, $sig_string, true)); 

    $auth_header = "OAuth " 
     . 'oauth_signature="' . rawurlencode($signature) . '", ' 
     . 'oauth_version="' . rawurlencode($oauth_version) . '", ' 
     . 'oauth_nonce="' . rawurlencode($oauth_nonce) . '", ' 
     . 'oauth_signature_method="' . rawurlencode($oauth_signature_method) . '", ' 
     . 'oauth_consumer_key="' . rawurlencode(NETSUITE_CONSUMER_KEY) . '", ' 
     . 'oauth_token="' . rawurlencode(NETSUITE_TOKEN_ID) . '", ' 
     . 'oauth_timestamp="' . rawurlencode($oauth_timestamp) . '", ' 
     . 'realm="' . rawurlencode(NETSUITE_ACCOUNT) .'"'; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, NETSUITE_URL . '?&script=' . NETSUITE_SCRIPT_ID . '&deploy=' . NETSUITE_DEPLOY_ID . '&realm=' . NETSUITE_ACCOUNT); 
    curl_setopt($ch, CURLOPT_POST, "POST"); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
     'Authorization: ' . $auth_header, 
     'Content-Type: application/json', 
     'Content-Length: ' . strlen($data_string) 
    ]); 

    curl_exec($ch); 
    curl_close($ch); 
} 
+0

Спасибо за ваш ответ. Ваш ответ поможет перейти к следующему шагу. Я попробовал ваш код для получения информации о клиенте с помощью сценария Netsuite. Но я получаю пустой ответ от OAuth. Таким образом, нам нужно создать скрипт для каждой независимой учетной записи Netsuite. Есть ли какой-либо возможный способ получить детали клиента без создания скриптов в учетных записях Netsuite? – Prabhu

+0

Спасибо много michoel. Ваш код работает правильно. Я ошибся при передаче данных. Я неправильно отправил данные в виде строки. Я добавил только эти 2 строки. $ datastring = array ('recordtype' => 'customer', 'id' => '5'); sendOrderToNS ($ datastring); – Prabhu

+0

Есть ли какой-либо возможный способ получить информацию о клиенте без создания скриптов в учетных записях Netsuite? – Prabhu

Смежные вопросы