api

api


ПЕРЕДАЧА ЗАКАЗОВ И СТАТИСТИКА

Передача заказов и статистики (JavaScript)Позволяет добавлять заказы в M1-Shop, через javascript. Рекомендуется как самый простой метод интеграции, без специфичных знаний.

На все страницы (или на входную страницу и страницу с формой заказа) необходимо добавить javascript - код (между тегами <body>):

<script src="http://cplm1.ru/js/m1ref.js"></script> 
<script type="text/javascript"> 
var m1_product_id = PRODUCT_ID; 
var ref = WEBMASTER_ID; 
var script = document.createElement("script"); 
script.src = "https://m1-shop.ru/send_order/?ref="+ref+"&s="+getC("s")+"&w="+getC("w")+"&t="+getC("t")+"&p="+getC("p")+"&m="+getC("m")+"&product_id="+m1_product_id+'&out=1';
document.body.appendChild(script); 
</script>

где PRODUCT_ID - id товара в m1-shop, WEBMASTER_ID - id вебмастера в m1-shop.

В форме заказа поле ФИО должно иметь имя "name", а поле Телефон имя "phone", например:

<input placeholder="ФИО" maxlength="25" name="name" type="text"> 
<input placeholder="Телефон" maxlength="25" name="phone" type="text"> 

Также в форме должно быть два скрытых поля:

<input type="hidden" name="product_id" value="PRODUCT_ID"/>
где PRODUCT_ID - id товара<input type="hidden" name="ref" value="WEBMASTER_ID"/>

WEBMASTER_ID - id вебмастера в m1-shop Поле action="" нужно оставить пустым и добавить обработчик формы:

onsubmit="urlGen(this);" или так (с проверкой введенных данных):

onsubmit="if(this.name.value==''){alert('Введите Ваше имя!');return false}if(this.phone.value==''){alert('Введите Ваш номер телефона!');return false}urlGen(this);return true;"

Итак, должен получиться примерно такой код формы (упрощенный вариант, у вас могут быть свои стили или какие-то дополнительные поля):

<form action="" method="post" onsubmit="if(this.name.value==''){alert('Введите Ваше имя!');return 
false}if(this.phone.value==''){alert('Введите Ваш номер телефона!');return false}urlGen(this);return true;"> 
<input type="hidden" name="product_id" value="PRODUCT_ID"/> 
<input type="hidden" name="ref" value="WEBMASTER_ID"/> 
<input placeholder="ФИО" maxlength="25" name="name" type="text"> 
<input placeholder="Телефон" maxlength="25" name="phone" type="text"> 
<button type="submit">Заказать!</button> 
</form>

Где PRODUCT_ID - id товара

WEBMASTER_ID - id вебмастера в m1-shop

После отправки формы, если все данные переданы верно будет выводится сообщение "Спасибо за заказ", также это сообщение будет выводиться при повторном (дубликате) заказе, но сам заказ в таком случае добавлен не будет.

Если при настройке формы есть ошибки, будет выводиться сообщение "Ошибка в настройке формы, в форме указаны не все параметры"

Если в форме покупатель не указал ФИО или Телефон, будут выводиться соответствующие сообщения.


Передача заказов и статистики (JavaScript) со своей страницей Спасибо

Позволяет добавлять заказы в M1-Shop, через javascript. Рекомендуется как самый простой метод интеграции, без специфичных знаний.

На входную страницу необходимо добавить javascript - код, данный код нужен для учета кликов (если учет кликов вам не нужен в статистике можете его пропустить) размещать код нужно между тегами <body>:

<script src="http://cplm1.ru/js/m1ref.js"></script> 
<script type="text/javascript"> 
var m1_product_id = PRODUCT_ID; 
var ref = WEBMASTER_ID; 
var script = document.createElement("script"); 
script.src = "https://m1-shop.ru/send_order/?ref="+ref+"&s="+getC("s")+"&w="+getC("w")+"&t="+getC("t")+"&p="+getC("p")+"&m="+getC("m")+"&product_id="+m1_product_id+'&out=1';
document.body.appendChild(script); 
</script>

