我需要从SFDC登录访问Netsuite中的销售订单。我已经有了获取销售订单号的代码。我的问题是我需要生成URL以从销售人员重定向到NetSuite中的销售订单。这需要通过suitecript获取网址“https://system.na1.netsuite.com”。
网址中的'na1'代表Noth America,根据该国的情况,这会改变网址。
因此,通过将电子邮件ID,密码传递给实际登录地址“https://system.netsuite.com/pages/customerlogin.jsp”,我需要获取授权网址。
nlapiResolveURL(type, identifier, id, displayMode)
即时为网址的后续部分创建网址。
请问任何想法或解决方案?
答案 0 :(得分:3)
扩展@ egrubaugh360发布的答案,获取基本域名,这是一个例子。
function credentials(){
this.email = "netsuiteEmail@example.com";
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;
此外,还可以使用systemDomain
和restDomain
代替webservicesDomain
。这是从NetSuite调用RESTlet的示例,但它可以使用任何语言完成。
答案 1 :(得分:2)
如果您已经从RESTlet中检索ID,只需从RESTlet将URL添加到返回对象即可。您应该能够使用nlapiResolveURL
生成URL,如您所指出的那样。看起来应该是这样的:
var url = nlapiResolveURL('RECORD', 'salesorder', 1234);
其中1234
是实际的销售订单ID。这会将url
设置为类似
/app/accounting/transactions/salesorder.nl?id=1234
为了获得基本域,除了使用RESTlet之外,还需要使用NetSuite的角色服务。您可以看到名为使用REST角色服务获取用户帐户,角色和域的NetSuite帮助文档。这实际上只是NetSuite提供的一个RESTlet,它允许您传入用户名和密码,并将返回给该用户有权访问的所有帐户和角色。结果包括通过restDomain
属性为该帐户提供适当的REST域。
此外,为了澄清,网址中的na1
不一定会根据国家/地区更改,更具体地说,基于该客户端上的数据中心帐户已托管。
答案 2 :(得分:0)
我通常会做的事情是创建一个Suitelet或RESTLet来返回所有订单信息。 RESTLet可以以JSON格式返回订单详细信息,您可以使用它来使用您自己的视图格式化订单。
可以生成通过可共享URL访问的Suitelet,其中URL查询字符串的一部分是订单内部id(或订单号)和时间限制访问令牌。
您可以非常轻松地使用Netsuite的可编写脚本的模板来显示格式化的销售订单。如果由于某种原因需要编辑订单,事情会变得有点棘手。使用Suitelet可以更有效地进行次要编辑(例如批准/拒绝和原因代码),但如果您希望人们能够进行任意编辑,那么您需要让您的套件登录并将其重定向到客户中心。
到目前为止,最好的方法是使用SAML或入站单点登录进行身份验证。看起来您应该能够通过OpenId访问客户中心,但我还没有完成,所以不知道可能会出现哪些陷阱。