gpt4 book ai didi

php - Quickbooks Web 连接器突然抛出 0x80040400 错误

转载 作者:可可西里 更新时间:2023-11-01 01:00:46 24 4
gpt4 key购买 nike

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

0x80040400: QuickBooks found an error when parsing the provided XML text stream.

我已经删除了 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>

最佳答案

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

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

关于php - Quickbooks Web 连接器突然抛出 0x80040400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27709601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com