Click API Client

Доступно только в профессиональной и бизнес редакции

PHP-клиент для работы с Click API v3.

Возможности

  • Передача информации о текущем посетителе в Keitaro;
  • Передача параметров из адресной строки;
  • Обработка и выполнение инструкций Keitaro: показ текста, выполнение редиректа;

Использование

  1. Зайдите в Keitaro, на страницу кампании;
  2. Перейдите в окно «Интеграция»;
  3. Выберите «Click API Client».
  4. Скачайте файл kclick_client.php и положите его в директорию вашего сайта.
  5. Затем скопируйте код и вставьте в шаблон сайта, в самом начале шаблона, до и DOCTYPE
  6. Следуя инструкции, установите код на вашем сайте.

Инициализация клиента

require_once 'kclick_client.php'; // файл должен быть загружен в туже директорию, что и страница
$client = new KClickClient('АДРЕС API', 'токен кампании');

Описание методов

Метод Описание
$client->sendAllParams(); Передача параметров из адресной строки
$client->forceRedirectOffer(); Если в потоке был выбран оффер, то выполнить редирект на него. В ином случае нужно использовать getOffer()
$client->params('param1=c&param2=b'); Передача строки параметров
$client->param('extra_param_5', '123'); Альтернативный способ передачи параметра
$client->sendUtmLabels(); Передача из адресной строки только utm-меток
$client->debug(); Показ отладочной информации
$client->currentPageAsReferrer(); Отправить адрес текущей страницы в качестве реферера
$client->keyword('KEYWORD'); Использование значения 'KEYWORD' в качестве ключевика
$client->execute(); Выполнение инструкций Keitaro и с продолжением выполнения кода страницы
$client->executeAndBreak(); Выполнение инструкций Keitaro с остановкой выполнения страницы. Если передано действие в потоке «Ничего не делать», остановки не произойдет.
$client->getOffer(); Получение ссылки на оффер. В кампании должен быть поток со схемой «Офферы», иначе результат 'no_offer'.
$client->getBody(); Получение содержимого 'body'.
$client->getHeaders(); Получение заголовков (headers)
$client->isUnique(level); Статус уникальности (варианты level: stream, campaign, global)
$client->isBot(); Статус бота
$client->restoreFromQuery() Ловит параметры _subid и _token из запроса и не заводит нового клика
$client->restoreFromSession() Восстанавливает предыдущее посещение из сессии и не заводит нового клика

Как сделать ссылку на оффер?

Пример использования KClickClient для генераци ссылки на оффер:

<?php
require_once 'kclick_client.php'; 
$client = new KClickClient('http://example.con/api.php', 'token');
$offerLink = $client->getOffer();
?>
<html>
...
<body>
<a href="<?php $offerLink ?>">CLICK!</a>
</body>
</html>

В потоке должна использоваться схема «Лендинги» или «Офферы».

Если нужно вызвать определенный оффер, передавайте параметр offer_id:

$offerLink = $client->getOffer(array('offer_id' => 123));

Отправка постбека

Для отправки постбека, вам потребуется subid, его можно получить через $client->getSubid(); и положить в сессию:

...
$_SESSION['subid'] = $client->getSubid();

На странице, с которой нужно отправляется постек, берите subid из сессии:

$url = 'http://tds/POSTBACK_KEY/postback?payout=100&status=sale&subid=' . urlencode($_SESSION['subid']);
file_get_contents($url);

Как подключить к Wordpress?

Смотрите страницу WordPress плагин.

Как сделать, чтобы после кода не загружался сайт?

Замените

$client->execute();

на

$client->executeAndBreak();

Как передать title в качестве ключевика?

Для этого вы должны знать как получить title в php скриптах. Передавать ключевик нужно через метод $client->keyword('...'):

$client->keyword($myTitle);

$myTitle - это лишь пример того, как содержимое переменной передается в качестве ключевика.

Как показывать HTML код из потока в определенном месте?

1. Удалите строки:

