如何为QuickBooks Web Connector创建.qwc文件?

Gol*_*lda 10 quickbooks qbxml qbwc

我正在将QuickBooks(桌面版)与ASP.NET应用程序集成.为此,我使用的是QuickBooks Web Connector.如何为自定义Web服务创建.qwc文件?

Kei*_*Jr. 20

Web连接器实际上只是QuickBooks和您自己的应用程序之间的代理或中继.

作为概述 - 基本上,您构建一个SOAP服务器/ Web服务,它说出一组特定的方法.然后Web服务器安装在运行QuickBooks的计算机上,并轮询您的Web服务,询问"嘿,我有什么需要做的吗?"您的Web服务可以回复qbXML请求(这里是qbXML的示例)告诉Web连接器"添加此客户:..."或"发送与我匹配的发票:......"等等.然后,Web连接器将这些请求转发给QuickBooks,QuickBooks处理它们,并将响应转发回您的Web服务.然后,您的Web服务可能以某种方式处理响应,然后将下一个请求发送到Web连接器.

这里有一个更大的Web连接器概述,或者,如果您下载QuickBooks SDK,它有一个100多页的PDF,详细介绍了这一点.

您可能还想在安装QuickBooks SDK后查看此示例:

  • C:\ Program Files(x86)\ Intuit\IDN\QBSDK12.0\samples\qbdt\c-sharp\qbXML\WCWebService

这是Web连接器SOAP实现的完整工作示例.

在它最基本的形式,它看起来像这样:

    [WebMethod]
    /// <summary>
    /// WebMethod - authenticate()
    /// To verify username and password for the web connector that is trying to connect
    /// Signature: public string[] authenticate(string strUserName, string strPassword)
    /// 
    /// IN: 
    /// string strUserName 
    /// string strPassword
    ///
    /// OUT: 
    /// string[] authReturn
    /// Possible values: 
    /// string[0] = ticket
    /// string[1]
    /// - empty string = use current company file
    /// - "none" = no further request/no further action required
    /// - "nvu" = not valid user
    /// - any other string value = use this company file
    /// </summary>
    public string[] authenticate(string strUserName, string strPassword)
    {
        string[] authReturn = new string[2];

        // Generate a random session ticket 
        authReturn[0]= System.Guid.NewGuid().ToString();

        // For simplicity of sample, a hardcoded username/password is used.
        string pwd="password";

        if (strUserName.Trim().Equals("username") && strPassword.Trim().Equals(pwd))
        {
            // An empty string for authReturn[1] means asking QBWebConnector 
            // to connect to the company file that is currently openned in QB
            authReturn[1]="";
        }
        else
        {
            authReturn[1]="nvu";
        }

        return authReturn;
    }

    [ WebMethod(Description="This web method facilitates web service to send request XML to QuickBooks via QBWebConnector",EnableSession=true) ]
    /// <summary>
    /// WebMethod - sendRequestXML()
    /// Signature: public string sendRequestXML(string ticket, string strHCPResponse, string strCompanyFileName, 
    /// string Country, int qbXMLMajorVers, int qbXMLMinorVers)
    /// 
    /// IN: 
    /// int qbXMLMajorVers
    /// int qbXMLMinorVers
    /// string ticket
    /// string strHCPResponse 
    /// string strCompanyFileName 
    /// string Country
    /// int qbXMLMajorVers
    /// int qbXMLMinorVers
    ///
    /// OUT:
    /// string request
    /// Possible values: 
    /// - “any_string” = Request XML for QBWebConnector to process
    /// - "" = No more request XML 
    /// </summary>
    public string sendRequestXML(string ticket, string strHCPResponse, string strCompanyFileName, 
        string qbXMLCountry, int qbXMLMajorVers, int qbXMLMinorVers)
    {
        // QuickBooks has asked for your next request

        ... return a qbXML request here ... 
    }

    [ WebMethod(Description="This web method facilitates web service to receive response XML from QuickBooks via QBWebConnector",EnableSession=true) ]
    /// <summary>
    /// WebMethod - receiveResponseXML()
    /// Signature: public int receiveResponseXML(string ticket, string response, string hresult, string message)
    /// 
    /// IN: 
    /// string ticket
    /// string response
    /// string hresult
    /// string message
    ///
    /// OUT: 
    /// int retVal
    /// Greater than zero  = There are more request to send
    /// 100 = Done. no more request to send
    /// Less than zero  = Custom Error codes
    /// </summary>
    public int receiveResponseXML(string ticket, string response, string hresult, string message)
    {
        // QuickBooks has sent you a qbXML response to your request 

        ... do something with 'response' here ... 
    }
Run Code Online (Sandbox Code Playgroud)

该示例还包括示例.QWC文件.这里有一些.QWC文件文档,这是一个基本的例子:

<?xml version="1.0"?>
<QBWCXML>
    <AppName>QuickBooks Integrator</AppName>
    <AppID></AppID>
    <AppURL>https://secure.domain.com/quickbooks/server.php</AppURL>
    <AppDescription></AppDescription>
    <AppSupport>http://www.domain.com/quickbooks/support.php</AppSupport>
    <UserName>username</UserName>
    <OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
    <FileID>{57F3B9B6-86F1-4FCC-B1FF-967DE1813D20}</FileID>
    <QBType>QBFS</QBType>
    <Scheduler>
        <RunEveryNMinutes>2</RunEveryNMinutes>
    </Scheduler>
    <IsReadOnly>false</IsReadOnly>
</QBWCXML>
Run Code Online (Sandbox Code Playgroud)

  • 因此,您将从sendRequestXML方法返回InvoiceQueryRq,并且您将在receiveResponseXML方法中返回发票列表.以下是qbXML的一些示例:http://www.consolibyte.com/docs/index.php/Example_qbXML_Requests,您可以在QuickBooks OSR中找到更多qbXML参考:https://developer-static.intuit.com/qbSDK-current/通用/ newOSR/index.html的 (2认同)