Создать запись в Salesforce Lightning API curl / php - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь использовать API молнии REST для salesforce. До сих пор я мог успешно подключиться и получить информацию о некоторых вещах, однако я изо всех сил стараюсь заставить ее действительно создавать новые записи. Ниже приведен код, который я исключил из кода подключения и получил токен на предъявителя, так как оба они работают нормально и не влияют на вторую половину создания записи.

<?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 голосов
/ 08 июля 2019

То, что вы получаете, - это описание объекта учетной записи, которое является возвращаемым значением для запроса GET. Вам необходимо сделать запрос POST для создания объекта sObject.

Ваши данные тела не должны быть вложены в ключ fields. Ваш JSON должен выглядеть как пример из документации,

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

со всеми полями на верхнем уровне.

И, наконец, API v20.0 крайне устарел. Я бы порекомендовал объявить последнюю версию API в URL-адресе конечной точки v46.0. Использование старых версий API может привести к непредвиденному поведению и недоступности некоторых полей.

...