где PRODUCT_ID - id товара в m1-shop, WEBMASTER_ID - id вебмастера в m1-shop.

Далее идет код который отвечает за передачу заказа, его необходимо разместить на главной странице, куда попадает пользователь при входе и где есть форма заказа, размещать код нужно между тегами <body>:

        
<script type="text/javascript">

var QueryString = function () {
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        if (typeof query_string[pair[0]] === "undefined") {
            query_string[pair[0]] = decodeURIComponent(pair[1]);
        } else if (typeof query_string[pair[0]] === "string") {
            var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
            query_string[pair[0]] = arr;
        } else {
            query_string[pair[0]].push(decodeURIComponent(pair[1]));
        }
    }
    return query_string;
}();

/* user parameters */
var webmaster_id = WEBMASTER_ID;
var webmaster_api = 'WEBMASTER_API';
var product_id = PRODUCT_ID;

/* not change */
var client_ip = '127.0.0.1';
var client_s = '';
var client_w = '';
var client_t = '';
var client_p = '';
var client_m = '';

function sendData(client_name, client_phone) {
    $.ajax({
        type: 'POST',
        data: {
            ref: webmaster_id, 
            api_key: webmaster_api,
            product_id: product_id,
            phone: client_phone,
            name: client_name,
            ip: client_ip,
            s: client_s,
            w: client_w,
            t: client_t,
            p: client_p,
            m: client_m,
            referer: document.referrer,
            },
        url: 'https://m1-shop.ru/send_order/',
        success: function(data) {
            //console.log(data);
            data = JSON.parse(data);
            if (data.result == "ok") {
                //alert('Заказ создан, ID:' + data.id);
                window.location.replace("call.php?order_id=" + data.id + "&s=" + client_s + "&w=" + client_w + "&t=" + client_t + "&p=" + client_p + "&m=" + client_m);
            }
            else {
                //alert('Заказ НЕ создан, ответ: ' + data);
                window.location.replace("call.php?s=" + client_s + "&w=" + client_w + "&t=" + client_t + "&p=" + client_p + "&m=" + client_m);
            }
        },
        error: function(xhr, status, error) { // if error occured
            console.log(xhr.statusText, xhr.responseText, status, error);
            
            respjs = JSON.parse(xhr.responseText);
            //alert('Заказ НЕ создан, ответ: ' + respjs.message);
            window.location.replace("call.php?s=" + client_s + "&w=" + client_w + "&t=" + client_t + "&p=" + client_p + "&m=" + client_m);            //$(placeholder).append(xhr.statusText + xhr.responseText);
            //$(placeholder).removeClass('loading');
        }
    });
    return false;
};


$(document).ready(function() {

    client_s = QueryString.s;
    client_w = QueryString.w;
    client_t = QueryString.t;
    client_p = QueryString.p;
    client_m = QueryString.m;

    $.getJSON('https://ipapi.co/json/', function(data) {
        //console.log(JSON.stringify(data, null, 2));
        json_data = data;
        client_ip = json_data.ip;
        //console.log(client_ip);
    });

    $('form').submit(function() {
        $('input[name=name]', this).val($.trim($('input[name=name]', this).val()));
        if (!$('input[name=name]', this).val()) {
            alert('Укажите корректные ФИО!');
            return false;
        }

        if (!$('input[name=phone]', this).val() || $('input[name=phone]', this).val().length < 7) {
            alert('Укажите корректный телефон!');
            return false;
        }
        sendData($('input[name=name]', this).val(), $('input[name=phone]', this).val());
        return false;
    });
});
</script>
        
        

В форме заказа поле ФИО должно иметь имя "name", а поле Телефон имя "phone", например:

