2014-09-05 39 views
0

我正在使用PHP API for QuickBook WebConnector來同步Sugar CRM和QuickBook Desktop之間的數據。 這可在https://github.com/consolibyte/quickbooks-php上獲得。通過Webconnector修改快速預訂中的客戶

我的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:分析提供的XML文本流時QuickBooks發現錯誤。

我錯過了那個XML中的一些東西,但我找不到它。

請認我,幫我寫一個準確的XML在WebConnector

回答

1

您應該參考QuickBooks的OSR的qbXML參考更新客戶。您還可以使用QuickBooks SDK附帶的XML驗證工具來驗證這些請求。

此請求的特定問題是您缺少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> 
+0

非常感謝。我包含驗證節點,現在它可以成功運行。 – Hashim 2014-09-05 14:32:47

0

此外,你應該看看使用更新的QBXML版本,以便獲得最新的參考。