标签: suitetalk

Netsuite:如何将采购订单链接到销售订单

我正在尝试自动将 NetSuite 采购订单链接到 NetSuite 销售订单,以下是我尝试完成此任务的代码。但我收到错误(见底部)。你能检查一下并让我知道我在这里遗漏了什么吗?

采购订单创建代码:

var createPurchaseOrder = new PurchaseOrder();

createPurchaseOrder.entity = new RecordRef()
{
internalId = “653”
//type = RecordType.purchaseOrder,
//typeSpecified = true
};

RecordRef soRecordRef = new RecordRef();
soRecordRef.internalId = “XXXXXXXX”;
soRecordRef.type = RecordType.salesOrder;
soRecordRef.typeSpecified = true;

createPurchaseOrder.createdFrom = soRecordRef;

RecordRef depRecordRef = new RecordRef();
depRecordRef.internalId = “3”;
depRecordRef.name = “eBay : eBay FNC”;
depRecordRef.type = RecordType.department;
depRecordRef.typeSpecified = true;

createPurchaseOrder.department = depRecordRef;

PurchaseOrderItem[] Items = new PurchaseOrderItem[1];

Items[0] = new PurchaseOrderItem();
RecordRef item = new RecordRef(); …
Run Code Online (Sandbox Code Playgroud)

c# netsuite suitetalk

8
推荐指数
1
解决办法
2500
查看次数

NetSuite SuiteTalk REST Web 服务 - 无效的登录尝试

我正在尝试使用 NetSuite SuiteTalk REST Web 服务来访问 NetSuite CRM 数据。

我可以访问并在生产中工作。能够检索记录数据和元数据。

我现在正在尝试在沙箱中设置访问权限以进行更深入的测试。

在沙箱中,我有: - 启用休息 Web 服务 - 启用基于令牌的身份验证 - 给定用户并发 Web 服务权限 - 给定用户使用访问令牌权限登录 - 创建集成 - 创建访问令牌

所有这些操作都反映了在生产中所做的事情。

当我尝试对 Web 服务执行任何类型的 GET 操作时,我会收到 401 - 无效的登录尝试。

当我检查登录审计跟踪时,我没有看到任何 GET 尝试的记录,失败或其他。

是否有一些系统性的事情我必须在沙箱中额外做才能启用休息 Web 服务?除了在 SuiteCloud/SuiteTalk 中启用它?

我在审计跟踪中完全看不到任何东西的事实让我相信某些东西仍然“关闭”。

===> 4/4/2020 更新

ed14 和 Nihkil,

感谢您的回复,很抱歉回复延迟。

不幸的是,在领域中下划线的连字符对我没有帮助。

让我回顾一下最近的尝试:

1) 首先验证生产中的 REST API 测试是否仍然有效。

2) 沙箱由 CRM 管理员刷新。应用程序仍然存在,但我的访问令牌不在。我在沙箱中创建了一个新的。

是否可以删除应用程序?我看不出有什么办法可以做到这一点。

3) 使用现有的消费者令牌和新的访问令牌进行测试。得到了与我的第一篇文章相同的回复:"title": "无效的登录尝试,有关更多详细信息,请参阅登录审核跟踪。",

4) 通过稍微修改 URL 进行测试,以确保我不会去某个地方的黑洞。它给了我预期的错误。

5)通过修改realm进行测试:Realm 9999999-sb4到Realm 9999999_sb4它给了我一个错误,让我相信我原来的realm是正确的:“title”:“发生意外错误。错误ID:k8hd8pqej3unxblmaoik”,

同样,没有任何测试作为失败的尝试出现在审计日志的任何地方。

不知道从这里去哪里?删除沙箱应用程序(如果可能)并重新开始?还是沙箱中的新应用程序?

感谢您的任何帮助。

布莱恩亨特

rest web-services netsuite suitetalk

7
推荐指数
2
解决办法
2882
查看次数

