
[英]Netsuite SuiteScript how to get value from the redirected url
[英]Get authorized url of NetSuite
我需要通过 SFDC 登录访问 Netsuite 中的销售订单。 我已经有了获取销售订单号的代码。 我的问题是我需要生成 URL 以从销售人员重定向到 NetSuite 中的销售订单。 这需要通过suitescript 获取url ' https://system.na1.netsuite.com '。 url 中的“na1”代表北美,这会根据国家/地区的不同而改变 url。 因此,通过将电子邮件 ID、密码传递到实际登录地址“ https://system.netsuite.com/pages/customerlogin.jsp ”,我需要获得授权的 url。 nlapiResolveURL(type, identifier, id, displayMode)
即时为 url 的后面部分创建一个 URL。
请问有什么想法或解决方案吗?
扩展@egrubaugh360 发布的答案,以获取基本域,这是一个示例。
var credentials = {
email: "netsuiteEmail@example.com",
account: "1234567",
role: "25",
password: "secretPassword",
};
//Setting up URL
var url = "https://rest.netsuite.com/rest/roles";
//Setting up Headers
var headers = {"User-Agent-x": "SuiteScript-Call",
"Authorization": "NLAuth nlauth_account=" + credentials.account + ", nlauth_email=" + credentials.email +
", nlauth_signature= " + credentials.password + ", nlauth_role=" + credentials.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 的示例,但它可以用任何语言完成。
如果您已经从 RESTlet 检索 ID,只需将 URL 添加到您从 RESTlet 返回的对象。 正如您所指出的,您应该能够使用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
,URL 中的na1
不一定会根据国家/地区而变化,而是更具体地基于托管该客户帐户的数据中心。
对于这样的事情,我通常会做的是创建一个 Suitelet 或 RESTLet 来返回所有订单信息。 RESTLet 可以以 JSON 格式返回订单详细信息,您可以使用它以您自己的视图格式化订单。
可以生成通过可共享 URL 访问的 Suitelet,其中 URL 查询字符串的一部分是订单内部 ID(或订单号)和限时访问令牌。
您可以非常轻松地使用 Netsuite 的脚本化模板来显示格式化的销售订单。 如果您出于某种原因需要编辑订单,事情就会变得有点棘手。 使用 Suitelet 可以更有效地完成较小的编辑(例如批准/拒绝和原因代码),但如果您希望人们能够进行任意编辑,那么您需要让您的套件登录并将它们重定向到客户中央。
到目前为止,最好的方法是对身份验证部分使用 SAML 或入站单点登录。 看起来您应该能够使用 OpenId 来访问客户中心,但我还没有这样做,所以不知道这条路线可能会遇到什么陷阱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.