я получил сообщение об ошибке при запросе модификации квитанции о продаже - 0x80040400: QuickBooks обнаружил ошибку при анализе предоставленного текстового потока XML

Я использую PHP SDK от consolibyte Кита Палмера для QuickBooks Desktop с веб-коннектором. ниже приведен код запроса мода чека о продаже. Что должно быть не так в этом коде? я распечатал 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>

person GAURAV DESHPANDE    schedule 19.11.2019    source источник
comment
Вы должны рассказать нам, в чем на самом деле заключается ваша проблема.   -  person delboy1978uk    schedule 19.11.2019
comment
@ delboy1978uk я интегрирую свое программное обеспечение с рабочим столом quickbook. я добавил товарный чек в рабочий стол qb, используя qbxml. но получил эту ошибку при отправке запроса на изменение чека о продаже   -  person GAURAV DESHPANDE    schedule 19.11.2019
comment
Ошибка @ delboy1978uk — 0x80040400: QuickBooks обнаружил ошибку при анализе предоставленного текстового потока XML.   -  person GAURAV DESHPANDE    schedule 19.11.2019
comment
@GAURAVDESHPANDE, если вы будете искать это сообщение об ошибке, вы найдете много-много ответов, которые объясняют, как устранить неполадки с этим конкретным сообщением об ошибке. Используйте инструмент XML Validator, включенный в SDK QuickBooks, и он точно скажет вам, что не так.   -  person Keith Palmer Jr.    schedule 20.11.2019


Ответы (1)


Ваша проблема будет вызвана символами, которые XML не принимает.

Сначала я искал такие символы, как &, которые должны быть HTML-кодированы в &amp; и т. д.

Похоже, ваши тире вызывают у вас проблемы.

PHP quickbooks, похоже, имеет функцию «приведения» для обработки символов, выходящих за пределы допустимого диапазона.

Вот пример из репозитория. Надеюсь это поможет! В качестве первого теста попробуйте удалить символы, отличные от ASCII (попробуйте тире! -) из сгенерированного XML, и посмотрите, успешно ли он обрабатывается.

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

person delboy1978uk    schedule 19.11.2019
comment
Есть ли ошибка в изменении формата запроса xml квитанции о продаже? - person GAURAV DESHPANDE; 19.11.2019
comment
понятия не имею, попробуйте удалить дефисы в своих строках, опять же, как я уже сказал, возможно, неподдерживаемые символы - person delboy1978uk; 20.11.2019