我按照说明操作并尝试使用consolibyte提供的示例代码,但无济于事。尝试多次更改ownerid / fileid,尝试重新安装web连接器,在另一台机器上尝试qb,尝试删除所有qb表。我复制了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 "AppLock" 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表:
+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+
| 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
答案 0 :(得分:0)
您是否确实在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
按钮?它从日志中看起来不像......