<input placeholder="ФИО" maxlength="25" name="name" type="text"> 
<input placeholder="Телефон" maxlength="25" name="phone" type="text"> 

WEBMASTER_ID - id вебмастера в m1-shop

'WEBMASTER_API' - API-ключ вебмастера в m1-shop (из личного кабинета)

PRODUCT_ID - id товара

call.php - это ваша страница Спасибо, она должна находиться в той же директории что и основной скрипт, но можете указать другую или вообще указать страницу на другом сайте (напр.: http://site.xyz/spasibo.html)

После отправки формы, если все данные переданы верно будет редирект на вашу страницу Спасибо.

Если в форме покупатель не указал ФИО или Телефон, будут выводиться соответствующие сообщения.

Другие способы отправки заказов и получения статусов


Все взаимодействие по API происходит по протоколу HTTPS с помощью GET и POST запросов. Во всех методах системы используются два обязательных параметра:

  1. ref ID - вебмастера в системе (можно получить в профиле вебмастера)
  2. api_key - API-ключ из профиля вебмастера

Остальные параметры зависят от метода API, которым вы хотите воспользоваться.

Внимание! Рекомендуем отправлять параметры POST запросами, т.к. GET запросы имеют ограничения по размеру

Добавление заказов

Для создания нового заказа необходимо отправить GET или POST запрос на URL:

https://m1-shop.ru/send_order/

Доступные параметры (обязательные выделены жирным)

  • ref - ID-вебмастера в системе (можно получить в профиле вебмастера)
  • api_key - API-ключ из профиля вебмастера
  • product_id - ID товара в системе M1-shop
  • phone - Телефон покупателя
  • name - ФИО покупателя
  • ip - IP покупателя
  • s - Субаккаунт (метка S)
  • w - Метка W
  • t - Метка T
  • p - Метка P
  • m - Метка M
  • address - Адрес покупателя
  • referer - Referer покупателя (адрес откуда пришел)

Пример запроса:

https://m1-shop.ru/send_order/?ref=<Webmaster_ID>&api_key=<APIKey>&product_id=<Product_ID>&ip=192.168.0.1&s=s1&w=w2&t=t3&p=p4&m=m5&phone=+7(901)999-99-99&name=Олег Иванов

В случае успешного запроса вы получите ответ в формате JSON с ID нового заказа в системе M1-shop. В дальнейшем вам потребуется ID заказа для получения статусов.

Пример ответа сервиса:

{"result":"ok","id":237629} - заказ успешно добавлен, ID заказа в системе M1-shop 237629

Сообщения об ошибках:

{"result":"error","message":"no GET or POST params"} - Не переданы параметры запроса
        {"result":"error","message":"API-key incorrect format"} - Не передан API-ключ вебмастера
        {"result":"error","message":"No Webmaster ID"} - Не передан ID вебмастера
        {"result":"error","message":"No Product ID"} - Не передан ID товара
        {"result":"error","message":"No Phone"} - Не передан телефон клиента
        {"result":"error","message":"No Name"} - Не передано ФИО клиента
        {"result":"error","message":"this order exist"} - Данный заказ уже был добавлен (фильтр)
        

Если не будут переданы обязательные параметры ФИО и Телефон, то система будет считать, что это переход, а не заказ. В таком случает ответ будет следующим:

{"result":"visit_ok","id":0} - Переданы не все параметры, заказ не добавлен, записано посещение.

Получение статусов заказов

Для получения статусов заказа необходимо передать в параметр id список всех ID заказов через запятую на URL:

https://m1-shop.ru/get_order_status/

Доступные параметры (обязательные выделены жирным):

  • ref - ID-вебмастера в системе (можно получить в профиле вебмастера)
  • api_key - API-ключ из профиля вебмастера
  • id - Список ID заказов M1-shop (через запятую)

Пример запроса:

https://m1-shop.ru/get_order_status/?ref=1234&api_key=54ef2bc66e63fe23c87c3d20054f0a76&id=231233,231234,231235

В случае успешного запросы вы получите ответ в формате JSON с массивом всех перечисленных заказов и статусами к ним.

Пример ответа сервиса:

{"result":[{"m1_id":"231233","extenal_id":"4203252","status":0,"trash":0,"comment":"","callcenter_comment":"просил перезвонить"},{"m1_id":"231234","extenal_id":"4203209","status":1,"trash":0,"comment":"зеленого цвета","callcenter_comment":"отправлен"},{"error":"order not exist","m1_id":231235,"extenal_id":"4203220","status":2,"trash":0,"comment":"","callcenter_comment":"отказался"}]} - выводится массив с информацией по заказам

По каждому заказу доступны следующие параметры:

  • m1_id - ID заказа в системе M1-shop
  • extenal_id - ID заказа в вашей системе
  • status - статус заказа
  • trash - Треш (1 - да, 0 - нет)
  • comment - комментарий к заказу
  • callcenter_comment - комментарий к заказу от колцентра
  • sale - Заказ со скидкой (1 - да, 0 - нет)

Где поле status может быть равен от 0 до 4:

  • 0 - «В обработке»
  • 1 - «Подтвержден»
  • 2 - «Отменен»

Если определенного заказа нет, или он не принадлежит вебмастеру будет передана ошибка:

{"error":"order not exist","m1_id":231235,"extenal_id":"","status":0,"trash":0,"comment":"","callcenter_comment":"","sale":0}]}

