Мне нужно подключиться к MS Dynamics CRM через PHP
Я посмотрел в Интернете, но я не могу найти, каким образом я могу это сделать.
есть идеи?
Вероятно, единственный чистый способ сделать это будет Dynmiacs Web API, как описано здесь: Документы
Мой код для подключения:
$credentials = include("config.php");
$response = \Httpful\Request::put($credentials['serverUrl']) // Build a PUT request...
->sendsJson() // tell it we're sending (Content-Type) JSON...
->authenticateWith($credentials['username'], $credentials['password']) // authenticate with basic auth...
->send();
и ответ:
object(Httpful\Response)#8 (13) {
["body"]=>
string(49) "HTTP Error 401 - Unauthorized: Access is denied
"["raw_body"]=>
string(49) "HTTP Error 401 - Unauthorized: Access is denied
"["headers"]=>
object(Httpful\Response\Headers)#9 (1) {
["headers":"Httpful\Response\Headers":private]=>
array(10) {
["cache-control"]=>
string(7) "private"["content-type"]=>
string(9) "text/html"["server"]=>
string(17) "Microsoft-IIS/8.5"["req_id"]=>
string(36) "2b132633-9ca3-47c0-9283-0d3fd11541fb"["set-cookie"]=>
string(108) "crmf5cookie=!gxLT5kRVUbFsxLk2sMAcTcX9KVcVpQ96ETEp7q4cYuU/v4XeREWZlgu9zG0zcAg/dQ1iVb0zeNKMUP0=;secure; path=/"["www-authenticate"]=>
string(223) "Bearer error=invalid_token, error_description=Error during token validation!, authorization_uri=https://login.windows.net/60786485-b067-48a0-8533-08bf34ceeef1/oauth2/authorize, resource_id=https://ga-pdes.crm4.dynamics.com/"["x-powered-by"]=>
string(7) "ASP.NET"["date"]=>
string(29) "Tue, 09 Jan 2018 18:02:24 GMT"["content-length"]=>
string(2) "49"["strict-transport-security"]=>
string(35) "max-age=31536000; includeSubDomains"}
}
Использование AlexaCRM / php-crm-toolkit (https://github.com/AlexaCRM/php-crm-toolkit) Мне удалось подключиться и получить данные.
Мне просто нужно иметь возможность фильтровать данные (искать объекты, отфильтрованные по полю).
Это мой код подключения и поиск данных на объекте.
require_once '../vendor/autoload.php';
use AlexaCRM\CRMToolkit\Client as OrganizationService;
use AlexaCRM\CRMToolkit\Settings;
use AlexaCRM\CRMToolkit\Entity\MetadataCollection;
$options = include('config.php');;
$dynamicsClientSettings = new Settings( $options );
$dynamicsClient = new OrganizationService( $dynamicsClientSettings );
$metadata = MetadataCollection::instance($dynamicsClient);
// execute an action
echo("Execute an action - WhoAmI<br />");
$whoAmIResponse = $dynamicsClient->executeAction( 'WhoAmI' );
echo 'Organization ID: ' . $whoAmIResponse->OrganizationId;
echo("<br /><br />");echo("<b>Lists</b><br />");
$lists = $dynamicsClient->retrieveMultipleEntities("list", $allPages = false, $pagingCookie = null, $limitCount = 1000, $pageNumber = 1, $simpleMode = false);
Мой файл config.php:
$credentials = [
// Dynamics CRM URL
'serverUrl' => 'https://xxxxxxx.crm4.dynamics.com/api/data/v8.2/',
// System user name
'username' => '[email protected]',
// System user password
'password' => 'xxxxxxxxxxxxx',
// CRM type (OnlineFederation for CRM Online, Federation for IFD)
'authMode' => 'OnlineFederation',
];
return $credentials;
Да, полный образец показан в Джейсоне Латтимере CRMSoapAuthPHP репозиторий о том, как проходить проверку подлинности и работать с Dynamics CRM Online и локально с использованием PHP.