我是Quickbooks的新手,但我已经安装并在Quickbook Premier Desktop Edition上拥有一个帐户以及Quickbook连接器。我试图通过可用的Quickbook连接器将自定义应用程序中的发票,估计和客户信息同步到Quickbook中。事情是,我的应用程序返回的SOAP xml响应不被Quickbook连接器接受,因为它们的格式可能不同,所以我想为此使用nodejs创建一个服务网关,最好是其中层可以根据以下内容处理和转换SOAP:设置为Quickbook连接器接受的格式。有一个限制,我不能直接更改应用程序生成SOAP响应的格式。因此,任何人都可以建议从哪里开始,如果我完全在朝着正确的方向思考。提前致谢!
最佳答案
使用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。