PHP Quickbooks SDK - AddInvoice XML 问题

PHP Quickbooks SDK - AddInvoice XML problems

我正在尝试使用默认模板添加发票。但是当我将 Other1 和 Other2 添加到 XML 时 returns:

已处理错误:0x80040400:QuickBooks 在解析提供的 XML 文本流时发现错误。 (处理程序返回:)

这是我发送的 XML 生成的错误:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
     <QBXMLMsgsRq onError="stopOnError">
           <InvoiceAddRq>
                   <InvoiceAdd>
                         <CustomerRef>
                              <ListID>{customer_id}</ListID>
                         </CustomerRef>
                         <TxnDate>'.date('Y-m-d').'</TxnDate>
                         <RefNumber>'.$ID.'</RefNumber>           
                         <Memo>Generated via Sys</Memo>
                         <InvoiceLineAdd>
                              <ItemRef>
                                   <FullName>Purchase</FullName>
                              </ItemRef>
                              <Desc>Rental of 3 Days</Desc>
                              <Quantity>3</Quantity>
                              <Rate>200</Rate>
                              <Other1 >STRTYPE</Other1>
                              <Other2 >STRTYPE</Other2>
                         </InvoiceLineAdd>

                   </InvoiceAdd>
           </InvoiceAddRq>
     </QBXMLMsgsRq>
</QBXML>

无论我在 Other1 和 Other2 中放入什么,它都不起作用。但是第二次我删除它们然后它创建发票没问题。 (我使用 Mac 进行开发并使用团队查看器进行测试,所以您是否知道 Mac 的 XML 验证器?)

如果您查看 QuickBooks OSR:

您会看到 Other1Other2 字段在 qbXML 版本 6.0 之前不受支持:

并且您使用的版本:

<?qbxml version="2.0"?>

更改您正在使用的版本。

另外,去下载一个免费的 VM 工具并在 Mac 上的 VM 中安装 Windows。然后安装 QuickBooks SDK。然后您将可以访问 XML Validator 工具,它可以准确地告诉您在这种情况下出了什么问题。