我正在尝试从我的网络应用程序向 Quickbooks 在线添加付款。这是我发送的 xml:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="6.0"?>
<QBXML>
<SignonMsgsRq>
<SignonTicketRq>
<ClientDateTime>2013-05-09T01:37:58</ClientDateTime>
<SessionTicket>V1-115-Q04ffswegvh9uzxaw8qrud:689712285</SessionTicket>
<Language>English</Language>
<AppID>688664435</AppID>
<AppVer>1</AppVer>
</SignonTicketRq>
</SignonMsgsRq>
<QBXMLMsgsRq onError="stopOnError">
<ReceivePaymentAddRq>
<ReceivePaymentAdd defMacro="MACROTYPE"> <!-- required -->
<CustomerRef> <!-- required -->
<ListID >5</ListID> <!-- optional -->
</CustomerRef>
<ARAccountRef>
<FullName>Accounts Receivable:Customer Receivables</FullName>
</ARAccountRef>
<AppliedToTxnAdd> <!-- optional, may repeat -->
<TxnID useMacro="MACROTYPE" >143</TxnID> <!-- required -->
</AppliedToTxnAdd>
<TxnDate >2013-05-09</TxnDate>
<RefNumber >123</RefNumber>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
我收到一条错误消息:
SAX parser encountered an error parsing request file.
Exception from other package:
org.xml.sax.SAXParseException: The content of element type "ReceivePaymentAdd" must match "(CustomerRef,ARAccountRef?,TxnDate?,RefNumber?,TotalAmount?,PaymentMethodRef?,Memo?,DepositToAccountRef?,CreditCardTxnInfo?,(IsAutoApply|AppliedToTxnAdd+)
我只需将付款应用于发票即可。付款将始终为发票的全额。
有什么问题吗?
谢谢兰迪
最佳答案
qbXML 中标签的顺序很重要。
因此,如果 Intuit OSR 引用显示正确的标签顺序是:
<CustomerRef>
<ListID>IDTYPE</ListID>
</CustomerRef>
<ARAccountRef>
<FullName>STRTYPE</FullName>
</ARAccountRef>
<TxnDate>DATETYPE</TxnDate>
<RefNumber>STRTYPE</RefNumber>
...
<AppliedToTxnAdd> ...
您可以按以下顺序发送标签:
<CustomerRef>
<ListID >5</ListID>
</CustomerRef>
<ARAccountRef>
<FullName>Accounts Receivable:Customer Receivables</FullName>
</ARAccountRef>
<AppliedToTxnAdd>
<TxnID useMacro="MACROTYPE" >143</TxnID>
</AppliedToTxnAdd>
<TxnDate >2013-05-09</TxnDate>
<RefNumber >123</RefNumber>
然后你就会收到错误。
(请注意,当规范将其定义为位于 AppliedToTxnAdd 标记之前时,TxnDate 和 RefNumber 位于 AppliedToTxnAdd 标记之后)
它想告诉你什么:
The content of element type "ReceivePaymentAdd" must match "(CustomerRef,ARAccountRef?,TxnDate?,RefNumber?,TotalAmount?,PaymentMethodRef?,Memo?,DepositToAccountRef?,CreditCardTxnInfo?,(IsAutoApply|AppliedToTxnAdd+)
它是否期望按该顺序标记,而您以与预期不同的顺序发送它们。
如果你修复标签的顺序,它就会起作用。
我们有一些example qbXML requests在我们的 QuickBooks integration wiki guide如果有帮助的话。
关于integration - QuickBooks在线接收付款添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16453062/