Для интеграции с другими сервисами и приложениями рекомендуем настроить интеграцию через Zapier.
Вы сможете передавать данные между сервисами без помощи программистов.
Вы можете изменять статус заказа, передавать дату отправки, оплаты и номер почтового отправления.
Запрос передаётся методом POST в формате URLencode на адрес: https://username.expertam.ru/api/UpdateOrderStatus
Параметры передаваемые в запросе
- bill_id — номер заказа;
- status — статус заказа (sent — заказ отправлен по почте, paid — поступила оплата по заказу, return — покупатель вернул заказ, cancel — заказ отменен);
- date — время отправки заказа по почте или оплаты, в секундах от 1 января 1970 года, т.н. UNIX timestamp (обязательно для статусов sent и paid);
- rpo — номер почтового отправления (обязательно для статуса sent);
Как работает
Вы передаете номер, статус заказа и дополнительные данные, а система изменяет статус заказа и записывает указанные параметры в заказ.
В ответ на запрос ваша система получит результат выполнения функции в формате JSON. Подробнее смотрите Ответы API сервиса.
Пример на PHP изменения статуса заказа
В примере изменяем статус заказа 100000 на «отправлен». Номер РПО: 10000000000000, дата отправки — 3 марта 2013 00:00, что соответствует timestamp 1362254400.
Функция 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 |
<?php // Логин в системе Expertam $user_rs['user_id'] = 'username'; // Ключ для формирования подписи. см. "API" (справа внизу личного кабинета Expertam)=> "Ключ API" $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив данных для передачи в API $send_data = array( 'bill_id' => '100000', 'status' => 'sent', 'date' => '1362254400', 'rpo' => '10000000000000', ); // Формируем подпись к передаваемым данным $send_data['hash'] = GetHash($send_data, $user_rs); // Вызываем функцию UpdateOrderStatus в API и декодируем полученные данные $resp = json_decode(Send('https://username.expertam.ru/api/UpdateOrderStatus', $send_data)); // Проверяем ответ сервиса if(!CheckHash($resp, $user_rs)){ echo "Ошибка! Подпись к ответу не верна!"; exit; } if($resp->error_code == 0) echo "Статус заказа изменен. Ответ сервиса: {$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; // подпись не верна } ?> |