2

Webフォームからリードをシステムに挿入するために、zohoCRMへのPHP統合が機能していました。突然、これらのフォームが機能しなくなり、Zoho エラー メッセージから有用なデバッグ情報が得られなくなりました。コードは次のとおりです。

$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. 

4600私が何をしようとも (そして、私は 1 日の大半をかなり試しました)、この役に立たないエラー以外には何も得られないようです。誰かがこれに遭遇しましたか?

4

3 に答える 3

3

Zoho への投稿もまったく同じ方法で行っており、問題なく機能しているようです (全体的に問題がないことを確認するために実行しました)。 XML 内の はスラッシュと HTML エンティティで適切にエスケープされるため、XML は有効です。「XMLを読み取れません」という行に沿って何かを言っているように見えるので、それが問題になる可能性があります。

于 2013-04-24T20:03:52.453 に答える
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、私の場合はあなたのコード、特にCURLOPT_SSL_CIPHER_LISTcURLの暗号に問題があるので、暗号を指定するオプションを追加するだけです。この場合rsa_rc4_128_shaは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);

コードを再度実行すると、すべてが機能するはずです... :)

Ps: 必要に応じて、このラッパーを使用して、zoho crm とやり取りすることができます。私はそれを使用しています...

PHP 5.3+ 用の Zoho CRM

ライブラリ

于 2014-03-21T16:17:48.097 に答える