Почему cURL не отправляет мои данные в salesforce?

Я использую форму drupal, чтобы создать форму для связи с нами.

Я хочу отправить свои контактные данные нам в Salesforce.

Моя контактная форма имеет действие «https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8».

Я хочу проверить детали формы перед ее отправкой в ​​salesforce, поэтому я использую функцию hook_validate, которая проверяет форму.

Если я прямо упоминаю #action в hook_menu, то он напрямую отправляет данные в salesforce, но не проверяет их перед отправкой.

Итак, я пытаюсь использовать cURL для отправки данных в salesforce.

Вот моя форма:

function contact_us_form($form_state){

$form['orgid'] = array(
'#name' => 'orgid',
'#type' => 'hidden',
'#value' => 'xxxxxx'
);

$form['retURL'] = array(
'#name' => 'retURL',
'#type' => 'hidden',
'#value' => 'http://www.example.com'
);

$form['external'] = array(
'#name' => 'external',
'#type' => 'hidden',
'#value' => '1'
);

$form['name'] = array(
'#type' => 'textfield',
'#size' => 40,
'#id' => 'name',
'#title' => t('First and Last Name'),
'#prefix' => '<table><tr><td>',
'#suffix' => '</td></tr>',
'#required' => TRUE
);

$form['email'] = array(
'#type' => 'textfield',
'#size' => 40,
'#id' => 'email',
'#title' => t('Valid Email Address'),
'#prefix' => '<tr><td>',
'#suffix' => '</td></tr>',

);
$form['phone'] = array(
'#type' => 'textfield',
'#id' => 'phone',
'#title' => t('Phone Number'),
'#size' => 40,
'#prefix' => '<tr><td>',
'#suffix' => '</td></tr>'

);

$form['subject'] = array(
'#type' => 'textfield',
'#size' => 40,
'#title' => t('Subject'),
'#prefix' => '<tr><td>',
'#suffix' => '</td></tr>'
);

$form['desc'] = array(
'#type' => 'textarea',
'#size' => 40,
'#title' => t('Description1'),
'#prefix' => '<tr><td>',
'#suffix' => '</td></tr>'
);

$form['type'] = array(
'#name' => 'type',
'#type' => 'hidden',
'#value' => 'Web-to-case'
);

//  // Adds a simple submit button that refreshes the form and clears its contents -- this is the default behavior for forms.
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
'#prefix' => '<br><tr><td style="padding-left:150px;">',
'#suffix' => '</td></tr></table>'
);return $form;
}

Форма корректно воспроизводится. ниже моя функция проверки:

    function contact_us_form_validate($form, $form_state) {
//logic to check fields.
}

Вот мой код отправки, который не работает:
В идеале вызов cURL не должен возвращаться, потому что я упомянул retURL в форме, а URL-адрес возврата будет установлен salesforce. В настоящее время я не перенаправлен на retURL.NO, любая запись собирается в Salesforce.

function contact_us_form_submit($form, $form_state){

$temp = $form_state['values'];
$ch = curl_init();
foreach ($temp as $key => $value) {

//Set array element for each POST variable (ie. first_name=Arsham)
$kv[] = stripslashes($key)."=".stripslashes($value);

}
$query_string = join("&", $kv);//The original form action URL from Step 2 :)
$url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';

//Open cURL connection
$ch = curl_init();

//Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($kv));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);

//close cURL connection
curl_close($ch);

}

0

Решение

Я думаю, что вы хотите …

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //returns response as data.

Я знаю, это звучит глупо, но вы проверили, установлен ли у вас cURL и включен ли он в php, верно?

Также вы должны попробовать проверить результат $ false.

if($result=== false)
{
echo "Error Number:".curl_errno($ch)."<br>";
echo "Error String:".curl_error($ch);
}

Просто чтобы посмотреть, работает ли что-то, например, вы не можете опубликовать данные о salesforce из-за каких-то проблем с безопасностью, например, если вы не передаете свое имя пользователя и пароль salesforce.com или ключ API для своей учетной записи.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]