首页 > 解决方案 > Consolibyte QuickBooks PHP 库 - XML 验证器不工作

问题描述

我有以下 XML 请求来添加新的 Quickbooks 账单:

<?xml version="1.0" encoding="utf-8"?>
    <?qbposxml version="3.0"?>
    <QBPOSXML>
        <QBPOSXMLMsgsRq onError="stopOnError">
            <BillAddRq>
                <BillAdd defMacro="MACROTYPE"> <!-- required -->
                    <VendorRef> <!-- required -->
                        <ListID>80012448-1569211475</ListID> <!-- optional -->
                    </VendorRef>
                    <TxnDate>2019-06-28</TxnDate> <!-- optional -->
                    <DueDate>2019-06-29</DueDate> <!-- optional -->
                    <RefNumber>Ref12345</RefNumber> <!-- optional -->
                    <Memo>Memo12345</Memo> <!-- optional -->
                    <ExternalGUID>ExternalGUID12345</ExternalGUID> <!-- optional -->
                    <ExpenseLineAdd defMacro="MACROTYPE"> <!-- optional, may repeat -->
                        <AccountRef> <!-- optional -->
                            <FullName>Casual Labor:Moving</FullName> <!-- optional -->
                        </AccountRef>
                        <Amount>99.99</Amount> <!-- optional -->
                        <Memo>VillageMemo12345</Memo> <!-- optional -->
                    </ExpenseLineAdd>
                </BillAdd>
            </BillAddRq>
        </QBPOSXMLMsgsRq>
    </QBPOSXML>

Web 连接器返回上述0x80040400: QuickBooks found an error when parsing the provided XML text stream.错误。我在 Intuit 的支持论坛上关注了这篇文章,尝试使用内置的 XML 验证器。

当我通过验证器运行我的 XML 请求时,我收到以下错误:

在此处输入图像描述

如何解决上述验证器错误?此外,除了使用内置验证器之外,还有其他方法可以验证 QB XML 吗?

标签: quickbooksqbxmlqbfc

解决方案


您在验证器中做出的平台选择需要与您在 XML 中定位的平台选择相匹配。

您选择验证:

  • QuickBooks(美国版)

但是您的 qbXML 用于:

  • <?qbposxml version="3.0"?> <QBPOSXML>(QuickBooks 销售点)

由于您针对不是您的实际 qbXML 目标的东西进行验证,因此验证当然会失败。它对您选择的内容无效。

如果您正在为销售点进行开发,请针对销售点进行验证。

如果您正在为美国版的 QuickBooks 开发,那么为美国版的 QuickBooks 输入一些 qbXML 并进行验证。


推荐阅读