Сообщения об ошибках:

{"result":"error","message":"order id error"} - Не переданы ID заказов
        {"result":"error","message":"webmaster id - incorrect format"} - Не передан ID вебмастера
        {"result":"error","message":"API-key incorrect format"} - Не передан API-ключ вебмастера
        {"result":"error","message":"API-key wrong"} - API-ключ или ID вебмастера неверный

Пример скрипта для отправки заказа из формы:

В форме должны быть два поля: name, phone

В данном скрипте параметры которые необходимо указать:

$ref = 54321; - id вебмастера

$api_key = '11229c29e65340b45637822a41332a'; API-ключ из личного профиля

$product_id = 1234; ID оффера (из списка офферов)

<?php
//пример скрипта call.php на который отправляются данные из формы лендинга m1-shop.ru

function get_page($url, $use_curl=true) {
    if ($use_curl && function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51");
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);

        $page = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
    } else {
        $page = file_get_contents($url);
        $info['http_code'] = 0;
    }
    return array($page, $info['http_code']);
}

//данные из формы
if (empty($_POST['name']) && empty($_POST['phone'])) {
    die('Ошибка: Вернитесь назад и укажите ваши контакты');
}
$name = urlencode($_POST['name']);
$phone = $_POST['phone'];
//оставить только цифры в телефоне
$phone = preg_replace("/[^0-9]/", "", $phone);

//метки
$s='123';
$w='';
$t='';
$p='';
$m='';

$ref = 54321;
$api_key = '11229c29e65340b45637822a41332a';
$product_id = 1234;
$ip = $_SERVER['SERVER_ADDR'];

$url = 'http://m1-shop.ru/send_order/?ref=' . $ref . '&api_key=' . $api_key . '&product_id=' . $product_id . '&ip=' . $ip . '&s=' . $s . '&w=' . $w . '&t=' . $t . '&p=' . $p . '&m=' . $m . '&phone=' . $phone . '&name=' . $name;

//отправка запроса и получение ответа
list($response, $code) = get_page($url);

//echo $url . "!" . $response . "!" . $code;
$jresp = json_decode($response);

