QuickBooks Web Connect

QuickBooks Web Connect

  

Has anyone successfully integrated with QuickBooks Web Connect? If so, what's the trick?  When web connect tries to pole my service, I'm getting:

QBWC1012: Authentication failed due to following error message.
Server did not recognize the value of HTTP Header SOAPAction: 
http://developer.intuit.com/authenticate.

My site is obviously NOT developer.intuit.com.  Any help would be appreciated.

Hi Stan

Can you check if the namespace in the wsdl matches the actual service? See if it's a similar scenario as reported here.

You can workaround this by adding the "SOAPAction" HTTP Header with the correct value. To add a HTTP Header to a SOAP request, see this post.

Let me know if this helps.

Thanks Joao,

I'm thinking you are correct that the namespace is not what is expected in the wsdl. But i'm sort of working blind in the QuickBooks Web Connect product. 

In this scenario I have to tell QBWC where my web service is, but I can't see what namespace it expects when making the call.  I currently tell QBWC that my service is: https://dev.p360app.com/PhoenixApi/PhoenixQuickBooks.asmx. And I can set the Web Services Namespace and have tried http://p360app.com/, http://dev.p360app.com/, http://dev.p360app.com/PhoenixAPI/ and http://p360app.com/PhoenixAPI/. None so far have worked.  


Based on the asmx file above, what would you expect the namespace to be?

Hi Stan

I didn't understand at first that you were exposing a service to be consumed by QuickBooks. 

Is there anyway for you to intercept the request going out of QuickBooks to check if there is a SOAPAction header with the value in the error message?

All I have access to is a log file. Here is what I'm seeing:


20170324.14:19:37 UTC: QBWebConnector.WebServiceManager.DoUpdateSelected() : updateWS() for application = 'Phoenix Field Ticketing' has STARTED
20170324.14:19:37 UTC: QBWebConnector.RegistryManager.getUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock = FALSE
20170324.14:19:37 UTC: QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to True
20170324.14:19:37 UTC: QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session locked *********************
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.instantiateWebService() : Initiated connection to the following application.
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.instantiateWebService() : AppName: Phoenix Field Ticketing
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.instantiateWebService() : AppUniqueName (if available): Phoenix Field Ticketing
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.instantiateWebService() : AppURL: https://dev.p360app.com/PhoenixApi/PhoenixQuickBooks.asmx
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.do_serverVersion() : *** Calling serverVersion().
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.do_serverVersion() : Actual error received from web service for serverVersion call: <Server did not recognize the value of HTTP Header SOAPAction: http://developer.intuit.com/serverVersion.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-serverVersion.
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.do_serverVersion() : This application does not contain support for serverVersion. Allowing update operation for backward compatibility.
20170324.14:19:37 UTC: QBWebConnector.SOAPWebService.do_clientVersion() : *** Calling clientVersion() with following parameter:<productVersion="2.2.0.71">
20170324.14:19:38 UTC: QBWebConnector.SOAPWebService.updateWS() : Actual error received from web service for clientVersion call: <Server did not recognize the value of HTTP Header SOAPAction: http://developer.intuit.com/clientVersion.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-clientVersion.
20170324.14:19:38 UTC: QBWebConnector.SOAPWebService.do_clientVersion() : This application does not contain support for clientVersion. Allowing update operation for backward compatibility.
20170324.14:19:38 UTC: QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'Phoenix Field Ticketing', username = 'QBWCElite_Production_Ser'
20170324.14:19:38 UTC: QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="QBWCElite_Production_Ser"><password=<MaskedForSecurity>
20170324.14:19:38 UTC: QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message.
Server did not recognize the value of HTTP Header SOAPAction: http://developer.intuit.com/authenticate.
More info:
StackTrace =    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at QBWebConnector.localhost.WCWebServiceDoc.authenticate(String strUserName, String strPassword)
   at QBWebConnector.localhost.WCWebService.authenticate(String strUserName, String strPassword)
   at QBWebConnector.SOAPWebService.authenticate(String UserName, String Password)
   at QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName)
Source = System.Web.Services
20170324.14:19:38 UTC: QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20170324.14:19:38 UTC: QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20170324.14:19:38 UTC: QBWebConnector.WebServiceManager.DoUpdateSelected() : Update completed with errors. See log (QWClog.txt) for details.


So I'm assuming the namespace it's expecting is http://developer.intuit.com - which of course is not where my service lives. But as you can also see, the AppURL is:

AppURL: https://dev.p360app.com/PhoenixApi/PhoenixQuickBooks.asmx

Hi Stan

If you import your WebService in SOAPUI and try to consume it does it work properly? Not sure if the problem lies in QuickBooks or on the platform

I haven't used SOAPUI, but I have tested with Boomerang and it does work as expected.  I'm looking now into possible configuration issues with the QB web connector.

So I just set the namespace in my service to http://developer.intuit.com/ and it worked.


Makes NO sense, but if that's what they want...

If QuickBooks is expecting the service definition to be like that, then that's how you should configure it :)