Я работаю над приложением PHP, которое необходимо интегрировать с Microsoft Dynamics CRM. Я изучил способы прямого взаимодействия между PHP и сервером MSCRM и в итоге решил разработать его с использованием моста C #, то есть приложение PHP подключается к службе C #, которая взаимодействует с MSCRM.
Теперь моя проблема — безопасность, связь между службой C # и сервером MSCRM безопасна, но между приложением PHP и службой C # я немного запутался в том, как реализовать какое-то шифрование.
В основном, я ищу рекомендации, кто-нибудь имел дело с такой проблемой раньше? Что ты сделал? Есть ли простой, безопасный способ сделать это, или это сложный процесс?
Вы можете заставить PHP общаться с CRM напрямую и безопасно. Дополнительный мост — это просто накладные расходы, которые на самом деле не дают большой выгоды.
Вот сообщение в блоге с классом PHP-помощника для CRM Online:
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>");
Других решений пока нет …