【问题标题】:QBWebConnector Error (QBWC1039) Getting an error after updating QuickbooksQBWebConnector 错误 (QBWC1039) 更新 Quickbooks 后出现错误
【发布时间】:2016-05-18 05:11:24
【问题描述】:

我设置了 WebConnect 并使用 quickbooks php-devkit 连接到它,没有任何问题。

https://github.com/consolibyte/quickbooks-php

就在第二天,我运行了一个待处理的快速手册更新,现在我无法再将我的应用程序添加到 webconnect。

.QWC 文件:

<?xml version="1.0"?>
<QBWCXML>
    <AppName>QuickBooks Integrator</AppName>
    <AppID>1.0</AppID>
    <AppURL>http://localhost/server.php</AppURL>
    <AppDescription>TEST STRING</AppDescription>
    <AppSupport>http://localhost/server.php</AppSupport>
    <UserName>quickbooks</UserName>
    <OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
    <FileID>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</FileID>
    <QBType>QBFS</QBType>
    <Scheduler>
        <RunEveryNMinutes>1</RunEveryNMinutes>
    </Scheduler>
    <IsReadOnly>false</IsReadOnly>
</QBWCXML>

完整的 QWCLog:

Log file initialized at Wednesday, May 18, 2016 - 2:26 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.

20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20160518.14:26:24 UTC   : QBWebConnector_Load() : 
QuickBooks Web Connector 2.1.0.30 has started.
Wednesday, May 18, 2016 at 10:26:24 AM
20160518.14:26:24 UTC   : QBWebConnector_Load() : QBWC Form Loaded
20160518.14:26:24 UTC   : QWCReader.ParseQWC() : Contents of QWC file: -
<QBWCXML>
  <AppName>QuickBooks Integrator</AppName>
  <AppID>1.0</AppID>
  <AppURL>http://localhost/server.php</AppURL>
  <AppDescription>TEST STRING</AppDescription>
  <AppSupport>http://localhost/server.php</AppSupport>
  <UserName>quickbooks</UserName>
  <OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
  <FileID>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</FileID>
  <QBType>QBFS</QBType>
  <Scheduler>
    <RunEveryNMinutes>1</RunEveryNMinutes>
  </Scheduler>
  <IsReadOnly>false</IsReadOnly>
