php web-services soap wsdl dynamics-crm-2011

php-access dynamics crm 2011 con servicios web



web-services soap (1)

Tengo que acceder a clientes potenciales (crear un nuevo cliente potencial y obtener la lista) en crm 2011 a través de los servicios web. Ya hice una aplicación en c # / asp.net (funciona) pero ahora tengo que hacerlo en PHP y estoy atascado.

Intento: https://code.google.com/p/php-dynamics-crm-2011/ pero no funciona porque solo es compatible con la autenticación de la Federación y el mío es el directorio activo.

Intento conectarme con nusoap pero es muy confuso.

Genero clases de servicio de descubrimiento y servicio de organización con wsdl2php: http://www.urdalen.no/wsdl2php/ pero no sé qué hacer con las clases.

Alguien tiene ejemplos de cómo usar estas clases?


MSCRM 2013 y probablemente 2011 están utilizando NTLM para autenticar los websevices.

Para consultas de datos, puede usar url codificado FetchXML

http://msdn.microsoft.com/en-us/library/gg328117.aspx

Puede obtener el XML correcto de CRM mediante la exportación de XML en la búsqueda avanzada y ejecute la consulta con el método RetrieveMultiple, por ejemplo.

Estoy agregando un ejemplo con un sobre SOAP y una consulta CURL POST, autenticado con NTLM.

<?php $soap_envelope = <<<END <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <query i:type="a:FetchExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts"> <a:Query>&lt;fetch version=''1.0'' output-format=''xml-platform'' mapping=''logical'' distinct=''false''&gt; &lt;entity name=''contact''&gt; &lt;attribute name=''fullname'' /&gt; &lt;attribute name=''parentcustomerid'' /&gt; &lt;attribute name=''telephone1'' /&gt; &lt;attribute name=''emailaddress1'' /&gt; &lt;attribute name=''contactid'' /&gt; &lt;order attribute=''fullname'' descending=''false'' /&gt; &lt;filter type=''and''&gt; &lt;condition attribute=''ownerid'' operator=''eq-userid'' /&gt; &lt;condition attribute=''statecode'' operator=''eq'' value=''0'' /&gt; &lt;/filter&gt; &lt;/entity&gt; &lt;/fetch&gt;</a:Query> </query> </RetrieveMultiple> </s:Body> </s:Envelope> END; $soap_action = ''http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple''; $req_location = ''http://crm.server.local/YourOrganization/XRMServices/2011/Organization.svc/web''; $headers = array( ''Method: POST'', ''Connection: Keep-Alive'', ''User-Agent: PHP-SOAP-CURL'', ''Content-Type: text/xml; charset=utf-8'', ''SOAPAction: "''.$soap_action.''"'' ); $user = ''YOURDOMAIN/YOURUSERNAME''; $password = ''**********''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $req_location); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, true ); curl_setopt($ch, CURLOPT_POSTFIELDS, $soap_envelope); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); curl_setopt($ch, CURLOPT_USERPWD, $user.'':''.$password); $response = curl_exec($ch); if(curl_exec($ch) === false) { echo ''Curl error: '' . curl_error($ch); } else { var_dump($response); }