Вы можете получить список заказов сформировав запрос к API сервиса программными методами.
Запрос передаётся методом POST в формате URLencode на адрес: https://username.expertam.ru/api/getOrdersWithGoods
где username — это логин пользователя в системе, а так же его домен 3-его уровня в сервисе Expertam.
В ответе ваша система получит информацию о заказах.
Параметры передаваемые в запросе
Вы можете передать следующие фильтры:
1 2 3 4 |
begin_date - дата создания счетов "от", в формате 01.01.2017 (dd.mm.yyyy) end_date - дата создания счетов "до", в формате 01.02.2017 (dd.mm.yyyy) paid - (bool) только оплаченные заказы goods - (string or array) ID продуктов - берется из адресной строки при редактировании продукта |
В интервале begin_date — end_date можно передавать временной промежуток не больше месяца.
Если эти значения не переданы, то отдаются данные за сутки.
Если конечная дата не указана, то за неё принимается текущий момент.
Если даты создают интервал больше месяца, то он урезается до месяца так, что конечная дата остается той, которую передал пользователь (или текущая, если пользователь её не определил), а вот начальная будет урезана.
Если вы укажете параметр paid=true, то на выходе получите счета, которые оплачены в указанный интервал времени.
Как работает
Вы вызываете функцию API GetOrdersWithGoods.
В ответ ваша система получит результат выполнения функции и массив информации о заказе в переменной result. Массив информации будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
Array ( [0] => stdClass Object ( [id] => номер счета, [first_name] => имя [last_name] => фамилия [middle_name] => отчество [email] => e-mail адрес [phone] => телефон [city] => город доставки (только для физических продуктов) [country] => страна [address] => адрес [region] => регион [postalcode] => почтовый индекс [created] => дата создания счета [pay_status] => статус счета [paid] => дата оплаты счета [type] => тип заказа [payway] => способ оплаты [comment] => комментарий к счету [domain] => домен заказа [link] => ссылка на страницу оплаты счета [good_count] => количество продуктов в счете [price] => стоимость продукта [is_recurrent] => является ли счет рекуррентным? true/false [bill_sum_topay] => осталось к оплате [tag] => тэг [kupon] => использованный купон [utm] => stdClass Object ( [medium] => утм-параметр канал (если существует) [source] => утм-параметр источник (если существует) [campaign] => утм-параметр кампания (если существует) [content] => утм-параметр объявление (если существует) [term] => утм-параметр ключ (если существует) ) [items] => Array ( [0] => stdClass Object ( [id] => идентификатор продукта [title] => название продукта [sum] => стоимость по факту [price] => стоимость из настроек продукта [partners] => Array ( [0] => stdClass Object ( [partner_lvl] => уровень партнерки [partner_id] => id партнера [partner_name] => логин партнера [partner_fee] => вознаграждение партнера ) [1] => stdClass Object ( [partner_lvl] => уровень партнерки [partner_id] => id партнера [partner_name] => логин партнера [partner_fee] => вознаграждение партнера ) ) ) [1] => stdClass Object ( [id] => идентификатор продукта [title] => название продукта [sum] => стоимость по факту [price] => стоимость из настроек продукта [partners] => Array ( [0] => stdClass Object ( [partner_lvl] => уровень партнерки [partner_id] => id партнера [partner_name] => логин партнера [partner_fee] => вознаграждение партнера ) [1] => stdClass Object ( [partner_lvl] => уровень партнерки [partner_id] => id партнера [partner_name] => логин партнера [partner_fee] => вознаграждение партнера ) ) ) ) ) |
Ответ кодирован в формате JSON. Подробнее смотрите «Ответы API сервиса».
Пример на PHP получениия списка заказов
В примере получаем информацию по заказам в период с 01.01.2017 по 01.02.2017 для продуктов с id 1, 2, 3.
Функция GetHash — формирует подпись к передаваемым данным.
Функция CheckHash — проверяет подпись к ответу сервиса.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
// Логин в системе Expertam $user_rs['user_id'] = 'username'; // Ключ для формирования подписи. См. раздел API (ссылка в правом нижнем углу в личном кабинете) $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив данных для передачи в API $send_data = array( 'begin_date' => '15.01.2017', 'end_date' => '28.02.2017', 'paid' => 'true', // Только оплаченные счета or false 'goods' => array(1, 2, 3) // ID продуктов ); // Формируем подпись к передаваемым данным $send_data['hash'] = GetHash($send_data, $user_rs); // Вызываем функцию получения информации о заказе и декодируем полученные данные $resp = json_decode(Send('https://username.expertam.ru/api/getOrdersWithGoods', $send_data)); // проверяем ответ сервиса if(!CheckHash($resp, $user_rs)){ echo "Ошибка! Подпись к ответу не верна!"; print_r($resp); exit; } if($resp->error_code == 0){ echo "Информация о заказе:"; print_r($resp->result); } 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; // подпись не верна } |