2013-06-07 8 views
17

मुझे वेब सेवाओं के माध्यम से सीआरएम 2011 में लीड (नई लीड बनाएं और सूची प्राप्त करें) तक पहुंच प्राप्त करनी है। मैंने पहले ही सी #/एएसपीनेट में एक ऐप बनाया है (यह काम करता है) लेकिन अब मुझे इसे php में करना है और मैं फंस गया हूं।PHP - वेब सेवाओं के साथ एक्सेस डायनेमिक्स सीआरएम 2011

मैं कोशिश करता हूं: https://code.google.com/p/php-dynamics-crm-2011/ लेकिन यह काम नहीं करता है क्योंकि यह केवल फेडरेशन प्रमाणीकरण का समर्थन करता है और इसकी सक्रिय निर्देशिका है।

मैं nusoap से कनेक्ट करने का प्रयास करता हूं लेकिन यह बहुत भ्रमित है।

मैं खोज सेवा के वर्ग और wsdl2php के साथ संगठन सेवा उत्पन्न करता हूं: http://www.urdalen.no/wsdl2php/ लेकिन मुझे नहीं पता कि कक्षाओं के साथ क्या करना है।

किसी के पास इन कक्षाओं का उपयोग करने के उदाहरण हैं?

+0

जांच भी इस सवाल: http://stackoverflow.com/questions/16890036/dynamically-pull-data-from-dynamics-crm-online –

+0

मुझे समझ नहीं आता, वहाँ पहले से ही वेब द्वारा उपलब्ध कराई गई सेवाओं रहे हैं सीआरएम, मुझे यह जानने की जरूरत है कि उन्हें php के साथ कैसे उपभोग करें। – jvo

+0

मेरा केवल एक सुझाव था, आप किसी भी भाषा द्वारा सीआरएम 2011 वेब सेवाओं का उपभोग कर सकते हैं, लेकिन वेब सेवा बनाने का आसान तरीका यह है कि प्रॉक्सी के रूप में कार्य करें। –

उत्तर

5

एमएससीआरएम 2013 और शायद 2011 वेबसेव प्रमाणीकरण के लिए एनटीएलएम का उपयोग कर रहे हैं।

डेटा क्वेरी के लिए, आप यूआरएल का उपयोग कर सकते इनकोडिंग FetchXML

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

आप उन्नत खोज में XML निर्यात करके सीआरएम से सही एक्सएमएल प्राप्त कर सकते हैं और उदाहरण के लिए RetrieveMultiple विधि के साथ क्वेरी निष्पादित करें।

मैं एसओएपी लिफाफा और कर्ल पोस्ट क्वेरी के साथ एक उदाहरण जोड़ रहा हूं, एनटीएलएम के साथ प्रमाणित।

<?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); 
} 
संबंधित मुद्दे