3

最近まで、Consolibyte PHP Web Connector を使用して、販売注文を問題なくプッシュできていました。今、それはエラーを投げています

0x80040400: QuickBooks は、提供された XML テキスト ストリームの解析中にエラーを検出しました。

XML のすべてのオプション要素を削除しましたが、それでもエラーがスローされます。エラーを生成できる最も単純な XML は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="13.0"?>
<QBXML>
  <QBXMLMsgsRq onError="continueOnError">
    <SalesOrderAddRq>
      <SalesOrderAdd>
        <CustomerRef>
          <ListID>80002DBC-1342467727</ListID>
        </CustomerRef>
      </SalesOrderAdd>
    </SalesOrderAddRq>
  </QBXMLMsgsRq>
</QBXML>

これを、OSR が私に期待するべきだと言っているものと比較し、QB SDK にある XML バリデーターを実行しましたが、すべてが整形式であると言っています。CustomerQueryその特定の ListID に対しても実行したところ、Quickbooks で有効な顧客が返されました。ここで何が間違っているのでしょうか?

編集: OSR 以外のすべての要素CustomerRefはオプションであると言っているにもかかわらず、最新の SDK (以前に使用していたと思っていたもの) からバリデーターを再実行したところ、XML はそれらすべてを期待していると言われました。バリデーターが有効であると言う完全な XML を次に示しますが、それでもエラーがスローされます。

<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="13.0"?>
<QBXML>
  <QBXMLMsgsRq onError="continueOnError">
    <SalesOrderAddRq>
      <SalesOrderAdd>
        <CustomerRef>
          <ListID>80002DBC-1342467727</ListID>
        </CustomerRef>
        <TxnDate>2014-12-12</TxnDate>
        <RefNumber>14942</RefNumber>
        <BillAddress>
          <Addr1>redacted</Addr1>
          <Addr2>redacted</Addr2>
          <City>redacted</City>
          <State>IL</State>
          <PostalCode>12345</PostalCode>
        </BillAddress>
        <ShipAddress>
          <Addr1>redacted</Addr1>
          <Addr2>redacted</Addr2>
          <City>redacted</City>
          <State>IL</State>
          <PostalCode>12345</PostalCode>
        </ShipAddress>
        <DueDate>2015-02-20</DueDate>
        <Memo>redacted</Memo>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>8000418C-1393430847</ListID>
          </ItemRef>
          <Quantity>61</Quantity>
          <Rate>334.00</Rate>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003E9F-1382701326</ListID>
          </ItemRef>
          <Quantity>61</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>8000490D-1417183681</ListID>
          </ItemRef>
          <Quantity>50</Quantity>
          <Rate>349.00</Rate>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003E9F-1382701326</ListID>
          </ItemRef>
          <Quantity>50</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80003D0C-1377271839</ListID>
          </ItemRef>
          <Quantity>111</Quantity>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <FullName>Subtotal</FullName>
          </ItemRef>
        </SalesOrderLineAdd>
        <SalesOrderLineAdd>
          <ItemRef>
            <ListID>80004710-1409243586</ListID>
          </ItemRef>
        </SalesOrderLineAdd>
      </SalesOrderAdd>
    </SalesOrderAddRq>
  </QBXMLMsgsRq>
</QBXML>
4

1 に答える 1

4

問題を発見しました。残念ながら、問題があった場所である例から機密情報を削除する必要があったため、誰も助けることができませんでした。

問題は、Memo 要素に Unicode 文字 (–) が含まれていたことです。これにより、qbValidator ツールを実行すると XML が通過するにもかかわらず、XML が無効になりました。文字を削除すると、販売注文が正しく追加されました。

于 2014-12-31T18:06:14.680 に答える