$order_id = 0;
if ($jresp->result == 'ok') {
    $order_id = intval($jresp->id);
    if ($order_id > 0) {
        //echo "заказ успешно добавлен, ID заказа в системе M1-shop " . $order_id;
        //выводим страницу "спасибо" с номером заказа
        echo "Поздравляем! Ваш заказ принят! Ваш заказ № " . $order_id;
    }
} else if ($jresp->result == 'visit_ok') {
    echo "Переданы не все параметры, заказ не добавлен, записано посещение.";
} else {
    echo "Ошибка во время запроса: " . $response;
}
?>

Если необходимо "прокидывать" метки, т.е. те метки с которыми пришел посетитель на сайт, их же отправить в заказ, то можно сделать следующее:

в форме на сайте добавить несколько скрытых полей (в любом месте между тегами формы <form>...</from>)

<input type="hidden" name="s" value = "<?php echo $_GET['s']; ?>" />
<input type="hidden" name="w" value = "<?php echo $_GET['w']; ?>" />
<input type="hidden" name="t" value = "<?php echo $_GET['t']; ?>" />
<input type="hidden" name="p" value = "<?php echo $_GET['p']; ?>" />
<input type="hidden" name="m" value = "<?php echo $_GET['m']; ?>" />

Таким образом, создаем невидимые поля в форме, в которые выводим параметры из строки браузера (можно проверить прописались метки в форму или нет, для этого нужно открыть код страницы в браузере, и в значениях полей формы соответствующих меток должны быть их значения, если они конечно переданы в строке браузера).


Если метки есть, то в скрипте нужно заменить блок меток, на:

//метки
$s=$_POST['s'];
$w=$_POST['w'];
$t=$_POST['t'];
$p=$_POST['p'];
$m=$_POST['m'];

Теперь в заказе должны передаваться метки которые были переданы при переходе на сайт.


Получение статистики

Данный метод позволяет получить всю статистику в системе M1-shop за определенный день или по определенной метки.

Доступные параметры (обязательные выделены жирным):

  • ref - ID-вебмастера в системе (можно получить в профиле вебмастера)
  • key - API-ключ из профиля вебмастера
  • start_date – Дата начала периода в формате ГГГГ-ММ-ДД
  • end_date – Дата окончания периода в формате ГГГГ-ММ-ДД
  • filter – Метка по которой необходимо получить статистику (s, w, t)

Если в параметрах запроса не указан период, статистика буде выводится за последние семь дней. Максимальный период, за который можно получить статистику равен трем месяцам. Если в отсутствует параметр filter то статистика будет выводится по дням.

Пример запроса:

https://m1-shop.ru/get_api_statistics/?start_date=2016-06-28&end_date=2016-07-28&ref=1234&key=54ef2bc66e63fe23c87c3d20054f0a76

Пример ответа сервиса:

