Consolibyte Web 连接器请求卡在队列中

Consolibyte webconnector request stuck at queue

我按照说明尝试使用 consolibyte 提供的示例代码,但无济于事。尝试多次更改 ownerid/fileid,尝试重新安装 Web 连接器,尝试在另一台机器上使用 qb,尝试删除所有 qb table。我从 example_web_connector_minimal.php 复制代码并插入我的用户名和密码,服务器详细信息。 php 在浏览器中检查得很好。 Web 连接器没有错误地通过,但 Quickbooks 端没有发布任何内容。我在与 AppLock 相关的 QWCLog.txt 中确实遇到了一些错误,但不确定这是否是导致问题的原因。

这是我的 QWC 文件:

<?xml version="1.0"?>
<QBWCXML>
    <AppName>Dashboard</AppName>
    <AppID>EFDB</AppID>
    <AppURL>[REMOVED]/qb-php-master/web_connector_test.php</AppURL>
    <AppDescription>An example QuickBooks Integration</AppDescription>
    <AppSupport>[REMOVED]</AppSupport>
    <UserName>quickbooks</UserName>
    <OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
    <FileID>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</FileID>
    <QBType>QBFS</QBType>
    <Notify>false</Notify>
    <Scheduler>
        <RunEveryNMinutes>10</RunEveryNMinutes>
    </Scheduler>
    <IsReadOnly>false</IsReadOnly>
</QBWCXML>

QWCLog:

20171005.15:15:50 UTC   : QWCReader.ParseQWC() : Contents of QWC file: -
<QBWCXML>
  <AppName>Dashboard</AppName>
  <AppID>EFDB</AppID>
  <AppURL>[removed]/qb-php-master/web_connector_test.php</AppURL>
  <AppDescription>An example QuickBooks Integration</AppDescription>
  <AppSupport>[removed]/dashboard</AppSupport>
  <UserName>quickbooks</UserName>
  <OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
  <FileID>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</FileID>
  <QBType>QBFS</QBType>
  <Notify>false</Notify>
  <Scheduler>
    <RunEveryNMinutes>10</RunEveryNMinutes>
  </Scheduler>
  <IsReadOnly>false</IsReadOnly>
</QBWCXML>
20171005.15:15:50 UTC   : QBWebConnector.WebServiceManager.ReadQWC(QWCReader QWC) : Parsing application configuration xml file to load its content to variables
20171005.15:15:52 UTC   : QBWebConnector.RegistryManager.createRegKey() : Error creating registry key for appName = <>
20171005.15:15:52 UTC   : QBWebConnector.RegistryManager.createRegKey() : Reason: Value cannot be null.
Parameter name: name
20171005.15:15:52 UTC   : QBWebConnector.SOAPWebService.SerializeToRegistry() : Error saving Dashboard to Registry: Object reference not set to an instance of an object.
20171005.15:15:52 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connecting to QuickBooks...
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connected., Session started
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application name = Dashboard
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Querying company file to find if owner/file id exists.
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Latest QBXML version supported = v13.0
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Querying QuickBooks for existance of owner/file id
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefQueryRq requestID="1"><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID></DataExtDefQueryRq></QBXMLMsgsRq></QBXML>

20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefQueryRs requestID="1" statusCode="1" statusSeverity="Info" statusMessage="A query request did not find a matching object in QuickBooks" />
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Status message: A query request did not find a matching object in QuickBooks
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : FileID did not exist. Creating new FileID in company file
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named FileID assigned to Company object for the ownerID = {57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>FileID</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered FileID to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>FileID</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : Data extension value has been created in QuickBooks for FileID
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Entered FileID value to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named AppLock assigned to Company object for the ownerID = {57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered the AppLock to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="3100" statusSeverity="Error" statusMessage="The name &quot;AppLock&quot; of the list element is already in use." />
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>UNLOCKED:EFDB1</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>UNLOCKED:EFDB1</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.initialize() : Company file has been initialized with AppLock = UNLOCKED:EFDB1 for ownerID = <{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}>
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application Dashboard has been added to QuickBooks.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.DisconnectFromQB() : Session ended and connection closed


Log file initialized at Thursday, October 5, 2017 - 3:18 PM UTC  
Timestamp format used: YYYYMMDD.HH:MM:SS UTC
QBWebConnector 2.0 has been initialized with its logging status to level = VERBOSE.
Please restart QBWebConnector for any change in log level to take effect. Use file menu to clear log.

20171005.15:18:34 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20171005.15:18:34 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20171005.15:18:34 UTC   :  : ~SingleInstanceHandler() - usingInstanceChannel = false. Returning without any Registry key delete or unmarshalling.
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : Password management - Started
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : QBWC1030: Password is not available for application named 'Dashboard'. Please set password for this application.
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : Password management - Ended

quickbooks_Log table:

Handler is starting up...: Array (     [qb_company_file] =>      [qbwc_min_version] =>      [qbwc_wait_before_next_update] =>      [qbwc_min_run_every_n_seconds] =>      [qbwc_version_warning_message] =>      [qbwc_version_error_message] =>      [qbwc_interactive_url] =>      [autoadd_missing_requestid] => 1     [check_valid_requestid] => 1     [server_version] => PHP QuickBooks SOAP Server v3.0 at /qb-php-master/web_connector_test.php     [authenticate] =>      [authenticate_dsn] =>      [map_application_identifiers] => 1     [allow_remote_addr] => Array         (         )      [deny_remote_addr] => Array         (         )      [convert_unix_newlines] => 1     [deny_concurrent_logins] => 1     [deny_concurrent_timeout] => 60     [deny_reallyfast_logins] => 1     [deny_reallyfast_timeout] => 600     [masking] => 1 ) 

quickbooks_queue table:

+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+
| quickbooks_queue_id | quickbooks_ticket_id | qb_username | qb_action   | ident | extra | qbxml | priority | qb_status | msg  | enqueue_datetime    | dequeue_datetime |
+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+
|                   4 |                 NULL | quickbooks  | CustomerAdd | 5     |       |       |        0 | q         | NULL | 2017-10-04 23:23:53 | NULL             |
|                   7 |                 NULL | quickbooks  | CustomerAdd | 50005 |       |       |        0 | q         | NULL | 2017-10-05 10:27:48 | NULL             |
+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+

QBWClog输入密码后添加:

20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : Initiated connection to the following application.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppName: Dashboard
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppUniqueName (if available): Dashboard
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppURL: [removed]/qb-php-master/web_connector_test.php
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : *** Calling serverVersion().
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : Actual error received from web service for serverVersion call: <Response is not well-formed XML.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-serverVersion.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : This application does not contain support for serverVersion. Allowing update operation for backward compatibility.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : *** Calling clientVersion() with following parameter:<productVersion="2.1.0.30">
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.updateWS() : Actual error received from web service for clientVersion call: <Response is not well-formed XML.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-clientVersion.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : This application does not contain support for clientVersion. Allowing update operation for backward compatibility.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'Dashboard', username = 'quickbooks'
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="quickbooks"><password=<MaskedForSecurity>
20171005.23:51:26 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message.
Response is not well-formed XML.
More info:
StackTrace =    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

您是否真的在 Web 连接器中输入了密码?

因为根据您的日志,您没有

20171005.15:25:53 UTC : UpdateThisScheduledApp() : QBWC1030: Password is not available for application named 'Dashboard'. Please set password for this application.

您是否真的在 Web 连接器中勾选应用程序并单击 Update Selected 按钮?从日志上看不像...