</QBWCXML>
20160518.14:26:24 UTC   : QBWebConnector.WebServiceManager.ReadQWC(QWCReader QWC) : Parsing application configuration xml file to load its content to variables
20160518.14:26:26 UTC   : QBWebConnector.RegistryManager.createRegKey() : Error creating registry key for appName = <>
20160518.14:26:26 UTC   : QBWebConnector.RegistryManager.createRegKey() : Reason: Value cannot be null.
Parameter name: name
20160518.14:26:26 UTC   : QBWebConnector.SOAPWebService.SerializeToRegistry() : Error saving QuickBooks Integrator to Registry: Object reference not set to an instance of an object.
20160518.14:26:26 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connecting to QuickBooks...
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connected., Session started
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application name = QuickBooks Integrator
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Querying company file to find if owner/file id exists.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Latest QBXML version supported = v12.0
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Querying QuickBooks for existance of owner/file id
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefQueryRq requestID="1"><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID></DataExtDefQueryRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
<DataExtDefRet>
<OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefQueryRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Status message: Status OK
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named AppLock assigned to Company object for the ownerID = {90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : 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>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered the AppLock to company file successfully.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : Latest QBXML version supported = v12.0
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : Querying QuickBooks for existance of owner/file id
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><CompanyQueryRq requestID="1"><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID></CompanyQueryRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<CompanyQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<CompanyRet>
<IsSampleCompany>false</IsSampleCompany>
<CompanyName>Test Company 2</CompanyName>
<LegalCompanyName>Test Company 2</LegalCompanyName>
<Address>
<State>ON</State>
<Country>Canada</Country>
</Address>
<AddressBlock>
<Addr1>ON </Addr1>
</AddressBlock>
<LegalAddress>
<State>ON</State>
<Country>Canada</Country>
</LegalAddress>
<FirstMonthFiscalYear>January</FirstMonthFiscalYear>
<FirstMonthIncomeTaxYear>January</FirstMonthIncomeTaxYear>
<CompanyType>WholesaleDistributionandSales</CompanyType>
<TaxForm>FormT2</TaxForm>
<SubscribedServices>
<Service>
<Name>QuickBooks Online Banking</Name>
<Domain>banking.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing</Name>
<Domain>billing.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 1 Service</Name>
<Domain>qbob1.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 2 Service</Name>
<Domain>qbob2.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Payment Service</Name>
<Domain>qbobpay.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Bill Payment</Name>
<Domain>billpay.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Paper Mailing Service</Name>
<Domain>qbobpaper.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Payroll Service</Name>
<Domain>payroll.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Payroll Service</Name>
<Domain>payrollbsc.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Disk Payroll Service</Name>
<Domain>payrollbscdisk.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Deluxe Payroll Service</Name>
<Domain>payrolldlx.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Premier Payroll Service</Name>
<Domain>payrollprm.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal</Name>
<Domain>basic_plus_fed.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal and State</Name>
<Domain>basic_plus_fed_state.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Direct Deposit</Name>
<Domain>basic_plus_dd.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Merchant Account Service</Name>
<Domain>mas.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
</SubscribedServices>
<AccountantCopy>
<AccountantCopyExists>false</AccountantCopyExists>
</AccountantCopy>
</CompanyRet>
</CompanyQueryRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>FileID</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 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>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : Data extension value has been created in QuickBooks for FileID
20160518.14:26:27 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 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>


20160518.14:26:27 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>UNLOCKED: </DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : QBWC1039: There was a problem adding the application. Check QWCLog.txt for details.
<QuickBooks found an error when parsing the provided XML text stream.>
   at Interop.QBXMLRP2.RequestProcessor2Class.ProcessRequest(String ticket, String inputRequest)
   at QBWebConnector.QBSession.ProcessRequest(String inXML)
   at QBWebConnector.SessionManager.ProcessRequest(String sessid, String inXML)
   at QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML(String dataExtAddRqXML)
   at QBWebConnector.CompanyFileLock..ctor(String sessID, String ownerID, String qbType)
   at QBWebConnector.WebService.AddToQuickBooks()
20160518.14:26:42 UTC   : QBWebConnector.SOAPWebService.DisconnectFromQB() : Session ended and connection closed

我怀疑的部分是&lt;DataExtValue&gt;UNLOCKED: &lt;/DataExtValue&gt;的回复。

有人知道是什么原因造成的吗?

【问题讨论】:

  • 首先,确保在 QuickBooks 更新后重新启动。再次重启。如果您尚未重新启动,则在运行 QuickBooks 更新后立即连接失败是一个非常常见的问题。现在 -- 您是在尝试将 .QWC 文件添加到 Web 连接器,还是尝试运行 Web 连接器?
  • 我确实重启了几次,没有效果。我打开 Web 连接器,然后通过添加应用程序按钮将 .QWC 文件添加到其中。这会生成一条错误消息,指出它收到了格式错误的 XML 并检查日志。
  • 然后发布您的 .QWC 文件。另外 - 为什么在刚刚进行 QuickBooks 更新之后再次添加 .QWC 文件?进行 QuickBooks 更新不会使应用程序从 Web 连接器中消失……该应用程序是如何从其中删除的?
  • 也发布其余的日志。
  • 我发布了 .QWC 和完整的 QWCLog。我正在将 .QWC 文件重新添加到 Web 连接器,因为在连接成功后我从连接器中删除了服务器。我正在测试我的脚本,并假设我可以在需要时轻松地重新添加服务器。顺便说一句,这个错误似乎发生在它执行 中的代码之前,因为我在该文件中放入的内容、有效的服务器或 die() 语句没有区别。

标签: php quickbooks qbxml qbwc


【解决方案1】:

最终,我不得不重新格式化来解决这个问题(严重)。

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2019-09-30
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多