我正在开发一个需要与Microsoft Dynamics CRM集成的PHP应用程序。我研究了在PHP和MSCRM服务器之间直接通信的方法,最后决定使用C#bridge设计它,即PHP应用程序连接到与MSCRM交互的C#服务。
现在我的问题是安全性,C#服务和MSCRM服务器之间的通信是安全的,但在PHP应用程序和C#服务之间,我对如何实现某种加密有点困惑。
基本上,我正在寻找建议,有没有人之前处理过这样的问题?你做了什么?是否有一种简单,安全的方法,或者这是一个复杂的过程?
答案 0 :(得分:0)
您可以让PHP直接安全地与CRM对话。额外的桥梁只是开销,实际上并没有带来多大好处。
这是一篇包含CRM Online的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>");