我试图让WordPress网站上的联系人表单(联系人表7)在我的客户关系管理程序(solve360)中创建新的联系人。为了方便起见,我还激活了一个插件(Forms:第三方集成),在其中我定义了提交url和字段映射。它的一部分起作用了,但我忽略了一些简单的东西.
按下“发送”按钮时,数据将发送到电子邮件地址(成功)和solve360 (尚未成功)。实际上,我收到一条消息,即在solve360中创建了一个新的联系人,但是所有字段都是空的。因此,我猜问题是表单字段没有正确地传输到solve360字段。但是,我正在使用来自solve360的这个模板:
// REQUIRED Edit with the email address you login to Solve360 with
define('USER', '****************');
// REQUIRED Edit with token, Solve360 menu > My Account > API Reference > API Token
define('TOKEN', '*****************');
// Get request data
$requestData = array();
parse_str($_SERVER['QUERY_STRING'], $requestData);
// Configure service gateway object
require 'Solve360Service.php';
$solve360Service = new Solve360Service(USER, TOKEN);
//
// Preparing the contact data
//
$contactFields = array('firstname','lastname','businessemail','businessphonedirect','name','homeaddress','cus tom10641628','custom11746174','custom13346238');
$contactData = array();
// adding not empty fields
foreach ($contactFields as $solve360FieldName => $requestFieldName) {
if ($requestData[$requestFieldName]) {
$contactData[$solve360FieldName] = $requestData[$requestFieldName];
}
}
//
// Saving the contact
//
// If there was business email provided:
// check if the contact already exists by searching for a matching email address.
// if a match is found update the existing contact, otherwise create a new one.
//
if ($contactData['businessemail']) {
$contacts = $solve360Service->searchContacts(array(
'filtermode' => 'byemail',
'filtervalue' => $contactData['businessemail'],
));
}
if (isset($contacts) && (integer)$contacts->count > 0) {
$contactId = (integer)current($contacts->children())->id;
$contactName = (string)current($contacts->children())->name;
$contact = $solve360Service->editContact($contactId, $contactData);
} else {
$contact = $solve360Service->addContact($contactData);
$contactName = (string)$contact->item->name;
$contactId = (integer)$contact->item->id;
}
if (isset($contact->errors)) {
// Email the error
mail(
USER,
'Error while adding contact to Solve360',
'Error: ' . $contact->errors->asXml()
);
die ('System error');
} else {
// Email the result
mail(
USER,
'Contact posted to Solve360',
'Contact "' . $contactName . '" https://secure.solve360.com/contact/' . $contactId . ' was posted to Solve360'
);
}
在他们的例子中,他们使用method="get“而不是method="post”的联系人表单,但是在contact 7的用户界面中,我相信这个方法被固定为"post“。这可能是问题所在吗?
还是有不同的问题?请注意,此时创建了一个空的联系人。我可以提供字段映射细节和表单第三方集成确实允许钩子,如果这有帮助的话。
任何帮助都是非常感谢的!谢谢。
发布于 2014-05-13 15:54:11
我发现第三方插件的操作方法(POST)与Solve360脚本的预期操作方法(GET)不匹配。因此,我必须从脚本中删除如下:
// Get request data
$requestData = array();
parse_str($_SERVER['QUERY_STRING'], $requestData);
并将下面的代码从
// adding not empty fields
foreach ($contactFields as $solve360FieldName => $requestFieldName) {
if ($requestData[$requestFieldName]) {
$contactData[$solve360FieldName] = $requestData[$requestFieldName];
}
}
至
// adding not empty fields
foreach ($contactFields as $solve360FieldName => $requestFieldName) {
if ($_POST[$requestFieldName]) {
$contactData[$solve360FieldName] = $_POST[$requestFieldName];
}
}
希望这将有助于将联系人7连接到他们的Solve360数据库。
https://stackoverflow.com/questions/22999880
复制相似问题