我正在使用PHP API for QuickBook WebConnector在Sugar CRM和QuickBook Desktop之间同步数据。 这可以在https://github.com/consolibyte/quickbooks-php上找到。
我的SOAP请求代码更新客户如下。
function _quickbooks_customer_update_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale) {
$arr = mysql_fetch_assoc(mysql_query("SELECT * FROM my_customer_table WHERE id = " . (int) $ID));
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<CustomerModRq>
<CustomerMod>
<ListID>80000001-1409745864</ListID>
<EditSequence>1409745864</EditSequence>
<Name>' . $arr['name'] . '</Name>
<CompanyName>' . $arr['name'] . '</CompanyName>
<FirstName>' . $arr['fname'] . '</FirstName>
<LastName>' . $arr['lname'] . '</LastName>
</CustomerMod>
</CustomerModRq>
</QBXML>';
return $xml;
}
但是当我点击Webconnector进行更新时,它会出错。 0x80040400:QuickBooks在解析提供的XML文本流时发现错误。
我想念XML中的一些内容,但我无法找到它。
请识别我并帮助我编写准确的XML以在WebConnector中更新客户
答案 0 :(得分:1)
您应该参考QuickBooks OSR以获取qbXML参考。您还可以使用QuickBooks SDK附带的XML Validator工具来验证这些请求。
此请求的特殊问题是您缺少XML节点。正确的语法是:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<!-- **Here is the XML tag you are missing** -->
<QBXMLMsgsRq onError="stopOnError">
<CustomerModRq>
<CustomerMod>
<ListID>80000001-1409745864</ListID>
<EditSequence>1409745864</EditSequence>
<Name>' . $arr['name'] . '</Name>
<CompanyName>' . $arr['name'] . '</CompanyName>
<FirstName>' . $arr['fname'] . '</FirstName>
<LastName>' . $arr['lname'] . '</LastName>
</CustomerMod>
</CustomerModRq>
</QBXMLMsgsRq>
</QBXML>
答案 1 :(得分:0)
此外,您应该考虑使用较新的QBXML版本,以便获得最新的参考资料。