Вы можете создавать новые заказы в вашем магазине на Expertam формируя запрос к API сервиса программными методами.
За один вызов функции формируется отдин заказ на имя одного покупателя, но возможно с несколькими продуктами. Продукты уже должны присутствовать в вашем магазине на Expertam.
Запрос передаётся методом POST в формате URLencode на адрес: https://username.expertam.ru/api/CreateOrder
где username — это логин пользователя в системе и заодно его домен 3-его уровня в Expertam.
Параметры передаваемые в запросе
- goods — массив с данными о заказаных продуктах, состоит из пар ID продукта, цена продукта:
- good_name — ID продукта в системе Expertam,
- good_sum — цена данного продукта в данном заказе, может отличатся от указанной в магазине, если этот параметр опущен — берётся цена из настроек продукта в магазине;
- bill_first_name — имя покупателя,
- bill_surname — фамилия покупателя,
- bill_otchestvo — отчество покупателя,
- bill_email — e-mail покупателя,
- bill_phone — телефон покупателя,
- bill_country — страна доставки,
- bill_region — регион доставки,
- bill_city — город покупателя,
- bill_address — адрес доставки,
- bill_postal_code — почтовый индекс,
- bill_kupon — купон скидки (как в настройках магазина),
- bill_tag — произвольный маркер(метка) заказа,
- bill_comment — комментарий к заказу,
- bill_ip — IP покупателя,
- bill_timer_kill — время отмены счета (true — время берется из настроек продукта; false — автоотмены счета не будет; время в формате UNIX timestamp — счет отменится именно в это время),
- bill_created — время создания заказа в формате UNIX timestamp,
- bill_domain — домен, на котором принят заказ.
- utm[utm_medium] — утм-параметр канал (не обязательно)
- utm[utm_source] — утм-параметр источник (не обязательно)
- utm[utm_campaign] — утм-параметр кампания (не обязательно)
- utm[utm_content] — утм-параметр объявление (не обязательно)
- utm[utm_term] — утм-параметр ключ (не обязательно)
- utm[aff_medium] — парнерский-параметр канал (не обязательно)
- utm[aff_source] — парнерский-параметр источник (не обязательно)
- utm[aff_campaign] — парнерский-параметр кампания (не обязательно)
- utm[aff_content] — парнерский-параметр объявление (не обязательно)
- utm[aff_term] — парнерский-параметр ключ (не обязательно)
Обязательными являются: bill_email и goods, а в нём good_name. Для физического товара отправляемого по почте так же обязательными будут данные для пересылки: bill_first_name, bill_surname, bill_country, bill_city, bill_address. Остальные параметры запроса отправляются на ваше усмотрение.
Если нужно передать информацию, что клиент пришел от партнера, то вам следует передавать 2 параметра utm[utm_medium] и utm[utm_source] следующим образом:
1 2 |
'utm[utm_medium]' => 'affiliate', //именно 'affiliate' и ничего другого 'utm[utm_source]' => 'username',// логин партнера в системе expertam |
Вместе с ними можно использовать партнерские utm_метки (utm[aff_…]). При этом указанный партнер обязательно должен быть участником партнерсой программы и данные метки (utm[aff_…]) будут отображаться только в его партнерском кабинете.
В параметре bill_domain рекомендуем передавать адрес Вашего сайта в системе Expertam или адрес привязанного сайта без указания протокола (https://). Если в этом параметре Вы не передаёте ничего, то при обращении к ссылке на оплату заказа $resp->result[‘link’] после вызова getOrderDetails Вам необходимо самостоятельно проконтролировать переход на нужный домен. В противном случае эта ссылка уже будет содержать необходимый протокол и домен для использования, например так:
1 |
header("Location: " . $resp->result['link']); |
Как работает
Вы формируете в своей системе заказа и передаёте его данные через обращение к функции API CreateOrder.
В ответ на запрос ваша система получит результат выполнения функции и номер созданного заказа в переменной result->bill_id.
Ответ кодирован в формате JSON. Подробнее смотрите «Ответы API сервиса».
Пример на PHP создания нового заказа
В примере добавляем заказ с двумя товарами, логин в системе «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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
// Логин в системе Expertam $user_rs['user_id'] = 'username'; // Ключ для формирования подписи. См. раздел API (ссылка в правом нижнем углу в личном кабинете) $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив купленных товаров $good1 = array( 'good_name' => 'oplata', // ID продукта в системе Expertam 'good_sum' => 1500, // Цена этого товара ); $good2 = array( 'good_name' => 'sales', // ID продукта в системе Expertam // Цену можно не указывать - тогда берётся из настроек продукта в системе ); // Формируем массив данных для передачи в API $send_data = array( 'goods' => array ($good1, $good2), 'bill_first_name' => "Имя", 'bill_surname' => "Фамилия", 'bill_otchestvo' => "Отчество", 'bill_phone' => "+7(928)777-77-77", 'bill_country' => "Россия", 'bill_region' => "Московская обл.", 'bill_city' => "Москва", 'bill_address' => "Кремль Д.1 Кв.3", 'bill_postal_code' => "345678", // почтовый индекс 'bill_kupon' => "skidka50", // купон скидки (как в настройках магазина) 'bill_tag' => 'AdWords', // произвольный маркер заказа 'bill_comment' => 'В подарочной коробке', // комментарий к продукту 'bill_ip' => '192.168.0.1', // IP покупателя 'bill_timer_kill' => true, // есть ли ограничение на время оплаты заказа, где: // false или 0 - счет автоматически не отменяется; // true или 1 - автоматическая отмена счета согласно настройкам в продукте; // при передаче времени в unixtime - автоотмена счета выставляется по этому времени. 'bill_created' => 1291001819, // время создания заказа UNIX timestamp 'bill_domain' => 'www.magazin.ru', // домен, на котором принят заказ 'utm[utm_medium]' => 'cpc', 'utm[utm_source]' => 'direct', 'utm[utm_campaign]' => 'Моя_Кампания', 'utm[utm_content]' => 'контент_123', 'utm[utm_term]' => 'my_label', ); // Формируем подпись к передаваемым данным $send_data['hash'] = GetHash($send_data, $user_rs); // Вызываем функцию создания нового заказа и декодируем полученные данные $resp = json_decode(Send('https://(ВАШ_МАГАЗИН).expertam.ru/api/CreateOrder', $send_data)); // проверяем ответ сервиса if(!CheckHash($resp, $user_rs)){ echo "Ошибка! Подпись к ответу не верна!"; exit; } if($resp->error_code == 0) echo "Заказ создан {$resp->result->bill_id}. Ответ сервиса: {$resp->error_text}"; 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; // подпись не верна } |