基于Netsuite Token的API调用中的模糊认证

我正在尝试使用基于令牌的身份验证对Netsuite API进行SOAP调用.我有一个从WDSL生成的C#客户端,它正在发送以下请求(更换了秘密).

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:messages_2016_2.platform.webservices.netsuite.com" xmlns:urn1="urn:core_2016_2.platform.webservices.netsuite.com">
   <soapenv:Header>
      <urn:partnerInfo>
         <urn:partnerId>[MyAccountId]</urn:partnerId>
      </urn:partnerInfo>
      <urn:applicationInfo>
         <urn:applicationId>[MyApplicationId]</urn:applicationId>
      </urn:applicationInfo>
      <urn:tokenPassport>
         <urn1:account>[MyAccountId]</urn1:account>
         <urn1:consumerKey>[MyConsumerKey]</urn1:consumerKey>
         <urn1:token>[MyTokenId]</urn1:token>
         <urn1:nonce>1574515852</urn1:nonce>
         <urn1:timestamp>1499135589</urn1:timestamp>
         <urn1:signature algorithm="HMAC-SHA1">Ll8DbLvTWsBh/G7UtenErR03OrM=</urn1:signature>
      </urn:tokenPassport>
   </soapenv:Header>
   <soapenv:Body>
      <urn:getDataCenterUrls>
         <urn:account>[MyAccountId]</urn:account>
      </urn:getDataCenterUrls>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

我收到了以下回复

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>Ambiguous authentication</faultstring>
         <detail>
            <platformFaults:invalidCredentialsFault xmlns:platformFaults="urn:faults_2016_2.platform.webservices.netsuite.com">
               <platformFaults:code>USER_ERROR</platformFaults:code>
               <platformFaults:message>Ambiguous authentication</platformFaults:message>
            </platformFaults:invalidCredentialsFault>
            <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">partners-java20004.sea.netledger.com</ns1:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多不同的方法来生成签名,nonce和时间戳.目前我有以下内容:

private string computeNonce()
{
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    byte[] data = new byte[20];
    rng.GetBytes(data);
    int value = Math.Abs(BitConverter.ToInt32(data, 0));
    return value.ToString();
}

private long computeTimestamp()
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# netsuite suitetalk

6
推荐指数
4
解决办法
3092
查看次数

NetSuite SuiteTalk API - 获取库存详情

我正在使用 NetSuite 的 SuiteTalk (API) 服务来检索程序集列表。我需要在结果中加载 InventoryDe​​tails 字段以查看分配给项目的序列号/批号。这是我正在使用的当前代码,但结果仍然显示这些字段返回为 NULL,尽管我可以看到 AssemblyBuild 对象的其他字段。我如何获取库存详细信息(序列号/批次号)以在交易搜索中返回?

