Содержание
Вы можете получить список заказов, созданных одним клиентом, сформировав запрос к API сервиса программными методами.
В ответе, помимо номеров заказов, ваша система получит список товаров в этих заказах в зависимости от указанного статуса заказа, либо, если статус не указан, то получит все заказы.
Запрос передаётся методом POST в формате URLencode на адрес: https://username.expertam.ru/api/GetBills
где username — это логин пользователя в системе, а так же его домен 3-его уровня в сервисе Expertam.
Параметры передаваемые в запросе
- email — e-mail клиента, для которого нужно получить список заказов и продуктов (обязательно).
- pay_status — статус заказа: paid — оплачен, waiting — ожидается, cancel — отменен. Внимание! Если данный параметр не указан, возвращаются все заказы.
Обязательным и единственным полем является email.
Как работает
Вы передаёте e-mail клиента в функцию API GetBills.
В ответ ваша система получит результат выполнения функции и массив с заказами клиента со вложенным массивом товаров в заказе в переменной 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 |
$resp->result = array ( [№ заказа 1] => array ( [код продукта] => array ( [good_name] => ID продукта 1 [good_title] => Название продукта 1 ) ) [№ заказа 2] => array ( [код продукта] => array ( [good_name] => ID продукта 2 [good_title] => Название продукта 2 ) [код продукта] => array ( [good_name] => ID продукта 3 [good_title] => Название продукта 3 ) ) ) |
Например, список покупок:
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 |
array ( [258367] => array ( [12549] => array ( [good_name] => oplata [good_title] => Оплата за тренинг ) ) [258368] => array ( [13011] => array ( [good_name] => sales [good_title] => Продажи в кинотеатрах ) [28363] => array ( [good_name] => 222 [good_title] => 222 способа ) ) ) |
Ответ кодирован в формате JSON. Подробнее смотрите «Ответы API сервиса».
Пример на PHP получениия списка заказов и продуктов
В примере ищем все заказы для покупателя с email [email protected], ваш логин в системе «username».
Функция 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" (справа внизу личного кабинета Expertam) => "Ключ API" $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив данных для передачи в API $send_data['pay_status'] = 'paid'; //статус заказа: paid - оплачен, waiting - ожидается, cancel - отменен. // Формируем подпись к передаваемым данным $send_data['hash'] = GetHash($send_data, $user_rs); // Вызываем функцию получение списка купленных продуктов по мейлу клиента и декодируем полученные данные $resp = json_decode(Send('https://username.expertam.ru/api/GetBills', $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; // подпись не верна } |