QBWC1013: Error connecting to QuickBooks. 0x800404

2019-06-13 14:46发布

问题:

I am having trouble getting the QuickBooks Web Connector. When it runs the logs says

...

20130411.15:29:07 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : *** Calling serverVersion().
20130411.15:29:07 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : Received from serverVersion() following parameter:<serverVersionRet="testing version">
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : *** Calling clientVersion() with following parameter:<productVersion="2.1.0.27">
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : Received from clientVersion() following parameter:<clientVersionRet="">
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : This application agrees with the current version of QBWebConnector. Allowing update operation.
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'QBServices Raw Soap', username = 'test'
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="test"><password=<MaskedForSecurity>
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.updateWS() : Received from authenticate() following parameters:<authRet[0]=""><authRet[1]="0"><authRet[2]=""><authRet[3]="">
20130411.15:29:08 UTC   : QBWebConnector.RegistryManager.setCurrentWebServiceName() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\CurrentWebServiceName has been set to QBServices Raw Soap
20130411.15:29:08 UTC   : QBWebConnector.RegistryManager.setCurrentWebServiceSessionTicket() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\CurrentWebServiceSessionTicket has been set to 
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.CheckCFNResponse() : User authenticated.
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : Done.
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.OpenConnection() : Connecting to QuickBooks...
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.handleAllOtherError() : QBWC1013: Error connecting to QuickBooks. Returning error message to application.
Could not start QuickBooks.
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_connectionError() : *** Calling connectionError() with following parameters:<wcTicket=""><hresult="0x80040408"><message="Could not start QuickBooks.">
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.do_connectionError() : Received from connectionError() following parameters:<tryAgain="done">
20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.OpenConnection() : Error connecting to QuickBooks. Application sent back DONE. Job ending.
20130411.15:29:08 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20130411.15:29:08 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20130411.15:29:08 UTC   : QBWebConnector.WebServiceManager.DoUpdateSelected() : Update completed with errors. See log (QWClog.txt) for details.

QuickBooks is open when I get this message. The application in QuickBooks is allowed to login automatically. I read that if a file is not given from the services then the open file will be used but it isn't working. I also returned the path from my soap services but it still didn't work I reboot and tried again but that didn't work and I made a new company to test will and it didn't work.

Any thoughts would be helpful.

回答1:

This is your problem - you're returning the wrong thing:

20130411.15:29:08 UTC   : QBWebConnector.SOAPWebService.updateWS() : 
Received from authenticate() following parameters:
<authRet[0]="">
<authRet[1]="0">
<authRet[2]="">
<authRet[3]="">

The correct set of parameters to return follows this format:

  • authRet[0] = a valid session ticket (if the login was successful)
  • authRet[1] = the path to the QuickBooks company file (e.g. "C:\path\to\file.QBW") or the string "none" (if there's nothing to do) or the string "nvu" (if the login was invalid)
  • authRet[2] = this is optional, you may send an empty string or an integer indicating the number of minutes to wait before doing the next update
  • authRet[3] = this is optional, you may send an empty string or an integer indicating the minimum number of seconds the web connector should allow between update sessions

This is documented in more detail on our QuickBooks integration wiki.

What you've done to fix it:

I started returning the FileID in my qwc file as the first element in the array returned by authenticate and it seems to work now.

Is terribly insecure - that means that anyone who discovers that FileID (which is definitely brute-force-able or discover-able via social engineering tactics) will be able to connect to your SOAP web service and extract potentially sensitive accounting information (credit card numbers, customers, etc.)

You should fix your service to return a valid, short-lived, session token instead.