+1 vote
1 view
in Salesforce by (11.9k points)

I have been trying to create a lead from SalesForce's REST API for the past several days but I can't for the life of me get it working. I am able to get the access token no problem but from there on as far as creating a lead I am having absolutely no luck at all.

I keep seeing in all of the documentation this:

curl https://na1.salesforce.com/services/data/v20.0/sobjects/Account/ -H "Authorization: Bearer token -H "Content-Type: application/json" -d @newaccount.json"

How would I do this in PHP's curl though? I have tried and tried but had no luck at all.

Here is how I have got the access token:

$ch = curl_init();

// set URL options

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_URL, "https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=".CONSUMER_KEY."&client_secret=".CONSUMER_SECRET."&username=".USERNAME."&password=".USERPASS.SECURITY_TOKEN);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// grab HTML

$data = curl_exec($ch);

$data = json_decode($data, true);

$code = $data['access_token'];

curl_close($ch);

I have tried doing something like this after this code, however, I have had no luck.

$token_url = LOGIN_BASE_URL.'/services/oauth2/token';

$post_fields = array(

    'code' => $code,

    'grant_type' => 'authorization_code',

    'client_id' => CONSUMER_KEY,

    'client_secret' => CONSUMER_SECRET,

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $token_url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);

$token_request_body = curl_exec($ch)

I just need to figure out how to create leads in SalesForce, I have no idea where to go from here. Any help would be greatly appreciated as I cannot find decent documentation anywhere that helps me.

1 Answer

+2 votes
by (31.8k points)
edited by

So, as I can understand, the code above gets the token, which you say is working. So, now we need to see the lead creation code which is not working and whatever response the API is returning.

Want to learn Salesforce from basics! Here's the right video for you on Salesforce provided by Intellipaat:

Here is a PHP code which will create a new account. I suggest you to try to execute the code as it is first and then replace Account with Lead and then execute it again. This will create a new lead.

function create_account($name, $instance_url, $access_token) 

$url = "$instance_url/services/data/v20.0/sobjects/Account/"; 

$content = json_encode(array("Name" => $name));

$curl = curl_init($url); 

curl_setopt($curl, CURLOPT_HEADER, false); 

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: OAuth $access_token", "Content-type: application/json")); 

curl_setopt($curl, CURLOPT_POST, true); 

curl_setopt($curl, CURLOPT_POSTFIELDS, $content); 

$json_response = curl_exec($curl); 

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 

if ( $status != 201 ) 

die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl)); 

echo "HTTP status $status creating account<br/><br/>"; 

curl_close($curl); 

$response = json_decode($json_response, true); 

$id = $response["id"]; 

echo "New record id $id<br/><br/>";

return $id; 

}

Related questions

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...