【问题标题】:i received an error while sales recipt mod request - 0x80040400: QuickBooks found an error when parsing the provided XML text stream我在销售收据 mod 请求时收到错误 - 0x80040400:QuickBooks 在解析提供的 XML 文本流时发现错误
【发布时间】:2019-11-19 11:21:47
【问题描述】:

我正在使用 conolibyte Keith Palmer 的 PHP SDK for QuickBooks Desktop 和 Web 连接器。 下面是销售收据 mod 请求的代码。这段代码一定有什么问题?我打印了xml。它正在正确打印。那么可能是什么原因导致该错误 - “QuickBooks 在解析提供的 XML 时发现错误”文本流请帮助我...... ………… .

 $xml = '<?xml version="1.0" encoding="utf-8"?>
            <?qbxml version="2.0"?>
            <QBXML>
                <QBXMLMsgsRq onError="stopOnError">
                    <SalesReceiptModRq requestID = "'.$requestID.'">             
          <SalesReceiptMod>
            <TxnID>'.$row_invoice['quickbooks_txnID'].'</TxnID>                             
            <EditSequence>'.$row_invoice['edit_sequence'].'</EditSequence>                
            <CustomerRef>                                      
              <ListID>'.$row_customer['quickbooks_listid'].'</ListID>                         
            </CustomerRef>
            <TxnDate>'.$row_invoice['invoice_date'].'</TxnDate>                        
            <RefNumber>601</RefNumber>                     
            <BillAddress>                                       
            <Addr1>'.$row_customer['address_1'].'</Addr1>
            </BillAddress>';
             while($row_invoice_details = mysqli_fetch_array($sql_sale_invoice_details))
        {
        $row_item = mysqli_fetch_array(mysqli_query($con,"SELECT quickbooks_listid FROM item WHERE item_id =".$row_invoice_details['item_id']));

            $xml .= '
            <SalesReceiptLineMod>
              <TxnLineID>'.$row_invoice_details['quickbooks_txnLineId'].'</TxnLineID>                   
              <ItemRef>                                         
                <ListID>'.$row_item['quickbooks_listid'].'</ListID>                        
              </ItemRef>
              <Desc>'.$row_invoice_details['description'].'</Desc>                             
              <Quantity>'.$row_invoice_details['quantity'].'</Quantity>                   
              <Rate>'.$row_invoice_details['price'].'</Rate>';
                                /////////check if tax is applied or not////////////////
                                if($row_invoice['sales_tax_percent']!=0)
                                {
                               $xml .= ' <SalesTaxCodeRef>
                                    <FullName>tax</FullName>
                                </SalesTaxCodeRef>';
                                }
                                else
                                {
                               $xml .= '<SalesTaxCodeRef>
                                    <FullName>non</FullName>
                                </SalesTaxCodeRef>';
                                }
                                ///////////////////////////////////////
            $xml.='</SalesReceiptLineMod>';
            }
          $xml .= '</SalesReceiptMod>
        </SalesReceiptModRq>
                </QBXMLMsgsRq>
            </QBXML>';

        return $xml;

下面是打印出来的xml

<?xml version="1.0" encoding="utf-8"?>
        <?qbxml version="2.0"?>
        <QBXML>
            <QBXMLMsgsRq onError="stopOnError">
                <SalesReceiptModRq requestID = "1">             
      <SalesReceiptMod>
        <TxnID>279-1574097843</TxnID>                             
        <EditSequence>1574097843</EditSequence>                
        <CustomerRef>                                      
          <ListID>80000030-1573831750</ListID>                         
        </CustomerRef>
        <TxnDate>2019-11-18</TxnDate>                        
        <RefNumber>601</RefNumber>                     
        <BillAddress>                                       
        <Addr1>kothrud1234564789</Addr1>
        </BillAddress>
        <SalesReceiptLineMod>
          <TxnLineID>27B-1574097843</TxnLineID>                   
          <ItemRef>                                         
            <ListID>8000004A-1574094120</ListID>                        
          </ItemRef>
          <Desc>100 meter pipe</Desc>                             
          <Quantity>1</Quantity>                   
          <Rate>300</Rate> <SalesTaxCodeRef>
                                <FullName>tax</FullName>
                            </SalesTaxCodeRef></SalesReceiptLineMod>
        <SalesReceiptLineMod>
          <TxnLineID>27C-1574097843</TxnLineID>                   
          <ItemRef>                                         
            <ListID>8000004B-1574094123</ListID>                        
          </ItemRef>
          <Desc>200 meters pipe</Desc>                             
          <Quantity>1</Quantity>                   
          <Rate>400</Rate> <SalesTaxCodeRef>
                                <FullName>tax</FullName>
                            </SalesTaxCodeRef></SalesReceiptLineMod>
        <SalesReceiptLineMod>
          <TxnLineID>27D-1574097843</TxnLineID>                   
          <ItemRef>                                         
            <ListID>8000004C-1574094242</ListID>                        
          </ItemRef>
          <Desc>test desc</Desc>                             
          <Quantity>1</Quantity>                   
          <Rate>200</Rate> <SalesTaxCodeRef>
                                <FullName>tax</FullName>
                            </SalesTaxCodeRef></SalesReceiptLineMod></SalesReceiptMod>
    </SalesReceiptModRq>
            </QBXMLMsgsRq>
        </QBXML>

【问题讨论】:

  • 您需要告诉我们您的问题究竟是什么。
  • @delboy1978uk 我正在将我的软件与 quickbook 桌面集成。我已经使用 qbxml 将销售收据添加到 qb 桌面。但在发送销售收据修改请求时出现此错误
  • @delboy1978uk 错误 - 0x80040400:QuickBooks 在解析提供的 XML 文本流时发现错误
  • @GAURAVDESHPANDE 如果您搜索该错误消息,您会发现很多很多解释如何解决该特定错误消息的答案。使用 QuickBooks SDK 中包含的 XML Validator 工具,它会准确地告诉您问题所在。

标签: php quickbooks intuit qbxml


【解决方案1】:

您的问题是由 XML 不接受的字符引起的。

一开始我找的是&amp;amp;之类的符号,需要HTML编码成&amp;amp;

您的破折号似乎引起了您的问题。

PHP 快速手册似乎具有“强制转换”功能,用于处理超出可接受范围的字符。

这是来自 repo 的示例。希望这可以帮助!作为第一个测试,尝试从生成的 XML 中删除非 ASCII 字符(试试破折号!-),看看它是否成功处理。

https://github.com/consolibyte/quickbooks-php/blob/master/docs/qbxml/example_qbxml_cast.php

【讨论】:

  • 修改销售收据xml请求格式是否有错误?
  • 不知道,尝试删除字符串中的连字符,就像我说的那样,可能是不受支持的字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
相关资源
最近更新 更多