$amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
тут вам надо заменить https://subdomain.amocrm.ru на свой адрес amo например https://test23032025.amocrm.ru, и вместо Тут access token подставить ваш access token <?php
function createAmoClient($domain, $accessToken)
{
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $accessToken,
];
return function ($method, $url, $data = null) use ($domain, $headers) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $domain . $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
if ($data !== null) {
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return [
'content' => is_bool($response) ? $response : json_decode($response, 1),
'status_code' => $httpcode
];
};
}
$amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
$response = $amoClient('POST', '/api/v4/leads/complex', [
[
'name' => 'Название сделки',
]
]);
var_dump($response);
$response = $amoClient('POST', "/api/v4/leads/{$response['content'][0]['id']}/notes", [
[
'note_type' => 'common',
'params' => [
'text' => 'Примечание'
]
]
]);
var_dump($response);
<?php
function createAmoClient($domain, $accessToken)
{
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $accessToken,
];
return function ($method, $url, $data = null) use ($domain, $headers) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $domain . $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
if ($data !== null) {
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return [
'content' => is_bool($response) ? $response : json_decode($response, 1),
'status_code' => $httpcode
];
};
}
$amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
$response = $amoClient('POST', '/api/v4/leads/complex', [
[
'name' => 'Название сделки',
]
]);
$amoClient('POST', "/api/v4/leads/{$response['content'][0]['id']}/notes", [
[
'note_type' => 'common',
'params' => [
'text' => 'Примечание'
]
]
]);
POST /api/v4/leads/complex
в ответе вам должен придти массив объектов (если вы передаете на создания лишь одну сделку, то и массив будет из одного объекта). Предположим вы записываете ответ в переменную $response.POST /api/v4/{entity_type}/{entity_id}/notes
соответственно вам надо заменить {entity_type} на leads так как примечание добавляется в сделку и заменить {entity_id} на id созданной вами сделки - он у вас будет в $response[0]['id']$AMOheader = [
'Content-Type: application/json',
'Authorization: Bearer ' . trim(file_get_contents($AMOtoken))
];
$data = [
[
'entity_id' => (int)$_POST['leads']['status']['0']['id'],
'note_type' => 'common',
'params' => [
'text' => 'Пароль перезаписан...'
]
]
];
$data = [
[
'id' => (int)$_POST['leads']['status']['0']['id'],
'custom_fields_values' => [
[
'field_id' => 1151761,
'values' => [
[
'value' => $OAID
]
]
],
[
'field_id' => 1151755,
'values' => [
[
'value' => $OAPass
]
]
]
],
'status_id' => 65941234
]
];
export const pinia = createPinia()
import {pinia} from "@/.../pinia.js";
app.use(pinia)
import { createI18n } from "vue-i18n";
import en from "./en.json"
import ru from "./ru.json"
import {useSettingsStore} from "@/store/SettingsDataStore";
import {pinia} from "@/.../pinia.js";
const settingsStore = useSettingsStore(pinia);
export default createI18n({
locale: settingsStore.locale,
fallbackLocale: 'ru',
messages: {
en, ru
},
legacy: false,
globalInjection: true
})
/** Привязка файла со счетом к сделке */
if (!empty($this->invoiceFileName)) {
// Загружаем файл счета в amocrm
$file = $this->uploadFile();
$lead = $this->apiClient->leads()->getOne($lead->getId());
$leadCustomFieldsValues = new CustomFieldsValuesCollection();
$leadCustomFieldsValues->add(self::addFile($this->config['app']['lead_file'], $file));
$lead->setCustomFieldsValues($leadCustomFieldsValues);
$this->apiClient->leads()->updateOne($lead);
$file = $this->uploadFile();
$this->apiClient->entityFiles(EntityTypesInterface::LEADS, $lead->getId())->add(
(new FileLinksCollection())
->add(
(new FileLinkModel())
->setFileUuid($file->getUuid())
)
);
}
А почему лучше его использовать написано в чейнжлоге от 25 марта 2024