quickbooks - 账单添加请求的 QBXML
问题描述
我目前需要一些帮助来实现账单从我们的系统流向 QB 的自动化。我已经完成了所有必要的更改,将账单相关信息从我们的系统传递到 QB 并希望将其保存在 QB 上的 Bill 下。下面是我要求的示例 qbxml。但是我收到了来自 QB 的错误消息。如果 xml 请求需要任何更改,请指导我。
来自 QB 的错误消息:
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : Request xml received.
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Processing request #2
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : REQUEST: received from pplication: size (bytes) = 711
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending request to uickBooks.
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending error message back to application:
HRESULT = 0x80040400
**Message: QuickBooks found an error when parsing the provided XML text stream.**
20200325.16:57:30 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : XML dump follows: -
失败的请求:
<?xml version="1.0" encoding="ASCII"?><?qbxml versi......**
QBXML 请求:
<?xml version="1.0" encoding="ASCII"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<BillAddRq requestID="9240">
<BillAdd>
<VendorRef>
<FullName>ALERNER</FullName>
</VendorRef>
<TxnDate>2020-03-25</TxnDate>
<DueDate>2020-03-24</DueDate>
<RefNumber>100</RefNumber>
<TermsRef>
<FullName>Net 30 Days</FullName>
</TermsRef>
<Memo>via access</Memo>
<Address>
<Adr1>1060 N Kings Hway Suite 220</Adr1>
<City>Cherry Hill</City>
<State>NJ</State>
<PostalCode>08034</PostalCode>
<Country></Country>
</Address>
<ItemLineAdd>
<ItemRef>
<ListID>430001 - 1197741385</ListID>
</ItemRef>
<Desc>1 cubed mice</Desc>
<Quantity>10</Quantity>
<Cost>5</Cost>
<Amount>6</Amount>
</ItemLineAdd>
</BillAdd>
</BillAddRq>
</QBXMLMsgsRq>
</QBXML>
解决方案
每当你看到这个:
QuickBooks found an error when parsing the provided XML text stream.
这意味着您的 XML 无效,或者与XSD
Intuit 定义的用于验证所需字段/数据类型/等的不匹配。
遇到这种情况时,您应该做的第一件事是使用QuickBooks SDK中包含的XML Validator
工具。不要在线使用,使用 QuickBooks SDK 中包含的那个,因为它不仅验证 XML 结构本身,而且验证数据类型、字段长度、元素顺序等。XSD
在这种情况下,您的问题是Address
根本不是有效元素(您可能正在寻找VendorAddress
)。
你也可以参考 Intuit 的文档:
- OSR:https ://developer-static.intuit.com/qbsdk-current/common/newosr/index.html
- 文档:https ://developer.intuit.com/app/developer/qbdesktop/docs/api-reference/billadd
编辑:由于某种原因,OSR 链接已更新使用以下链接 https://static.developer.intuit.com/qbSDK-current/common/newosr/index.html
推荐阅读
- html - 一行中的图像预览 - 居中和成比例
- c++ - 我可以/应该使用范围库来模拟集合函数吗?
- java - 将数据从java发布到mysql
- c# - 为什么访问我的类字段返回 null?
- macos - MacOS App 上的 SwiftUI - 奇怪的焦点行为
- python - Ansible:使用 items2dict 将列表转换为字典
- java - java.lang.IllegalAccessError:超类访问检查失败:类 org.apache.poi.openxml4j.util.ZipSecureFile
- javascript - Puppeteer 获取 querySelectorAll 的 innerText
- javascript - 在 YouTube 视频页面视图上创建多级节点并附加到给定节点
- python - NotFoundError:无法在 TensorFlow 中为大型数据集上的自定义损失函数找到有效的节点设备