我是Quickbooks的新手,但我已经在Quickbook Premier Desktop Edition上安装并拥有了一个帐户以及Quickbook连接器。我正尝试通过可用的Quickbook连接器将我的自定义应用程序中的发票,估算和客户信息同步到Quickbooks中。问题是,我的应用程序返回的SOAP xml响应不被Quickbook连接器接受,因为它们的格式可能不同,所以我想使用nodejs为此创建一个服务网关,其中这个中间层可以处理和转换SOAP。到Quickbook连接器接受的格式。有一个限制,我无法直接更改我的应用程序生成SOAP响应的格式。所以任何人都可以建议从哪里开始,如果有的话,我正在思考正确的方向。提前致谢!
答案 0 :(得分:2)
使用soap package,构建您的服务,如下所示:
var soap = require('soap');
var yourService = {
QBWebConnectorSvc: {
QBWebConnectorSvcSoap: {
serverVersion: function (args) {
// serverVersion code here
return {
serverVersionResult: { string: retVal }
};
},
clientVersion: function (args) {
//clientVersion code here
return {
clientVersionResult: { string: retVal }
};
},
// and all other service functions required by QBWC
}
}
};
var soapServer = soap.listen(server, '/path-to-your-wsdl', yourService, xml);
以下是clientVersion()
的示例响应应该看起来像使用该结构:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://developer.intuit.com/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/">
<soap:Body>
<tns:clientVersionResponse xmlns:tns="http://developer.intuit.com/" xmlns="http://developer.intuit.com/">
<tns:clientVersionResult>
<tns:string></tns:string>
</tns:clientVersionResult>
</tns:clientVersionResponse>
</soap:Body>
</soap:Envelope>
我已经编写了一个功能实现,它可用here。