QuickBooks Web Connector (QBWC) Overview
This is a brief outline of my experience with “QuickBooks Web Connector” (QBWC) and the few things that trip up programmers in writing integrations for it. The good news is that just about anything you can do with the normal QB application, you can do programatically with QBWC. The bad news is that Intuit technical support for QBWC is virtually non-existent and QBWC has some undocumented bugs.
This post is intended for programmers; knowledge of SOAP and PHP5 is assumed.
If you’re serious about writing for QBWC, make sure you sign up for Intuit’s (free) Developer Network (IDN) and download the latest SDK (v7 as of now). Unfortunately, the SDK is packaged as an .EXE so it makes it a little tricky to get the information for non-Windoze users. Luckily, all the important documentation is online at IDN (although only accessible to IDN members and it’s hidden deep in their website.)
QBWC is a Windoze application that is installed on the same machine as QuickBooks. You can download QBWC from:
http://marketplace.quickbooks.com/webconnector/
This link if frequently broken, but it is the correct Intuit-published URL.
QBWC can be configured to run on-demand or automatically (e.g. “every two hours").
When QBWC runs, it initiates a SOAP client request to a SOAP server. QBWC is a GUI wrapper for a SOAP client! QBWC is not a SOAP server
We will be creating the SOAP server to reside alongside Magento. As a result, nothing can ever run in “real-time”. QBWC can poll Magento as frequently as you like, but it is always a poll model.
The SOAP server that we will create must also have a valid SSL certificate if QBWC attempts to connect to any other server than “localhost”. For development, one way around this is to use ssh port forwarding.
The SOAP server must implement the required methods specified in SDK “QBWC Callback Web Methods Reference”, e.g. authenticate(), sendRequest(), receiveResponse(), etc. The Intuit-supplied WSDL is badly out of date. PHP5 SOAP server does not like this!
For our SOAP server to add/delete/modify/search data in QB we will need to create a qbXML request (e.g. CustomerQuery, SalesReceiptAdd, VendorMod, etc.) and return it from the “sendRequest” method. We use the sendRequest for ALL types of transactions: querying QB, adding data to QB, modifying data in QB.
QBWC then processes the qbXML and returns the result as an argument to the “receiveResponse” method. If a query style qbXML request was sent, QB will call “receiveResponse” with the resulting hitlist as an argument . If an add style qbXML request was sent, QB will call “receiveResponse” with the success or failure response as an argument.
This sendRequest -> receiveResponse is repeated for as many transactions as we want.
There are other methods to handle closing the QBWC session and error reporting. I’ll write about those in a later post.
Cheers,
Romy


1Scott posted Wed, January 30, 2008
Romy, excellent insight.
So with the Web Connector, is it possible to do the automated sync as I suggested as phase 2, whereas the human element can be removed or minimized?
I am assuming that is the case, because of the name. It certainly sounds like the right to go.
2romy posted Wed, January 30, 2008
yes, it is possible to have QBWC run automatically—but the computer that has QBWC installed (and therefore QB itself) must be turned on (obviously) and have QB open to the proper company. that last part is a bug in QBWC v2.
3Scott posted Wed, January 30, 2008
Understandable, but that’s surely a far cry from using IIFs, like other ecommerce extensions required.
4walterbyrd posted Tue, February 5, 2008
If it is any help, you can find a Quickbooks PHP5 integration module here:
http://idnforums.intuit.com/messageview.aspx?catid=56&threadid=9164&enterthread=y
I am sorry if I already posted this. I still find this community to be difficult to navigate.