您可以让PHP直接和安全地与CRM交谈。额外的桥梁只是开销,实际上并没有提供太多好处。
这里有一个博客帖子与CRM在线PHP的辅助类: http://www.hashtagcrm.com/?p=17
与助手刚开始,然后您需要任何特定的功能扩展。该助手甚至还包括一个样本函数,演示如何添加自己的特定功能:在你的主程序
//Returns the Parent Account Name of the specified Contact
public function sampleFunction($contactid){
$getParentCustomer = '
<Retrieve xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<entityName>contact</entityName>
<id>'.$contactid.'</id>
<columnSet xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
<a:AllColumns>false</a:AllColumns>
<a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>parentcustomeridname</b:string>
</a:Columns>
</columnSet>
</Retrieve>';
$getParentCustomerResult = $this->sendQuery($getParentCustomer, 'Retrieve');
$responsedom = new DomDocument();
$responsedom->loadXML($getParentCustomerResult);
$KeyValuePairs = $responsedom->getElementsbyTagName("KeyValuePairOfstringanyType");
foreach($KeyValuePairs as $results) {
if ($results->childNodes->item(0)->nodeValue == "parentcustomeridname") {
return $results->childNodes->item(1)->childNodes->item(0)->nodeValue;
}
else {
return 'No Result';
}
}
}
然后,你可以运行这样的事情:
require_once('dynamicsclient.php');
$dynamicsClient = new dynamicsClient(0);
//prints the Parent Account name of the specified Contact ID
echo $dynamicsClient->sampleFunction("<CONTACTID>");
添加SSL/TLS到主机运行web服务,并确保您的php使用用户名/密码/密钥系统对应用程序进行身份验证,您会没事的。 – Dave 2014-11-21 13:41:06
感谢您的回复,戴夫。我当然希望我能够将SSL放在主机上,但问题是我可能无法始终控制服务器,但我仍然需要确保它的安全;所以如果你必须不使用SSL,那你会怎么做? – 2014-11-21 18:16:51
如果SSL不是选项,则必须使用消息级别加密来确保通信免受嗅探攻击。查看WCF消息安全性。 http://msdn.microsoft.com/en-us/library/ff648863.aspx – MvdD 2014-11-21 23:33:10