$client->execute();

и

$client->executeAndBreak();

2. Добавьте:

$GLOBALS['client'] = $client;

3. В нужном месте сайта вставьте:

<?php echo $GLOBALS['client']->getContent() ?>

Как решать проблемы с Click Client?

В первую очередь проверьте, доходят ли клики до трекера. Для этого смотрите лог трафика и отчет Клики кампании.

Если кликов нет. Добавьте в конец кода интеграции:

$client->showLog();

После $client->execute() и $client->executeAndBreak().

Это выведет отладочную информацию прямо на страницу.

Если лога нет, добавьте еще перед кодом интеграции (после <?php):

ini_set('display_errors', 'on');
error_reporting(7);

Как оставлять пользователя на сайте при срабатывании определенного потока?

Используйте в потоке действие «Ничего не делать».

Как проверить, считает ли Keitaro пользователя ботом?

/*
код инициализации клиента
*/
if ($client->isBot()) {
   echo 'bot';
} else {
   echo 'not bot';
}

Почему не происходит редиректа на оффер?

По умолчанию, оффер подключается как ссылка с помощью $client->getOffer(). Чтобы выполнялся редирект оффера, добавьте строку:

$client->forceRedirectOffer();	

Как указать путь до kclick_client.php при наличии папок?

Посмотрите директорию вашего сайта и указывайте абсолютный путь:

require '/путь_до_сайта/kclick_client.php';
...

Почему на сайте виден php-код и сам он не выполняется?

1. Убедитесь, что имя файла, где установлен код с расширением .php

2. Сам код должен быть обернут в теги:

<?php 
....код.... 
?>

Почему в браузере ошибка TOO_MANY_REDIRECTS

Это значит, что один ваш поток отправляет на сайт, где снова срабатывает проверки и снова его отправляет редиректом. Отредактируйте поток с редиректом на сайт. Смените схему на Действие и выберите «Ничего не делать».

Почему теряется трафик и не на всех устройствах срабатывает HTTP-редирект?

Причина в том, что файл index.php сохранен в utf-8 с заголовком BOM.

Как выявить: смотрите нет ли пробела или какого-то символа перед кодом.

Как исправить: Удалить этот символ. Если не получится, пересохранить в «UTF-8 without BOM».

Важно! Не все редакторы видят этот символ.

Как передать subid в скрипте m1-shop.ru используя KClickClient?

SubId можно подключить через метода $client->getSubId(). Вот пример его использования в скрипте m1-shop:

<?php
require_once 'kclick_client.php'; 
$client = new KClickClient('http://example.con/api.php', 'token');
?>
<html>
...
<script type="text/javascript"> 
var m1_product_id = 123; 
var ref = 123; 
var script = document.createElement("script"); 
script.src = "http://m1-shop.ru/send_order/?ref="+ref+"&s=<?php echo $client->getSubId() ?>&w="+getC("w")+"&t="+getC("t")+"&p="+getC("p")+"&m="+getC("m")+"&product_id="+m1_product_id+'&out=1'; 
document.body.appendChild(script); 
</script> 

И код отправки заказа:

<script type="application/javascript">
function urlGen(f){ 
var i1 = 'http://m1-shop.ru/send_my_order/'; 
var i2 = '<?php echo $client->getSubId(); ?>';
var i3 = getC("w"); 
var i4 = getC("t"); 
var i5 = getC("p"); 
var i6 = getC("m"); 
f.action = i1 + '?s=' + i2 + '&w=' + i3 + '&t=' + i4 + '&p=' + i5 + '&m=' + i6; 
return true; 
} 
</script>

Как получить subid на второстепенных страницах?

Содержимое subid сохравняется в сессию:

 $_SESSION['_subid'];

Вы можете использовать для постановки в своих скриптах:

session_start(); // если сессия не использовалась ранее, то лучше запустить ее.
...
$data = array(
 'sub1' => $_SESSION['sub_id'],
 'name' => $_POST['name'],
  ...
);