php
  • api
  • curl
  • zoho
  • 2013-04-24 26 views 2 likes 
    2

    我有一個PHP集成到zohoCRM從web表單插入線索到系統。突然之間,這些表單不再工作,並且Zoho錯誤信息中沒有有用的調試信息。下面的代碼:Zoho通過PHP的CRM主導插入

    $xml = '<?xml version="1.0" encoding="UTF-8"?>'; // same error with or without this line 
    $xml .= '<Leads>'; 
    $xml .= '<row no="1">'; 
    if(isset($fname)) $xml .= '<FL val="First Name">'.$fname.'</FL>'; 
    if(isset($lname)) $xml .= '<FL val="Last Name">'.$lname.'</FL>'; 
    if(isset($post['sender_email'])) $xml .= '<FL val="Email">'.$post['sender_email'].'</FL>'; 
    $xml .= '<FL val="Lead Source">Web Research</FL>'; 
    if(isset($phone)) $xml .= '<FL val="Phone">'.$phone.'</FL>'; 
    $xml .= '<FL val="Description">'.$comments.'</FL>'; 
    $xml .= '</row>'; 
    $xml .= '</Leads>'; 
    
    /* 
    var_dump($xml) returns: 
    <?xml version="1.0" encoding="UTF-8"?><Leads><row no="1"><FL val="First Name">Joe</FL><FL val="Last Name">Smith</FL><FL val="Email">[email protected]</FL><FL val="Lead Source">Web Research</FL><FL val="Phone">123-456-5678</FL><FL val="Description">My comments</FL></row></Leads> 
    */ 
    
    $url ="https://crm.zoho.com/crm/private/xml/Leads/insertRecords"; 
    $query="authtoken=validtoken&scope=crmapi&newFormat=1&xmlData=".$xml; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $query);// Set the request as a POST FIELD for curl. 
    
    //Execute cUrl session 
    $response = curl_exec($ch); 
    curl_close($ch); 
    var_dump($response); 
    
    // returns 4600 Unable to process your request. Please verify if the name and value is appropriate for the "xmlData" parameter. 
    

    好像不管我怎麼努力(我已經嘗試了一大堆的最多的一天),我不能得到比這沒用4600錯誤的任何其他。有沒有人遇到過這個?

    +0

    不要他們有一個文檔,也許他們的輸入格式改變什麼 – 2013-04-24 19:56:00

    +0

    @Pekka웃 - ?是的,他們確實有文檔,但據我所知,系統是完全相同的,它甚至默認使用API​​的「版本1」,它應該是向後兼容的。在他們的論壇中有很多像我的問題,沒有真正的解決方案,所以我想我會嘗試SO。 – user101289 2013-04-24 19:59:06

    +1

    你能否更新你的代碼,以便我們看到答案如何幫助解決這個問題? – 2014-03-19 08:29:01

    回答

    3

    我們做我們的職位,以百會完全相同的方式,他們似乎是工作的罰款(我只是跑它,以確保它不是一刀切的問題。)我能想到的唯一的事情就是讓確保您的XML中的值正確地使用斜槓和HTML實體轉義,以便XML有效。這可能是問題所在,因爲它看起來像是在說「無法讀取你的XML」。

    +0

    @ jraede--感謝您的想法。也許他們在驗證或其他方面更嚴格。我會給它一個鏡頭。 – user101289 2013-04-24 20:08:38

    +1

    @ jraede--你是對的。這是一個網址被添加到評論部分,沒有正確轉義。感謝您讓我走上正軌。 – user101289 2013-04-24 20:26:34

    +0

    很高興我能幫到你 – jraede 2013-04-24 20:41:08

    1

    我以前有同樣的問題,這是怎麼對我的代碼工作...

    所以運行你的代碼給我4600錯誤代碼,你的代碼也沒關係,讓我去密切合作,以獲得更具體的信息有關錯誤的(只是增加curl_error功能,提出要求後關閉它之前),這樣的事情:

    // ... 
    //Execute cUrl session 
    $response = curl_exec($ch); 
    print_r(curL_error($ch)); // Right here 
    curl_close($ch); 
    var_dump($response); 
    

    它要給你的真正原因,在這種情況下SSL connect error是在我的情況的問題用你的代碼,特別是cURL的密碼CURLOPT_SSL_CIPHER_LIST,所以只需加上t他選項指定的密碼,在這種情況下rsa_rc4_128_sha對於百會:

    // ... 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $query);// Set the request ... 
    curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'rsa_rc4_128_sha'); // NEW 
    
    //Execute cUrl session 
    $response = curl_exec($ch); 
    

    再次運行該代碼,一切都應該工作... :)

    PS:如果你願意,你可以用這個包裝,對於使用Zoho CRM的互動,我用它...

    Zoho CRM library for PHP 5.3+

    希望能夠幫助:)

    0

    一定值的內容在CDATA括號中設置了特殊字符。 這通常是來自電子郵件的評論或價值的情況。 。

    像這樣:

    $ XML ='< FL val="Description"> < ![CDATA[" .$comments. "]]></FL>「;

    相關問題