public static List<AssemblyBuildResult> Get()
{
     var listAssemblyBuilds = new List<AssemblyBuildResult>();

     var service = Service.Context();

     var ts = new TransactionSearch();
     var tsb = new TransactionSearchBasic();

     var sfType = new SearchEnumMultiSelectField
     {
         @operator = SearchEnumMultiSelectFieldOperator.anyOf,
         operatorSpecified = true,
         searchValue = new string[] { "_assemblyBuild" }
     };

     tsb.type = sfType;
     ts.basic = tsb;
     ts.inventoryDetailJoin = new InventoryDetailSearchBasic();

     // perform the search
     var response = service.search(ts);
     response.pageSizeSpecified = true;

     // Process response
     if …
Run Code Online (Sandbox Code Playgroud)

netsuite suitetalk

5
推荐指数
1
解决办法
1969
查看次数

连接到 NetSuite Web 服务时出现 SOAP 错误:“命名空间前缀 'soapenv' 未定义”

通过 Suitetalk API 连接到 NetSuite 生产帐户时,我收到以下错误:

在此输入图像描述

我在连接到该客户端的沙盒帐户时没有遇到问题。我正在通过 C# WCF 项目进行连接。我不认为问题出在 c# 项目上,因为此代码正在与许多其他客户端一起在生产中使用。

在我看来,返回的 SOAP 消息格式不正确 - SOAP 消息中的“soapenv”元素之前似乎有一个换行符。在针对 API 创建“get”请求(使用护照登录)时,我收到此错误。不过,任何 API 调用都会出现此错误,我也尝试过通过 API 简单登录。

我已经仔细检查了该客户的登录详细信息和帐户信息,一切似乎都井井有条。此外,如果此信息不正确,我应该收到身份验证错误 - 而不是格式错误的 SOAP 消息。

任何帮助将不胜感激,谢谢!

c# soap netsuite suitetalk

5
推荐指数
1
解决办法
4579
查看次数

NetSuite SuiteTalk 令牌身份验证:登录尝试无效

我正在使用 Netsuite Web 服务 (SuiteTalk) api,但在使用 tokenPassport 时不断收到无效登录尝试错误。由于令牌身份验证看起来相当复杂,我将包括我已采取的所有步骤。

我已从“设置”>“集成”>“Web 服务首选项”中检索了帐户 ID

我已经设置了一个新角色,并且所有身份验证框均未选中。在权限>设置中我添加了以下权限

  • 访问令牌管理=完整

  • 用户访问令牌 = 完整

  • 网络服务=完整

我已将新角色添加到我的用户访问权限中

我在“设置”>“集成”>“管理器集成”中创建了一个新应用程序,在“身份验证”选项卡下,我选择了“基于令牌的身份验证”

我已在“设置”>“用户/角色”>“访问令牌”中使用以下设置创建了一个新的访问令牌

  • 应用程序名称 = 新应用程序

  • 用户=我

  • 角色=新角色

  • 令牌名称 = 重命名为有意义的名称

我的请求 xml 看起来像

<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:msg="urn:messages_2016_2.platform.webservices.netsuite.com" 
xmlns:core="urn:core_2016_2.platform.webservices.netsuite.com">
  <env:Header>
    <msg:tokenPassport>
      <core:account>123XXXX_SB1</core:account>
      <core:consumerKey>MY_CONSUMER_KEY</cre:consumerKey>
      <core:token>MY_TOKEN_ID</core:token>
      <core:nonce>ZcVszy7ySJ3Ji8PIgwlW</core:nonce>
      <core:timestamp>1530692570</core:timestamp>
      <core:signature algorithm="HMAC-SHA256">nN7V4PH9qWNT9BocMQzKcFetqZ3QxpxutDJ8iZjSmH8=</core:signature>
    </msg:tokenPassport>
  </env:Header>
  <env:Body>
    <msg:get>
      <msg:baseRef xsi:type="core:RecordRef" internalId="1234567" type="customer"/>
    </msg:get>
  </env:Body>
</env:Envelope>  
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 ruby​​ 类来生成随机数和签名

class NetSuiteToken
    attr_reader :account, :consumer_key, :consumer_secret, :token_id, :token_secret

    def initialize(account, consumer_key, consumer_secret, token_id, token_secret)
      @account = account.to_s
      @consumer_key = consumer_key …
Run Code Online (Sandbox Code Playgroud)

authentication soap wsdl netsuite suitetalk

5
推荐指数
1
解决办法
1万
查看次数

NetSuite python TBA 身份验证

我对使用 SOAP 进行 NetSuite 调用这一领域还不熟悉。因此,我对如何解决问题的思考可能完全错误。这是我想要解决的问题: - 语言:Python+ Zeep - 我想将我的应用程序从电子邮件传递转移到基于令牌的身份验证。

在 Python 中,我能够生成 TokenPassport 的所有参数。这是我感到困惑的地方:我在堆栈上查找了一些代码,发现人们正在使用 client.service.login() 方法来登录。此方法采用护照而不是 tokenpassport 对象。是否有一个单独的方法可以使用 tokenpassport obj 进行登录?或者我是否需要使用参数生成(硬编码)一个 XML,并将其作为数据传入标头?

谢谢你

netsuite python-3.x suitetalk

5
推荐指数
1
解决办法
2102
查看次数

如何在 netsuite api 中创建日记条目?

我正在尝试使用 NetSuite 的 SuiteScript API 在 NetSuite 上创建日记条目。

这是我的代码。

export function post() {
  var rec = record.create({
    type: record.Type.JOURNAL_ENTRY,
    isDynamic: true,
  });
  rec.setValue({
    fieldId: "memo",
    value: "from api ",
  });
  rec.setValue({
    fieldId: "type",
    value: "Journal",
  });
  rec.setText({
    fieldId: "type",
    text: "Journal",
  });

  rec.setValue({ fieldId: "transactionnumber", value: "158" });
  rec.setValue({ fieldId: "subsidiary", value: "2" });
  rec.setText({ fieldId: "subsidiary", text: "Headquarters : United States" });
  rec.setValue({ fieldId: "postingperiod", value: "238" });
  rec.setText({ fieldId: "postingperiod", text: "Dec 2021" });
  rec.setValue({ fieldId: "customform", value: …
Run Code Online (Sandbox Code Playgroud)

netsuite restlet-2.0 suitetalk suitescript2.0

5
推荐指数
1
解决办法
2522
查看次数

返回没有任何发票行项目的NetSuite交易搜索

我正在尝试将NetSuite的发票导入我的程序.在这个程序中,我需要尽可能多的关于发票的信息才能被退回.但是,似乎没有返回任何订单项信息.这是我为搜索完成的代码.有什么建议?我试图通过尽可能少的呼叫NetSuite来完成此操作,以保持高性能.

SearchResult searchResults = new SearchResult();

TransactionSearch ts = new TransactionSearch();
TransactionSearchBasic tsb = new TransactionSearchBasic();

// Search for Invoices
if (_InvoiceTxnIds.Count > 0)
{
    tsb.internalId = new SearchMultiSelectField();
    tsb.internalId.@operator = SearchMultiSelectFieldOperator.anyOf;
    tsb.internalId.operatorSpecified = true;

    List<RecordRef> rrlist = new List<RecordRef>();
    foreach (string sTxnId in _InvoiceTxnIds)
    {
        RecordRef rr = new RecordRef();
        rr.internalId = sTxnId;
        rrlist.Add(rr);
    }

    tsb.internalId.searchValue = rrlist.ToArray();

    ts.basic = tsb;

    searchResults = _service.search(ts);
}
Run Code Online (Sandbox Code Playgroud)

c# soap web-services netsuite suitetalk

3
推荐指数
1
解决办法
3569
查看次数

从 Netsuite Web 服务 (Suitetalk) 请求销售订单数据

我想从我的 netsuite 实例中提取销售订单。为了测试这一点,我使用邮递员。当使用带有 url 的 Netsuite REST API 教程环境时:

{{proto}}://{{host}}/rest/platform/{{version}}/record/salesorder
Run Code Online (Sandbox Code Playgroud)

(邮递员用环境值填充变量)
我应该得到一个包含所有销售订单列表的 JSON 对象。
但我收到这个错误:

{
    "type": "https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1",
    "title": "Invalid search query Record 'transaction' was not found. Reason: INSUFFICIENT_PERMISSIONS - Missing permissions for this record.",
    "status": 400,
    "o:errorCode": "INVALID_PARAMETER"
}
Run Code Online (Sandbox Code Playgroud)

我尝试为我的网络服务用户所使用的角色授予很多权限,但我还没有找到合适的权限。发出此获取请求需要什么权限?

rest netsuite suitetalk

3
推荐指数
1
解决办法
3402
查看次数