使用Python,我想从NetSuite中提取数据,同时在NetSuite中添加/更新数据。例如,我想创建销售订单并通过Python添加订单项。
我知道他们有一个我可以使用的WSDL。 (我希望他们也有一个API,但显然不是......)有没有人在Python中使用这个WSDL的例子?有没有更好的方法与NetSuite集成?
答案 0 :(得分:2)
我已经与Netsuite Webservice交易了大约一个星期,没有明确的文档但是一旦你与其他常规的webservices一致,行为很简单,适应自己。我附上一个小脚本登录并获取netsuite中的服务和数据类型的完整列表。
使用factory方法创建与netsuite webservice交互的对象。
我使用suds作为SOAP Python Library。
# -*- coding: utf-8 -*-
from suds.client import Client
import os, time, sys, datetime
import suds
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
reload(sys)
sys.setdefaultencoding('utf8')
NS_HOST = 'https://webservices.netsuite.com'
email ='myemail@xxxxxx.com'
pwd ='mypwd'
account = "99999999"
NS_ENDPOINT = "2016_2"
NS_ROLE = 3
wsdl = NS_HOST + "/wsdl/v" + NS_ENDPOINT + "_0/netsuite.wsdl"
client = Client(url=wsdl)
#You can get the methods and types with this object
print client
ApplicationInfo = client.factory.create('ns16:ApplicationInfo')
ApplicationInfo.applicationId = "xxxxx-XXXX-XXXX-XXXX-XXXXXXXX"
client.set_options(location= NS_HOST + "/services/NetSuitePort_" + NS_ENDPOINT, soapheaders={'applicationInfo':ApplicationInfo})
passport = client.factory.create('ns4:Passport')
passport.email = email
passport.password = pwd
passport.account = account
recordRef = client.factory.create('ns4:RecordRef')
recordRef.name="MX - Gerencia de Contabilidad"
passport.role = recordRef
client.service.login(passport)
答案 1 :(得分:1)
Netsuite为Java,.Net和PHP提供了工具包来访问他们的Web服务。对于其他语言,要么存在第三方工具包,要么必须发送Raw SOAP请求。
对于我的基于Python的项目,我正在使用Raw SOAP请求方法。我建议首先使用任何可用的工具包熟悉Netsuite Web服务,然后Python使用这些知识生成原始SOAP请求。 SOAPUI也可以提供很大的帮助。
您是否已经探索过restlets,它们通常是Web服务的替代品。
答案 2 :(得分:1)