2

Web アプリからオンラインで 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+)

請求書に支払いを適用するだけです。支払いは常に請求書の全額になります。

何が間違っているのですか?

ありがとうランディ

4

1 に答える 1

2

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 タグのに来ると定義されている場合、AppliedToTxnAdd タグのに TxnDate と RefNumber があることに注意してください)

ここであなたに伝えようとしていること:

要素タイプ「ReceivePaymentAdd」の内容は、「(CustomerRef,ARAccountRef?,TxnDate?,RefNumber?,TotalAmount?,PaymentMethodRef?,Memo?,DepositToAccountRef?,CreditCardTxnInfo?,(IsAutoApply|AppliedToTxnAdd+)」と一致する必要があります

その順序でタグを期待しているのに、予想とは異なる順序でタグを送信したということですか。

タグの順序を修正すると、機能します。

役立つ場合は、QuickBooks 統合 wiki ガイドにqbXML 要求の例がいくつかあります。

于 2013-05-09T03:49:05.540 に答える