Question

I had a working PHP integration to zohoCRM to insert leads into the system from a web form. Suddenly these forms don't work anymore, and there's no useful debug info from the Zoho error message. Here's the code:

$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">smith@example.com</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. 

It seems like no matter what I try (and I've tried a whole lot for most of the day) I can't get anything other than this useless 4600 error. Has anyone run into this?

Was it helpful?

Solution

We do our posts to Zoho exactly the same way and they seem to be working fine (I just ran it to make sure it wasn't an issue across the board.) The only thing I can think of is to make sure that the values in your XML are properly escaped with slashes and HTML-entities so the XML is valid. That could be the issue, since it seems like it's saying something along the lines of "unable to read your XML".

OTHER TIPS

I had the same problem before, this is how your code work for me...

So running you code give me 4600 error code, you code it's ok, so I went closely to get more specific info about the error (just adding curl_error function, after the request is made and before you close it), something like this:

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

It's gonna give you the real reason, in this case SSL connect error is the problem in my case with your code, specifically the cipher, CURLOPT_SSL_CIPHER_LIST for cURL, so just add the option for specify the cipher, in this case rsa_rc4_128_sha for Zoho:

// ...
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);

Run the code again and everything should be working... :)

Ps: if you want you can use this wrapper, for interact with zoho crm, I use it...

Zoho CRM library for PHP 5.3+

Hope that help :)

Be sure the content of the values having special characters are setup in CDATA brackets. This is often the case with comments or values coming from Emails.

Like this:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top