Каков правильный синтаксис для запроса при использовании Consolibyte PHP SDK для QuickBooks? - PullRequest
0 голосов
/ 19 февраля 2020

Я просмотрел все и не могу найти это. Что такое qb XML, чтобы запросить клиента (или счет, или платеж, или что-то еще), используя ListID? В настоящее время я отправляю что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <CustomerQueryRq requestID="' + $requestID + '">
            <ListID>' + $qbDesktopID + '</ListID>
        </CustomerQueryRq>
    </QBXMLMsgsRq>
</QBXML>

Где этот qbDesktopID выглядит как 80000000-1234567890, и я получаю несколько общую ошибку c, которая говорит, что мой XML не отформатирован должным образом .

1 Ответ

0 голосов
/ 20 февраля 2020

Здесь следует отметить несколько действительно важных вещей:

  1. Для устранения неполадок важно, чтобы вы посмотрели на фактический qb XML, который вы отправляете против ваш код . Как выглядит фактический qb XML, который вы отправляете в QuickBooks ? Вы можете найти это в таблице quickbooks_log SQL, а также в журнале Web Connector (если вы установили для него VERBOSE logging).
  2. Счета и платежи не имеют значений ListID Имейте в виду, что эти запросы будут другими (вместо них они имеют значения TxnID).
  3. Каждый раз, когда вы получаете сообщение об ошибке, важно, чтобы вы опубликовали фактическое сообщение об ошибке . QuickBooks создает буквально тысячи различных сообщений об ошибках, поэтому, не зная точно, какую ошибку вы получаете, вам действительно сложно помочь.
  4. Каждый раз, когда вы получаете ошибку, связанную с синтаксисом qb XML, вашей первой остановкой должен быть инструмент XML Validator , включенный в QuickBooks SDK . Он буквально скажет вам, какая именно строка и символ неверны.

С учетом всего сказанного ... Я подозреваю, что вы на самом деле не отправляете то, что, как вы думаете, вы отправляете.

Оператор конкатенации PHP для строк не равен +. Это .: https://www.php.net/manual/en/language.operators.string.php

Если предположить, что вы разместили выше, это фрагмент PHP, то это будет пустой строкой или, возможно, целым числом (если $requestID является целое число) и недопустимая строка XML.

Вы уверены, что не имели в виду:

$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <CustomerQueryRq requestID="' . $requestID . '">
            <ListID>' . $qbDesktopID . '</ListID>
        </CustomerQueryRq>
    </QBXMLMsgsRq>
</QBXML>';

(обратите внимание на . вместо + для объединения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...