Здесь следует отметить несколько действительно важных вещей:
- Для устранения неполадок важно, чтобы вы посмотрели на фактический qb XML, который вы отправляете против ваш код . Как выглядит фактический qb XML, который вы отправляете в QuickBooks ? Вы можете найти это в таблице
quickbooks_log
SQL, а также в журнале Web Connector (если вы установили для него VERBOSE
logging). - Счета и платежи не имеют значений
ListID
Имейте в виду, что эти запросы будут другими (вместо них они имеют значения TxnID
). - Каждый раз, когда вы получаете сообщение об ошибке, важно, чтобы вы опубликовали фактическое сообщение об ошибке . QuickBooks создает буквально тысячи различных сообщений об ошибках, поэтому, не зная точно, какую ошибку вы получаете, вам действительно сложно помочь.
- Каждый раз, когда вы получаете ошибку, связанную с синтаксисом 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>';
(обратите внимание на .
вместо +
для объединения)