Содержание
Вы можете изменить параметры существующего у вас в магазине продукта, формируя запрос к API сервиса программными методами.
За один вызов функции изменяется один продукт.
Запрос передаётся методом POST в формате URLencode на адрес: https://username.expertam.ru/api/UpdateGood
где username — это логин пользователя в системе, а так же его домен 3-его уровня в сервисе Expertam.
Параметры передаваемые в запросе
- good_name — идентификатор существующего продукта (обязательно),
- good_title — название продукта,
- parent_id — ID категории, в которую добавится продукт, категория уже должна существовать,
- good_sum — цена продукта в рублях, обязательное поле или запишется ноль
- good_api_url_notif — URL для оповещений по api при оплате счета (подробнее в статье),
- good_api_url_new_order — URL для оповещений по api при оформлении счёта (подробнее в статье),
- good_success_link — URL после успешной оплаты, страница, на которую будет перенаправлен покупатель после успешной оплаты,
- good_client_rassilki — идентификаторы групп через запятую, куда попадут покупатели после заказа, если таких групп нет — они будут созданы,
- good_nalozh_only — (только для физического товара) высылать продукт наложенным платежом сразу после формирования заказа: 0 — нет, 1 — да
- good_quickpost_article — артикул (идентификатор) товара в службе доставки QuickPost,
- good_post_service — служба, которая занимается доставкой, возможные значения: none — доставляю сам, quickpost — QuickPost, rps — RussianPostService
- good_only_countries — идентификаторы стран, куда возможна доставка продукта (через запятую, без пробелов!), если опущен — доставка без ограничений, идентификаторы можно посмотреть здесь.
- good_download — Ссылка для скачивания продукта, если продукт физический, то возможно его цифровой копии,
- good_mail_subject — заголовок письма, которое получит покупатель после оплаты,
- good_mail_format — формат письма html или text,
- good_mail_body — html-код письма, если выше выбран формат html,
- good_mail_text — текстовый вариант письма после оплаты, если выше выбран формат text
- good_partner_fee — сумма комиссионных партнёра первого уровня в рублях
- good_partner_fee_perc — комиссионные партнёра первого уровня в % (процентах)
- good_partner_pfee — сумма комиссионных партнёра второго уровняв рублях
- good_partner_pfee_perc — комиссионные партнёра второго уровня в % (процентах)
- good_partner_show — показывать ли этот продукт в рекламных материалах партнера? возможные значения: 0 — нет, 1 — да
- good_partner_SL_link — URL страницы с описанием продукта (продающее письмо, Sales Letter),
- good_partner_addition_link — URL страницы с дополнительными рекламными материалами
- good_partner_text — информация для партнёров, короткая заметка про продукт, которая появится в рекламных материалах у партнера,
- good_pay_text — html-код для страницы оплаты заказа, здесь возможно использование тегов: #IMAGE#, #PRODUCT#, #PRICE#, #USD#,
- good_timer — ограничение по времени для оплаты заказа: 0 — нет, 1 — да
- good_timer_unit — величина ограничения, возможные значения: min — в минутах, hour — в часах, day — в днях,
- good_timer_duration — значение продолжительности ограничения, число определяющее сколько минут, дней или часов есть на оплату заказа,
- good_use_short — использовать короткую ссылку для страницы заказа? 0 — нет, 1 — да,
- good_rashod — расходы на изготовление и отправку продукта в рублях, для более точного ведения финансовой статистики,
- good_rashod_perc — расходы в процентах от цены продукта (например налоги и т.д.),
- good_publish — отображать продукт в каталоге продуктов: 0 — нет, 1 — да.
Обязательным полем является только: good_name. Остальные параметры запроса остаются на ваше усмотрение.
ID категории можно получить в магазине в «Категориях» в разделе редактирования продуктов.
Как работает
Вы передаёте ID продукта и настройки продукта, которые заместят уже существующие в функцию API UpdateGood.
В ответ на запрос ваша система получит результат выполнения функции. Ответ кодирован в формате JSON. Подробнее смотрите «Ответы API сервиса».
Пример на PHP изменения продукта
В примере изменяем настройки продукта с ID «super_tovar», логин в системе «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 |
// Логин в системе Expertam $user_rs['user_id'] = 'username'; // Ключ для формирования подписи. См. раздел API (ссылка в правом нижнем углу в личном кабинете) $user_rs['user_rps_key'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Формируем массив данных для передачи в API $send_data = array( 'good_name' => 'super_tovar', 'good_title' => 'Супер набор из 10 DVD по приготовлению яичницы', // название продукта 'parent_id' => 111, // ID категории, в которую добавится продукт 'good_sum' => 999887, // цена продукта в рублях, обязательное поле или запишется ноль 'good_api_url_notif' => 'https://мойсайт.рф/мой_скрипт_приёма_заказов.php', // URL для оповещений по api об оплаченном счете 'good_api_url_new_order' => 'https://мойсайт.рф/мой_скрипт_оформления_заказов3.php', // URL для оповещений по api об оформленном счете 'good_success_link' => 'https://мойсайт.рф/спасибо_за_покупку.php', // URL после успешной оплаты 'good_client_rassilki' => 'second, clients_super_tovar', // Идентификаторы групп через запятую, куда попадут покупатели после заказа 'good_nalozh_only' => 0, // только для физического товара - высылать продукт наложенным платежом сразу после формирования заказа: 0 - нет, 1 - да 'good_quickpost_article' => 12345678, // артикул (идентификатор) товара в службе доставки QuickPost 'good_post_service' => 'quickpost', // служба, которая занимается доставкой: 'none' - доставляю сам, 'quickpost' - QuickPost, 'rps' - RussianPostService 'good_only_countries' => 'RUS,UKR', // ограничение по странам, куда возможна доставка продукта (через запятую без пробелов!) 'good_download' => 'https://мойсайт.рф/downloads/yaichnica_10dvd.zip', //Ссылка для скачивания 'good_mail_subject' => 'Спасибо за покупку "Супер набора из 10 DVD по приготовлению яичницы"', // заголовок письма после оплаты 'good_mail_format' => 'text', // формат письма 'html' или 'text' 'good_mail_body' => '', // html-код письма 'good_mail_text' => 'Спасибо за покупку! Ссылка для скачивания: {$download}', // текстовый вариант письма после оплаты 'good_partner_fee' => 90, // комиссионные партнёра первого уровня в рублях 'good_partner_fee_perc' => '5', // комиссионные партнера первого уровня в % 'good_partner_pfee' => 10, // комиссионные партнёра второго уровня в рублях 'good_partner_pfee_perc' => '5', // комиссионные партнёра второго уровня в % 'good_partner_show' => 1, // показывать ли в рекламных материалах партнера: 0 - нет, 1 - да 'good_partner_SL_link' => 'https://мойсайт.рф/яичница_это_вкусно.html', // URL страницы с описанием продукта (продающее письмо, Sales Letter) 'good_partner_addition_link'=> 'https://мойсайт.рф/banners.html', // URL страницы с дополнительными рекламными материалами 'good_partner_text' => 'Рекламируйте быстрее, это хорошо покупают.', // Информация для партнёров 'good_pay_text' => ' |
Оформление заказа
#PRODUCT#
#PRICE#
‘, // html-код для страницы оплаты заказа ‘good_timer’ => 1, // ограничение по времени для оплаты заказа: 0 — нет, 1 — да ‘good_timer_unit’ => ‘day’, // величина ограничения: ‘min’ — в минутах, ‘hour’ — в часах, ‘day’ — в днях ‘good_timer_duration’ => 2, // значение продолжительности ограничения (2 дня) ‘good_use_short’ => 0, // использовать короткую ссылку для страницы заказа? 0 — нет, 1 — да ‘good_rashod’ => 10, // расходы на изготовление и отправку продукта в рублях ‘good_rashod_perc’ => 6, // расходы в процентах от цены продукта (налоги и т.д.) ‘good_publish’ => 1, // отображать продукт в каталоге продуктов: 0 — нет, 1 — да ); // Формируем подпись к передаваемым данным $send_data[‘hash’] = GetHash($send_data, $user_rs); // Вызываем функцию изменения настроек продукта и декодируем полученные данные $resp = json_decode(Send(‘https://username.expertam.ru/api/UpdateGood’, $send_data)); // проверяем ответ сервиса if(!CheckHash($resp, $user_rs)){ echo «Ошибка! Подпись к ответу не верна!»; print_r($resp); exit; } if($resp->error_code == 0) echo «Продукт обновлён. Ответ сервиса: {$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; // подпись не верна }