GithubHelp home page GithubHelp logo

ufee / amoapi Goto Github PK

View Code? Open in Web Editor NEW
41.0 8.0 18.0 322 KB

AmoCRM PHP API/oAuth Client

Home Page: https://www.amocrm.ru/developers/content/platform/abilities

License: MIT License

PHP 100.00%
amocrm php api crm oauth

amoapi's People

Contributors

bigperson avatar m4tlch avatar mkhk6 avatar ufee avatar vladimir-proger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amoapi's Issues

Выполнение Ajax запросов не работает 403

Выполнение произвольных запросов не работает:

$result = $this->ufeeamo->ajax()->post('/ajax/settings/custom_fields/', [
           'action' => 'apply_changes',
            'element_type' => 2,
            'groups' => [
                [
                    'name' => 'test Api',
                    'id' => ''
                ]
            ]
        ]);

403 ошибка
$query->setHeader('X-Requested-With', 'XMLHttpRequest') не отрабатывает должным образом, в результате заголовок не передается.

Дамп запроса:

* Hostname subdomain.amocrm.ru was found in DNS cache
*   Trying 23.111.109.17...
* TCP_NODELAY set
* Connected to subdomain.amocrm.ru (23.111.109.17) port 443 (#0)
* ALPN, offering http/1.1
* ignoring certificate verify locations due to disabled peer verification
* NPN, negotiated HTTP1.1
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: OU=Domain Control Validated; CN=*.amocrm.ru
*  start date: Jul  2 17:12:23 2019 GMT
*  expire date: Aug 31 14:08:50 2020 GMT
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
*  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
> POST /ajax/settings/custom_fields/ HTTP/1.1
Host: subdomain.amocrm.ru
User-Agent: Amoapi v.8 (subdomain/ru)
Accept: */*
Cookie: session_id=****
Content-Length: 91
Content-Type: application/x-www-form-urlencoded

* upload completely sent off: 91 out of 91 bytes
< HTTP/1.1 403 Forbidden
< Server: nginx
< Date: Sat, 04 Apr 2020 08:55:32 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Set-Cookie: user_lang=ru; expires=Fri, 04-Apr-2025 08:55:32 GMT; Max-Age=157766400; path=/; domain=.amocrm.ru
< X-Runtime-Generated: 0,0722
< 
* Connection #0 to host subdomain.amocrm.ru left intact

Exception : Invalid response code: 403

Api v4

Планируется ли дополнить/заменить методы из новой версии api?

Массовое добавление/редатирование сущностей в один запрос

Привет!
Спасибо за отличную библиотеку, использую ее вместо стандартной амовской.
Правда сейчас наткнулся на одно ограничение.
Мне нужно отредактировать много сделок/контактов скопом.
Читая документацию, предполагал что подобный функционал есть

$contacts = [ $amo->contacts()->create(), $amo->contacts()->create() ]; $contacts[0]->name = 'Amoapi v7 - 1'; $contacts[1]->name = 'Amoapi v7 - 2'; $amo->contacts()->add($contacts);

Но, к сожалению нет, библиотека это отправляет двумя отдельными запросами.
Есть какое-то штатное решение для этой ситуации или же надо допиливать самостоятельно.
Спасибо!

Как создать задачу?

В документации у вас написан пример:
$task = $amo->tasks()->create();
$task->text = 'Amoapi v7';
$task->element_type = 1;
$task->element_id = 34762725;
$task->save();

Что такое element type и element_id? Для создания задачи в этой crm достаточно передать text и complete_till, зачем нужны остальные параметры?

Ошибка 401 при вызове fetchAccessToken()

Получаю следующую ошибку при попытке авторизоваться.

{
"title": "Некорректный клиент",
"type": "https://developers.amocrm.ru/v3/errors/OAuthProblemJson",
"status": 401,
"detail": "Авторизация клиента не прошла"
}

Шаги:

  1. Получаю ссылку для авторизации так $amo->getOauthUrl($arg = ['mode' => 'popup', 'state' => 'amoapi']);
  2. На стороне amocrm выбираю для какого аккаунта предоставить доступы
  3. Далее следует редирект с кодом на сайт, где получаю code из get параметров
  4. далее пытаюсь получить accessToken - $amo->fetchAccessToken($code);
    В итоге получаю ошибку выше.

Подскажите, в чем может быть проблема и куда смотреть?

Дополнительное поле по его id

Не всегда удобно заполнять по названию поля, клиент может название чуть изменить и вся интеграция слетает) Было бы удобно использовать как название, так и айдишник нужного поля

$lead->cf(284441)->setValue($value);

Ошибка с данными типа Integer

Подскажите, пожалуйста.
Использую авторизацию oAuth и пытаюсь создать например контакт через новое API, обращаясь к '/api/v4/contacts', используя функцию произвольного запроса, но возникает ошибка валидации для данных типа Integer. С другими типами данных проблем нет. Как это можно решить? Создание контакта - это просто пример. Мне требуется работать с неразобранным, но эта ошибка повторяется и при создании контакта

// Пример кода
$input['contact'][] = [
'name' => 'test77',
'created_at' => time(),
];
$amo->ajax()->post($url = '/api/v4/contacts', $input['contact']);

// Пример ошибки:
{"validation-errors":[{"request_id":"0","errors":[{"code":"InvalidType","path":"created_at","detail":"This value should be of type int."}]}],"title":"Bad Request","type":"https://httpstatus.es/400","status":400,"detail":"Request validation failed"}

throw new \Exception('Account not found: '.$account_id);

Постоянно возникает ошибка Account not found: 4 во время setInstance при протухших ранее доступах.
Помогает только удаление кеша.
Отсюда следует еще одна проблема, нельзя задать путь кеша до вызова setInstance. И нет методов для удаления кеша отдельного инстанса

Trace:
image

oAuth 2.0

Приветствую, будет ли добавлена поддержка oAuth 2.0? в данный момент без кода авторизации амо бьет по лицу сапогом..., сам ответил на свои вопросы, не внимательно читал документацию

Не работает получение сделок с дополнительным условием

$lead = $amo->leads()->where('key', $val)->recursiveCall();
из примера не работает, пытаюсь сделать выборку по status_id, выдает всё равно абсолютно все сделки, пробовал даже по name, все равно не получается.

$lead = $amo->leads()->where('name', $name)->recursiveCall(); //выгружает все сделки
$lead = $amo->leads()->where('status_id', $idstatus)->recursiveCall(); //выгружает все сделки

$lead = $amo->leads()->where('id', $id)->recursiveCall(); //выгружает нужную сделку
этот код аналогичен $lead = $amo->leads()->find($id);, который тоже успешно выполняется.

Не понятно почему так происходит если вот по доп.полям выборка хорошо работает и выгружает только то, что подпадает под выборку.
$leads = $amo->leads()->searchByCustomField('Москва', 623425); // by CF id

Invalid response code: 202

$response = $ufeeApi->ajax()->post('/ajax/merge/contacts/save', $query);

Стоит добавить поддержку 202 ответа

Undefined index: created_at

При использовании Oauthapi::setOauthStorage(new \Ufee\Amo\Base\Storage\Oauth\FileStorage(['path' => $cachePath]));

Получаем ошибку
vendor/ufee/amoapi/src/Api/Oauth/Query.php

$expire_time = ($oauth['created_at']+$oauth['expires_in'])-time();

Вопрос по первому получению токенов.

`require_once 'vendor/autoload.php';

use \Ufee\Amo\Oauthapi;
use \Ufee\Amo\Base\Storage\Oauth\FileStorage;

$amo = Oauthapi::setInstance([
'domain' => 'poddomain.amocrm.ru',
'client_id' => '....',
'client_secret' => '.....',
'redirect_uri' => 'https://site.ru',
'zone' => 'ru',
'timezone' => 'Europe/Moscow',
'lang' => 'ru'
]);

//
$amo = Oauthapi::getInstance('......');

$first_auth_url = $amo->getOauthUrl($arg = ['mode' => 'popup', 'state' => 'amoapi']);
;

$code = '.......';
$oauth = $amo->fetchAccessToken($code);
print_r($oauth);`
print_r($oauth) вроде как должен вывести время, когда захешировались токены так? Ничего не приходит, может чего написал не так? Второй вопрос, в папке cache создается папка с названием домена, но в ней ничего нет, как мне посмотреть, что вообще сохранилось в итоге?

updated_at в теле сущностей

Часто возникает ошибка при обновлении

{"update":{"25063315":"Last modified date is older than in database"}}

Указывать update_at = time() + {second} как будто костыль, который не всегда помогает

В апи доке этот параметр необязательный, но если тут попытаться задать ему null - будет эксепшн, а по умолчанию в либе ему задается значение time(), зачем?

Насколько понимаю, если не передавать значение метки обновления, то все будет ок

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.