【问题标题】:Quickbooks Web Connector suddenly throws 0x80040400 errorQuickbooks Web 连接器突然抛出 0x80040400 错误
【发布时间】:2014-12-30 17:12:17
【问题描述】:

直到最近,我还能够很好地使用 Consolibyte PHP Web 连接器推送销售订单。现在,它正在抛出错误

0x80040400:QuickBooks 在解析提供的 XML 文本流时发现错误。

我已经删除了 XML 的所有可选元素,但它仍然抛出错误。我可以产生错误的最简单的 XML 位是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="13.0"?>
<QBXML>
  <QBXMLMsgsRq onError="continueOnError">
    <SalesOrderAddRq>
      <SalesOrderAdd>
        <CustomerRef>
          <ListID>80002DBC-1342467727</ListID>
        </CustomerRef>
      </SalesOrderAdd>
    </SalesOrderAddRq>
  </QBXMLMsgsRq>
</QBXML>

我已将此与 OSR 告诉我的预期进行了比较,并通过 QB SDK 中的 XML 验证器运行它,但一切都表明它格式正确。我还在那个特定的 ListID 上运行了CustomerQuery,它在 Quickbooks 中返回了一个有效的客户。任何想法这里可能有什么问题?

编辑:尽管 OSR 说除 CustomerRef 之外的所有元素都是可选的,但我从最新的 SDK(我认为我以前使用过)重新运行了验证器,它说 XML 需要所有这些东西。以下是验证器认为有效但仍抛出错误的完整 XML:

<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="13.0"?>
<QBXML>
  <QBXMLMsgsRq onError="continueOnError">
    <SalesOrderAddRq>
      <SalesOrderAdd>
        <CustomerRef>
          <ListID>80002DBC-1342467727</ListID>
        </CustomerRef>
        <TxnDate>2014-12-12</TxnDate>
        <RefNumber>14942</RefNumber>
        <BillAddress>
          <Addr1>redacted</Addr1>
          <Addr2>redacted</Addr2>
          <City>redacted</City>
          <State>IL</State>
          <PostalCode>12345</PostalCode>
        </BillAddress>
        <ShipAddress>
          <Addr1>redacted</Addr1>
          <Addr2>redacted</Addr2>
          <City>redacted</City>
          <State>IL</State>
          <PostalCode>12345</PostalCode>
        </ShipAddress>
        <DueDate>2015-02-20</DueDate>
        <Memo>redacted</Memo>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>8000418C-1393430847</ListID>
          </ItemRef>
          <Quantity>61</Quantity>
          <Rate>334.00</Rate>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003E9F-1382701326</ListID>
          </ItemRef>
          <Quantity>61</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>8000490D-1417183681</ListID>
          </ItemRef>
          <Quantity>50</Quantity>
          <Rate>349.00</Rate>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003E9F-1382701326</ListID>
          </ItemRef>
          <Quantity>50</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003D0C-1377271839</ListID>
          </ItemRef>
          <Quantity>111</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <FullName>Subtotal</FullName>
          </ItemRef>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80004710-1409243586</ListID>
          </ItemRef>
        </SalesOrderLineAdd>
      </SalesOrderAdd>
    </SalesOrderAddRq>
  </QBXMLMsgsRq>
</QBXML>

【问题讨论】:

  • 我知道最近有一个快速手册更新...根据我的经验,更新通常会破坏事情...您能提供来自连接器的任何类型的日志记录吗?

标签: php quickbooks intuit-partner-platform qbxml qbwc


【解决方案1】:

我发现了问题。不幸的是,没有人能提供帮助,因为我必须从示例中删除敏感信息,这就是问题所在。

问题是在备忘录元素中,有一个 unicode 字符 (–)。这导致 XML 无效,尽管它在通过 qbValidator 工具运行时通过。删除该字符可以正确添加销售订单。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多