Oauth implementation in netsuite using php
Here is some code I wrote for a PHP -> NS integration using Restlets and 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-SHA256';
$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("sha256", $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);
}
Oauth implementation in netsuite using php and method GET
The problem was with the query params, it needs to be in a alphabetical order, so instead of
$base_string =
"GET&" . 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
. "&script=" . NETSUITE_SCRIPT_ID
. "&client=" . NETSUITE_CLIENT
);
I had to do
$base_string =
"GET&" . urlencode(NETSUITE_URL) . "&" .
urlencode(
"client=" . NETSUITE_CLIENT
. "&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
. "&script=" . NETSUITE_SCRIPT_ID
);
Oauth with HMAC-SHA256 in Netsuite using PHP cURL GET
pretty sure your realm should be:
$realm = "xxxxx_SB1"; // underbar not dash
NetSuite connect using PHP oAuth 1.0 getting error
You missed account id in the url
curl_setopt($ch, CURLOPT_URL, NETSUITE_URL . '?&script=' . NETSUITE_SCRIPT_ID . '&deploy=' . NETSUITE_DEPLOY_ID . '&realm=' . NETSUITE_ACCOUNT );
Related Topics
How to Use String Concatenation to Define a Class Const in PHP
PHP Short Circuit Lazy Evaluation, Where Is It in the PHP.Net Manual
Order by Before Group by Using Eloquent (Laravel)
What's Difference Between _Construct and Function with Same Name as Class Has
Better Way to Check Variable for Null or Empty String
How Would I Implement a Simple Site Search with PHP and MySQL
Update Without Touching Timestamps (Laravel)
How to Access Service Container in Symfony2 Global Helper Function (Service)
PHP Get PDF File from Base64 Encoded Data String
Apply a Coupon Programmatically in Woocommerce
When to Use Index.PHP Instead of Index.Html
Get Last Executed Query in PHP Pdo
PHP - Check If the Page Run on Mobile or Desktop Browser
PHP - Csrf - How to Make It Works in All Tabs