2015-04-23 27 views
3

我需要通過SFDC登錄訪問Netsuite中的銷售訂單。我已經有了獲取銷售訂單號的代碼。我的問題是我需要生成URL以重定向銷售人員在NetSuite中的銷售訂單。這需要通過套件獲取url'https://system.na1.netsuite.com'。 網址中的'na1'代表Noth America,並且這個網址根據國家而變化。 因此,通過將電子郵件ID,密碼傳遞到實際登錄地址'https://system.netsuite.com/pages/customerlogin.jsp',我需要獲得授權的URL。 nlapiResolveURL(type, identifier, id, displayMode)爲URL的後期部分創建一個URL。獲取NetSuite的授權網址

有什麼想法或解決方案嗎?

+0

只是澄清,你需要從SFDC生成NS的SO的URL? – vVinceth

+0

是的,我在SFDC中獲得銷售訂單的內部ID。 URL生成問題 – gs11111

+0

你是如何從SF獲取NS中SO的內部ID的? 您的NS和SF SO記錄是否同步? – vVinceth

回答

2

如果您已經從RESTlet中檢索ID,只需將該URL添加到RESTlet中的返回對象。正如您所指出的,您應該能夠使用nlapiResolveURL來生成URL。它應該看起來像這樣:

var url = nlapiResolveURL('RECORD', 'salesorder', 1234); 

其中1234是實際的銷售訂單ID。這將設置url喜歡的東西

/app/accounting/transactions/salesorder.nl?id=1234 

爲了獲得基本域,您將需要使用NetSuite的角色服務除了使用您的Restlet。您可以看到名爲的NetSuite幫助文檔使用REST角色服務獲取用戶帳戶,角色和域。這實際上只是一個由NetSuite提供的RESTlet,它允許您傳遞用戶名和密碼,並將返回該用戶有權訪問的所有帳戶和角色。結果通過restDomain屬性包含該帳戶的適當REST域。

此外,對於澄清,在URL中na1不必更改基於在其上該客戶帳戶託管的數據中心基於國家但更具體。

+0

我認爲他正在嘗試從SF生成URL,而不是從NS生成URL。所以nlapiResolveURL不會工作。 – vVinceth

+0

在SF內部不會有任何生成NS URL的機制。您需要將請求發送到NS Roles服務以獲取正確的域。您已經從RESTlet獲取內部標識,因此您可以添加到您的RESTlet代碼中,以便它還生成URL的後一部分。然後,您可以將您的RESTlet結果附加到之前收到的域。 – erictgrubaugh

3

擴大@ egrubaugh360發佈的答案,以獲得基本域,這裏是一個例子。

function credentials(){ 
     this.email = "[email protected]"; 
     this.account = "1234567"; 
     this.role = "25"; 
     this.password = "secretPassword"; 
    } 

    //Setting up URL    
    var url = "https://rest.netsuite.com/rest/roles"; 

    //Calling credential function 
    var cred = new credentials(); 

    //Setting up Headers 
    var headers = {"User-Agent-x": "SuiteScript-Call", 
        "Authorization": "NLAuth nlauth_account=" + cred.account + ", nlauth_email=" + cred.email + 
            ", nlauth_signature= " + cred.password + ", nlauth_role=" + cred.role, 
        "Content-Type": "application/json"}; 

    var response = nlapiRequestURL(url, null, headers); 
    var results = JSON.parse(response.body); 
    var domain = results[0].dataCenterURLs.systemDomain; 

此外,代替systemDomainrestDomainwebservicesDomain也可用。這是一個從NetSuite調用RESTlet的例子,但它可以用任何語言來完成。

0

我通常會這樣做的是創建一個Suitelet或RESTLet來返回所有的訂單信息。 RESTLet可以以JSON格式返回訂單詳細信息,您可以使用它以您自己的視圖格式化訂單。

可以通過可共享URL訪問Suitelet,其中URL查詢字符串的一部分是訂單內部標識(或訂單號)和時間限制的訪問標記。

你可以很容易地使用Netsuite的腳本模板來顯示格式化的銷售訂單。如果由於某些原因需要編輯訂單,事情會變得更加棘手。使用Suitelet可以更有效地進行小修改(比如批准/拒絕和原因代碼),但是如果您希望人們能夠進行任意編輯,那麼您需要讓您的suitelet將其登錄並重定向到客戶中央。

到目前爲止,做到這一點的最好方法是使用SAML或入站單點登錄作爲認證部分。看起來你應該可以做OpenId來訪問客戶中心,但我還沒有這樣做,所以不知道這條路線可能會出現哪些缺陷。