Содержание
Для интеграции с другими сервисами и приложениями рекомендуем настроить интеграцию через Zapier.
Вы сможете передавать данные между сервисами без помощи программистов.
Таблица кодов и сообщений ответов API сервиса Expertam
После каждого обращения к функциям API сервиса ваша система получает ответ в кодировке JSON.
(Как его можно получить и обработать смотрите ниже пример на PHP.)
В ответе возвращаются поля error_code, error_text и hash, иногда — когда нужно вернуть ещё какие-то данные —
возвращается массив result :
- error_code — числовой код сообщения об ошибке,
- error_text — текстовое сообщение об ошибке,
- hash — подпись к данным, чтобы удостоверится что ответ от нашей системы, а не подделан (как формируется смотрите ниже),
- result — массив с результирующими данными (например result->bill_id — номер созданного заказа).
код error_code |
сообщение error_text |
описание |
общие ошибки | ||
0 | ok | действие выполнено успешно |
1 | not transferred hash | не передана хешь-подпись запроса |
2 | no transmitted data | не переданы параметры запроса |
3 | wrong posted data | ошибочные параметры запроса |
4 | incorrect hash | хешь-подпись к запросу неверна |
5 | invalid user name | не передан или не найден логин в системе Expertam |
6 | permission denied for ip … | для указанного ip доступ запрещён |
7 | account disabled | аккаунт отключен |
8 | Limit to subscribe for this IP exided. Try later | Лимит запросов по API с данного адреса исчерпан. Попробуйте позже. Как правило связано с тем, что функции API отключены для аккаунта. |
ошибки добавления контакта | ||
0 | activation email sent to subscriber | пользователь добавлен в группы. ему выслано письмо активации. |
100 | email is missing | в переданных параметрах отсутствует e-mail контакта |
101 | subscription error: (описание) | ошибка добавления пользователя в группу |
102 | the subscriber is already registered | контакт уже есть во всех переданных группах |
103 | has an invalid subscriptions group | в запросе передана несуществующая группа |
104 | subscription forbidden for (id группы) | добавление в эту группу невозможно. например автогруппа. |
ошибки работы с заказами | ||
0 | order status changed | статус заказа успешно изменен |
200 | nonexistent order | заказ с указанным номером не существует |
201 | wrong status | передан неверный статус заказа |
202 | order not paid | во время оплаты заказа произошла ошибка |
203 | order number is empty | не передан номер заказа |
ошибки удаления иизменения статуса заказа | ||
0 | order status changed | статус заказа успешно изменён |
0 | order deleted | заказ успешно удалён |
302 | nonexistent order | в запросе передан не существующий номер заказа |
303 | wrong status | такого статуса заказа нет в системе |
ошибки получения списка купленных продуктов по мейлу клиента | ||
400 | order not found | заказ с таким номером не существует |
ошибки получения списка групп контактов по email-у клиента | ||
500 | subscriber not found | контакт с таким и-мейлом не существует |
501 | group not found | контакт не состоит ни в одной группе |
ошибки создания заказа | ||
600 | wrong email | передан не правильный и-мейл клиента |
601 | order already exist. his number send in result array. | такой заказ уже существует. (в result->bill_id будет передан его номер) |
602 | error creating order | не удалось создать заказ |
603 | missing products | в заказе отсутсвуют товары |
604 | product not exist | в вашем магазине нет продукта с таким id (будет возвращён id этого продукта) |
605 | not having any data for delivery products | не хватает данных для доставки продукта (отсутсвует адресс или имя) |
ошибки получения всех продуктов | ||
700 | no products | в магазине отсутствуют продукты |
ошибки добавления контакта | ||
800 | group subscribers is not found | указанная группа контактов не найдена (не существует) |
801 | subscriber with such address is not found | контакт с указанным email не найден (не существует) |
ошибки получения информации о заказе | ||
400 | Order not found | Заказ с таким номером не существует |
По мере развития API сервиса таблица ответов будет дополнятся.
Пример на PHP получения и обработки ответа сервиса
1 |
<!--?php // Логин в системе Expertam $user_rs['user_id'] = 'username'; // Ключ для формирования подписи. см. футер страницы личного кабинета - "API" - "Ключ API" $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив данных для передачи в API $send_data = array( 'rid[0]' => 'super', 'lead_name' => 'Name', 'lead_email' => '[email protected]', 'lead_phone' => '+788888888', 'lead_city' => 'City', 'aff' => 111, 'tag' => 'this is tag', 'ad' => 1111, 'doneurl2' => 'http://yandex.ru/' ); // Формируем подпись к передаваемым данным $send_data['hash'] = GetHash($send_data, $user_rs); // Вызываем функцию AddLeadToGroup в API и декодируем полученные данные $resp = json_decode(Send('http://username.expertam.ru/api/AddLeadToGroup', $send_data)); // Проверяем ответ сервиса if(!CheckHash($resp, $user_rs)){ echo "Ошибка! Подпись к ответу не верна!"; exit; } if($resp->error_code == 0) echo "Пользователь добавлен в группу {$send_data['rid[0]']}. Ответ сервиса: {$resp->error_code}"; else echo "Ошибка код:{$resp->error_code} - описание: {$resp->error_text}"; // =========== Функции отправки, получения и обработки ответа ============ // Отправляем запрос в API сервиса function Send($url, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // выводим ответ в переменную $res = curl_exec($ch); curl_close($ch); return $res } // Формируем подпись к передаваемым в API данным function GetHash($params, $user_rs) { $params = http_build_query($params); $user_id = $user_rs['user_id']; $secret = $user_rs['user_rps_key']; $params = "$params::$user_id::$secret"; return md5($params); } // Проверяем полученную подпись к ответу function CheckHash($resp, $user_rs) { $secret = $user_rs['user_rps_key']; $code = $resp->error_code; $text = $resp->error_text; $hash = md5("$code::$text::$secret"); if($hash == $resp->hash) return true; // подпись верна else return false; // подпись не верна } ?--> |