如何在没有 Salesforce PHP 工具包的情况下使用 PHP SoapClient 向 salesforce 发出 Soap 调用?
How do I make Soap calls using PHP SoapClient to salesforce without the Salesforce PHP Toolkit?
$client = new SoapClient('enterprise.wsdl');
print_r($client->login(SFDC_LOGIN, SFDC_PASSWORD.SFDC_API_TOKEN));
$client->__setLocation(TOKEN_URL);
我收到一个错误:
Fatal error: Uncaught SoapFault exception: [UNKNOWN_EXCEPTION] UNKNOWN_EXCEPTION: Destination URL not reset. The URL returned from login must be set in the SforceService in /Library/WebServer/Documents/custom/index.php:18
在这种情况下,这并没有提供太多有用的信息,它确实告诉我我需要设置目的地 URL 或捕获返回的 URL?任何帮助将不胜感激。
注:
我不想使用 Salesforce PHP 工具包,因为我不想向我公司的 Web 服务器添加任何不必要的东西。
好的,在对 aynber 的想法进行一些挖掘之后。我想到了这个...
我从 https://www.soapui.org 为我的 mac 下载了 SoapUI-5.2.1。
从那里我将该程序与来自 salesforce 的企业 WSDL 文件结合起来。使用该程序 "pre build" soap call for me。然后我取出我需要的部分并使用 cURL 提交肥皂信封。
这让我可以使用之前创建的帐户 IDs/Contact ID 转换潜在客户。转换潜在客户后,我现在可以返回并修改我也在潜在客户转换前创建的商机 ID。
这是我想出的代码...
$soapSubmission='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com"><soapenv:Header><urn:SessionHeader><urn:sessionId>'.$creds[0].'</urn:sessionId></urn:SessionHeader></soapenv:Header><soapenv:Body><urn:convertLead>';
foreach($postInfo as $orderKey=>$values){
$additionString='<urn:leadConverts>';
if(isset($values['SFDC_IDs']['Account'])){
$additionString.='<urn:accountId>'.$values['SFDC_IDs']['Account'].'</urn:accountId>';
}
if(isset($values['SFDC_IDs']['Contact'])){
$additionString.='<urn:contactId>'.$values['SFDC_IDs']['Contact'].'</urn:contactId>';
}
$additionString.='<urn:convertedStatus>Converted</urn:convertedStatus>';
$additionString.='<urn:doNotCreateOpportunity>true</urn:doNotCreateOpportunity>';
$additionString.='<urn:leadId>'.$values['SFDC_IDs']['Lead'].'</urn:leadId>';
$additionString.='<urn:overwriteLeadSource>false</urn:overwriteLeadSource>';
$additionString.='<urn:ownerId>'.self::IT_SERVICE_ID.'</urn:ownerId>';
$additionString.='<urn:sendNotificationEmail>false</urn:sendNotificationEmail>';
$additionString.='</urn:leadConverts>';
$soapSubmission.=$additionString;
}
$soapSubmission.='</urn:convertLead></soapenv:Body></soapenv:Envelope>';
$ch=curl_init($creds[1]);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch,CURLOPT_TIMEOUT, 60);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$soapSubmission);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"cache-control: no-cache",
"content-type: text/xml; charset=UTF-8",
"SOAPAction: convertLead"
));
$result=curl_exec ($ch);
curl_close($ch);
return $result;
$client = new SoapClient('enterprise.wsdl');
print_r($client->login(SFDC_LOGIN, SFDC_PASSWORD.SFDC_API_TOKEN));
$client->__setLocation(TOKEN_URL);
我收到一个错误:
Fatal error: Uncaught SoapFault exception: [UNKNOWN_EXCEPTION] UNKNOWN_EXCEPTION: Destination URL not reset. The URL returned from login must be set in the SforceService in /Library/WebServer/Documents/custom/index.php:18
在这种情况下,这并没有提供太多有用的信息,它确实告诉我我需要设置目的地 URL 或捕获返回的 URL?任何帮助将不胜感激。
注:
我不想使用 Salesforce PHP 工具包,因为我不想向我公司的 Web 服务器添加任何不必要的东西。
好的,在对 aynber 的想法进行一些挖掘之后。我想到了这个...
我从 https://www.soapui.org 为我的 mac 下载了 SoapUI-5.2.1。
从那里我将该程序与来自 salesforce 的企业 WSDL 文件结合起来。使用该程序 "pre build" soap call for me。然后我取出我需要的部分并使用 cURL 提交肥皂信封。
这让我可以使用之前创建的帐户 IDs/Contact ID 转换潜在客户。转换潜在客户后,我现在可以返回并修改我也在潜在客户转换前创建的商机 ID。
这是我想出的代码...
$soapSubmission='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com"><soapenv:Header><urn:SessionHeader><urn:sessionId>'.$creds[0].'</urn:sessionId></urn:SessionHeader></soapenv:Header><soapenv:Body><urn:convertLead>';
foreach($postInfo as $orderKey=>$values){
$additionString='<urn:leadConverts>';
if(isset($values['SFDC_IDs']['Account'])){
$additionString.='<urn:accountId>'.$values['SFDC_IDs']['Account'].'</urn:accountId>';
}
if(isset($values['SFDC_IDs']['Contact'])){
$additionString.='<urn:contactId>'.$values['SFDC_IDs']['Contact'].'</urn:contactId>';
}
$additionString.='<urn:convertedStatus>Converted</urn:convertedStatus>';
$additionString.='<urn:doNotCreateOpportunity>true</urn:doNotCreateOpportunity>';
$additionString.='<urn:leadId>'.$values['SFDC_IDs']['Lead'].'</urn:leadId>';
$additionString.='<urn:overwriteLeadSource>false</urn:overwriteLeadSource>';
$additionString.='<urn:ownerId>'.self::IT_SERVICE_ID.'</urn:ownerId>';
$additionString.='<urn:sendNotificationEmail>false</urn:sendNotificationEmail>';
$additionString.='</urn:leadConverts>';
$soapSubmission.=$additionString;
}
$soapSubmission.='</urn:convertLead></soapenv:Body></soapenv:Envelope>';
$ch=curl_init($creds[1]);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch,CURLOPT_TIMEOUT, 60);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$soapSubmission);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"cache-control: no-cache",
"content-type: text/xml; charset=UTF-8",
"SOAPAction: convertLead"
));
$result=curl_exec ($ch);
curl_close($ch);
return $result;