在Salesforce Lightning API curl / php中创建记录

时间:2019-07-08 14:41:04

标签: php rest curl salesforce salesforce-lightning

我正在尝试将REST闪电API用于Salesforce。到目前为止,我可以使它成功连接并获得某些信息,但是我一直在努力使其实际创建新记录。下面是代码,我排除了连接代码并获得了Bearer令牌,因为这两种代码都可以正常工作,并且不会影响创建记录的后半部分。

<?php

             $url = $instance_url.'/services/data/v20.0/sobjects/Account/';
             $headers = array(

                'Content-Type: application/json'
            );

        $data = array(
            'Name' => "AccountHEX"

        );


            $ch2 = curl_init();

            curl_setopt($ch2,CURLOPT_URL, $url);

            curl_setopt($ch, CURLOPT_POST, 1);

            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

            curl_setopt($ch2,CURLOPT_SSL_VERIFYPEER, false);

            curl_setopt($ch2,CURLOPT_RETURNTRANSFER, true);

            $head = 'Authorization: Bearer '.$access_token;

            curl_setopt($ch2, CURLOPT_HTTPHEADER, array($head));



            //execute post

            $result = null;

            $result = curl_exec($ch2);

             echo $result;

?>

我得到的结果似乎只是帐户对象上的信息:

{
   "objectDescribe":{
      "activateable":false,
      "createable":true,
      "custom":false,
      "customSetting":false,
      "deletable":true,
      "deprecatedAndHidden":false,
      "feedEnabled":true,
      "keyPrefix":"001",
      "label":"Account",
      "labelPlural":"Accounts",
      "layoutable":true,
      "mergeable":true,
      "name":"Account",
      "queryable":true,
      "replicateable":true,
      "retrieveable":true,
      "searchable":true,
      "triggerable":true,
      "undeletable":true,
      "updateable":true,
      "urls":{
         "rowTemplate":"/services/data/v20.0/sobjects/Account/{ID}",
         "describe":"/services/data/v20.0/sobjects/Account/describe",
         "sobject":"/services/data/v20.0/sobjects/Account"
      }
   },
   "recentItems":[

   ]
}

因此,它更多地将其视为查询而不是创建。我尝试了几种不同的$ data安排。包括立即进行命名,并将其放入字段数组中。

为此而努力:

https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm

有什么想法如何创建记录吗?

1 个答案:

答案 0 :(得分:0)

您收到的是Account sObject describe,它是GET请求的返回值。您需要发出POST请求才能创建sObject。

您的身体数据不需要嵌套在fields键中。您的JSON应该类似于文档中的示例

{
  "Name" : "Express Logistics and Transport"
}

所有字段都位于顶层。

最后,API v20.0太旧了。我建议您在端点URL v46.0中声明最新的API版本。使用旧的API版本可能会导致异常行为,并且某些字段对您不可用。