· 5 years ago · Sep 30, 2020, 09:36 AM
1<?php
2// Поддомен аккаунта и URL запроса
3$subdomain = 'dumalogia';
4$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/account';
5
6/** Получаем access_token из вашего хранилища */
7$access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
8/** Формируем заголовки */
9$headers = [
10 'Authorization: Bearer ' . $access_token
11];
12/**
13 * Нам необходимо инициировать запрос к серверу.
14 * Воспользуемся библиотекой cURL (поставляется в составе PHP).
15 * Вы также можете использовать и кроссплатформенную программу cURL, если вы не программируете на PHP.
16 */
17
18// Авторизация
19function curl_request() {
20
21 global $link;
22 global $headers;
23
24 $curl = curl_init(); //Сохраняем дескриптор сеанса cURL
25 /** Устанавливаем необходимые опции для сеанса cURL */
26 curl_setopt($curl,CURLOPT_RETURNTRANSFER, true); // TRUE для возврата результата передачи в качестве строки из curl_exec() вместо прямого вывода в браузер.
27 curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0'); // Содержимое заголовка "User-Agent: ", посылаемого в HTTP-запросе.
28 curl_setopt($curl,CURLOPT_URL, $link); // Загружаемый URL. Данный параметр может быть также установлен при инициализации сеанса с помощью curl_init().
29 curl_setopt($curl,CURLOPT_HTTPHEADER, $headers); // Массив устанавливаемых HTTP-заголовков, в формате array('Content-type: text/plain', 'Content-length: 100')
30 curl_setopt($curl,CURLOPT_HEADER, false); // TRUE для включения заголовков в вывод.
31 //curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST'); // Собственный метод запроса, используемый вместо "GET" или "HEAD" при выполнении HTTP-запроса.
32 //curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data)); // Все данные, передаваемые в HTTP POST-запросе.
33 curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
34 curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
35 $out = curl_exec($curl); //Инициируем запрос к API и сохраняем ответ в переменную
36 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); // Возвращает информацию об определенной операции; Последний код ответа.
37 curl_close($curl); // Завершает сеанс cURL
38 /** Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
39 $code = (int)$code;
40 $errors = [
41 400 => 'Bad request',
42 401 => 'Unauthorized',
43 403 => 'Forbidden',
44 404 => 'Not found',
45 500 => 'Internal server error',
46 502 => 'Bad gateway',
47 503 => 'Service unavailable',
48 ];
49
50 // До обработки ошибки
51 //print_r($response = json_decode($out, true));
52 //echo "<hr>";
53 //echo "Access токен: " . $access_token = $response['access_token'] . "<br>"; //Access токен
54 //echo "Refresh токен: " . $refresh_token = $response['refresh_token'] . "<br>"; //Refresh токен
55 //echo "Тип токена: " . $token_type = $response['token_type'] . "<br>"; //Тип токена
56 //echo "Действие токена истекает: " . $expires_in = $response['expires_in'] . "<br>"; //Через сколько действие токена истекает
57
58 //echo "Далее будет ошибка <br><hr>";
59
60 try
61 {
62 /** Если код ответа не успешный - возвращаем сообщение об ошибке */
63 if ($code < 200 || $code > 204) {
64 throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undefined error', $code);
65 }
66 }
67 catch(\Exception $e)
68 {
69 die('Ошибка: ' . $e->getMessage() . PHP_EOL . 'Код ошибки: ' . $e->getCode());
70 }
71
72 /**
73 * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
74 * нам придётся перевести ответ в формат, понятный PHP
75 */
76 //print_r($response = json_decode($out, true));
77 //echo "<hr>";
78 //echo "Access токен: " . $access_token = $response['access_token'] . "<br>"; //Access токен
79 //echo "Refresh токен: " . $refresh_token = $response['refresh_token'] . "<br>"; //Refresh токен
80 //echo "Тип токена: " . $token_type = $response['token_type'] . "<br>"; //Тип токена
81 //echo "Действие токена истекает: " . $expires_in = $response['expires_in'] . "<br>"; //Через сколько действие токена истекает
82 //echo "<hr><br>";
83 //echo "Данные полученны!";
84
85 return $out;
86}
87
88curl_request();
89
90echo "Запрос к API приложения - сделан успешно!";
91
92/** ** ** ** * ** * ** * ** * * ** * * * * ** * * * * * ** * * * ** * */
93// Получение значения поля "Дата/Время"
94$field = 614007;
95// Переопределяем переменную $link
96$link = "https://" . $subdomain . ".amocrm.ru/api/v4/leads/custom_fields/$field";
97
98
99// Получаем данные для form
100function getting_field() {
101
102 // Запрос cURL, сохраняем ответ в переменную
103 $response = json_decode(curl_request(), true);
104
105 $list_value = $response['enums'];
106 $field_age_and_time = [];
107
108 for($i = 0; $i < count($list_value); $i++) {
109 $key = $list_value[$i]['id'];
110 $value = $list_value[$i]['value'];
111 $field_age_and_time += [$key => $value];
112 }
113
114 // Создадим теги <option>
115 foreach ($field_age_and_time as $key => $value) {
116 $option_tag .= "<option class=\"list_value\" value=\"$key\">$value</option>";
117 }
118
119 return $option_tag;
120}
121
122//getting_field();
123?>
124