我是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

09-07 15:09