{"2016-06-28":{"visit":"700","uniq":"598","cr":3.85,"epc":19.25,"all":"54","approve":"23","inprogress":"0","cancel":"31","trash":"19","money_total":"27000","money_approve":"11500","money_inprogress":"0","money_cancel":"15500"},"2016-06-29":{"visit":"519","uniq":"454","cr":3.3,"epc":16.5,"all":"26","approve":"15","inprogress":"0","cancel":"11","trash":"24","money_total":"12950","money_approve":"7500","money_inprogress":"0","money_cancel":"5450"},"2016-06-30":{"visit":"383","uniq":"339","cr":3.83,"epc":19.15,"all":"30","approve":"13","inprogress":"0","cancel":"17","trash":"13","money_total":"14950","money_approve":"6500","money_inprogress":"0","money_cancel":"8450"}

Параметры ответа:

  • visit - Количество переходов
  • uniq - Количество уникальных посещений
  • cr - Коэффициент CR%
  • epc - Коэффициент EPC
  • all - Всего заказов
  • approve - Количество подтвержденных заказов
  • inprogress - Количество заказов в обработке
  • cancel - Количество отмененных заказов
  • trash - Количество заказов попавших в trash
  • money_total - Всего денежных стредств
  • money_approve - Подтвержденных заказов на сумму
  • money_inprogress - Заказов в обработке на сумму
  • money_cancel - Отмененных заказов на сумму

Сообщения об ошибках:

{"result":"error","message":"User ID does not exist "} - Не передан ID вебмастера
{"result":"error","message":"API key empty "} - Не передан API-ключ вебмастера
{"result":"error","message":"API key incorrect "} - API-ключ или ID вебмастера неверный

Получение офферов

Позволяет получать информацию по офферам в системе (цели, гео-таргетинг, разрешенные виды траффика, название, отчисления)

На URL https://m1-shop.ru/offers_export_api/ методом GET необходимо отправить запрос

Параметры:

  • webmaster_id ID-вебмастера в системе
  • api_key API-ключ из профиля вебмастера

Пример запроса:

https://m1-shop.ru/offers_export_api/?webmaster_id=<WebmasterID>&api_key=<APIKey>

Ответ будет в формате JSON, структура приведена нижеПример ответа:

Array
(
    [0] => 
        (
            [id] => 264
            [name] => Casio Edifice Kleine
            [price_ru] => 1990 р.
            [deductions_ru] => 550
            [price_ua] => 
            [deductions_ua] => 
            [price_by] => 
            [deductions_by] => 
            [price_kz] => 
            [deductions_kz] => 
            [target] => Array
                (
                    [0] => Россия
                )

            [img] => https://m1-shop.ru/uploads/offers/offer_img100x100/20150424161338950.png
            [cr] => 443
            [epc] => 1.24
        )

    [1] => 
        (
            [id] => 265
            [name] => Casio Edifice WR
            [price_ru] => 2390 р.
            [deductions_ru] => 630
            [price_ua] => 
            [deductions_ua] => 
            [price_by] => 
            [deductions_by] => 
            [price_kz] => 
            [deductions_kz] => 
            [target] => Array
                (
                    [0] => Россия
                )

            [img] => https://m1-shop.ru/uploads/offers/offer_img100x100/20150424163149486.png
            [cr] => 172
            [epc] => 3.65
        )

        ...
        
        
    [34] => 
        (
            [id] => 200
            [name] => Возбудитель Silver Fox (KZ)
            [price_ru] => 
            [deductions_ru] => 
            [price_ua] => 
            [deductions_ua] => 
            [price_by] => 
            [deductions_by] => 
            [price_kz] => 2990 тг.
            [deductions_kz] => 420
            [target] => Array
                (
                    [0] => Казахстан
                )

            [img] => https://m1-shop.ru/uploads/offers/offer_img100x100/20150304144303772.png
            [cr] => 0
            [epc] => 0
        )
)

Описание полей в массиве оффера:

  • id - ID оффера в системе
  • name - Название оффера в системе
  • price_ru - Цена товара (RU) в местной валюте (если оффер доступен для данной Гео-зоны)
  • deductions_ru - Отчисления вебмастеру (RU) в рублях (если оффер доступен для данной Гео-зоны)
  • price_ua - Цена товара (UA) в местной валюте (если оффер доступен для данной Гео-зоны)
  • deductions_ua - Отчисления вебмастеру (UA) в рублях (если оффер доступен для данной Гео-зоны)
  • price_by - Цена товара (BY) в местной валюте (если оффер доступен для данной Гео-зоны)
  • deductions_by - Отчисления вебмастеру (BY) в рублях (если оффер доступен для данной Гео-зоны)
  • price_kz - Цена товара (KZ) в местной валюте (если оффер доступен для данной Гео-зоны)
  • deductions_kz - Отчисления вебмастеру (KZ) в рублях (если оффер доступен для данной Гео-зоны)
  • target - Массив Гео для которых доступен офферМассив:Россия
  • Украина
  • Беларусь
  • Казахстан
  • img - Картинка товара
  • cr - CR оффера
  • epc - EPC оффера


Report Page