Доброго времени суток, арбитраны. В чатах вижу у многих проблема с тем, что в статистике ФБ и партнерки случаются разногласия. То в ФБ больше лидов, а в ПП — меньше, и наоборот. В этой статье рассмотрю один из вариантов сбора лидов себе, с помощью которого можно проверить ПП на честность (прозвонив лиды), либо найти ошибку у себя на связке или просто подсобрать базу лидов на всякий случай. Мало ли пригодится)

Первый вопрос: куда складировать заявки? Есть несколько вариантов:

  1. База данных (рекомендуется)
  2. txt, xls и любые другие файлы
  3. Google таблицы
  4. В телегу себе
  5. Еще хрен пойми куда

В этой статье я расскажу про 2 пункт: сбор лидов в файл. Это самая изи тема для затравочки)

Ищем обработчик

Каждая партнерка, при формировании потока, позволяет вебу выгрузить архивом связку либо отдельно скачать файлик обработчик лидов. Называться он может как угодно: api.php, order.php, sendlead.php и тд и тп. Вот его то мы и будем апгрейдить.

private function getRequestPrams()
    {
        return [
            'referer'      => $_SERVER['HTTP_REFERER'],
            'ip'           => $_SERVER['REMOTE_ADDR'], // IP адрес ( Поле обязательное )
            'name'         => $_POST['name'],          // Имя ( Поле обязательное )
            'phone'        => $_POST['phone'],         // Телефон ( Поле обязательное )
            'user_agent'   => $_SERVER['HTTP_USER_AGENT'],
            'country_code' => $_POST['country'], //страна для обзвона ( Поле обязательное ) в формате UA, IT,
            'sub_id1'      => $_POST['sub_id1'],
            'sub_id2'      => $_POST['sub_id2'],
            'sub_id3'      => $_POST['sub_id3'],
            'utm_source'   => $_POST['utm_source'],
            'utm_content'  => $_POST['utm_content'],
            'utm_campaign' => $_POST['utm_campaign'],
            'utm_term'     => $_POST['utm_term'],
            'utm_medium'   => $_POST['utm_medium'],
            'flow_uuid'    => FLOW_UUID
        ];
    }

public function send($apiKey)
    {
        $url     = 'https://pizdataya-partnerka.ru/leads/?api_key=' . $apiKey;
        $headers = [
            'Content-Type: application/json',
        ];

        $params = $this->getRequestPrams();

        $json_str = json_encode($params);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_HEADER, false);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $json_str);
        $output = curl_exec($ch);

        curl_close($ch);

        $response = json_decode($output, true);

        if ($response['success'] === true) {
            header(
                'Location: ./confirm.php'
            );
        } else {
            header('Location: ./error.php');
        }

        return $output;
    }

На первом попавшемся примере находим функцию отправки лида send(). Так же тут есть функция getRequestPrams() — она отвечает за формирование массива данных по отправляемому лиду. Это удобно тк мы уже можем понять какие нам переменные вынимать для записи в файл. Если же у вас обработчик будет другой, то найти имена переменных не проблема. Идем на проклу или ленд и смотрим какие данные из инпутов уходят в обработчик. Нас интересуют пока только 2 инпута — ФИО и Телефон. Находим их.

<div class="name-i">
  <input name="name" placeholder="Мое имя" required="">
</div>
<div class="phone-i">
  <input class="phone-i" name="phone" placeholder="Мой телефон" required="" type="tel">
</div>

Нас интересует параметр NAME у каждого из инпутов. В представленном выше варианте это name=»name» и name=»phone». Значит в обработчике будем отлавливать эти параметры из глобального массива $_POST (если у вас обработчик отличается от представленного в статье) и сохранять себе.

Пишем в файл

Допишем в обработчик простую функцию:

function writeLeadsFile($dataLead)
{
  // получаем значения фио и номера из массива
  $name = $dataLead['name'];
  $phone = $dataLead['phone'];

  // создаем метку времени приема лида, чтобы потом свериться с ПП или по трекеру чекнуть
  $date = date("Y-m-d H:i:s");

  // если пременные name и phone пустые - выходим 
  if(!isset($name) and !isset($phone)) {
     exit;
  }

  // создаем строку для записи
  $strLeads = $date . '|' . $name . '|' . $phone . PHP_EOL;

  // пишем в файлик наши лидочки
  file_put_contents("myleads/leads", $strLeads, FILE_APPEND);
}

Функция file_put_contents создаст вам папку myleads в корне сайта и сложит туда лиды в стопочку. Данные в функцию мы положим при ее вызове из массива, который сформирует скрипт обработчика лидов от партнерки. Вот как в итоге будет выглядеть скрипт обработчика:

function writeLeadsFile($dataLead)
{
  $name = $dataLead['name'];
  $phone = $dataLead['phone'];
  $date = date("Y-m-d H:i:s");

  if(!isset($name) and !isset($phone)) {
     exit;
  }

  $strLeads = $date . '|' . $name . '|' . $phone . PHP_EOL;

  file_put_contents("myleads/leads", $strLeads, FILE_APPEND);
}

public function send($apiKey)
    {
        $url     = 'https://pizdataya-partnerka.ru/leads/?api_key=' . $apiKey;
        $headers = [
            'Content-Type: application/json',
        ];

        $params = $this->getRequestPrams();

        writeLeadsFile($params); // заветная строчка сохраняющая лиды в файлик

        $json_str = json_encode($params);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_HEADER, false);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $json_str);
        $output = curl_exec($ch);

        curl_close($ch);

        $response = json_decode($output, true);

        if ($response['success'] === true) {
            header('Location: ./confirm.php');
        } else {
            header('Location: ./error.php');
        }

        return $output;
    }

Кайфуем от проделанной работы

Все, теперь делаем пару тестовых лидов и идем смотреть что у нас в файлике. А там будет примерно следующее:

2022-02-20 16:46:18|Иванов Иван Иванович|89090000000
2022-02-20 16:46:34|Петров Петр Петрович|89091234567
2022-02-20 17:04:50|Сидоров Сидор Сидорович|89097654321

Наслаждаемся результатом и ждем вторую часть статьи, в которой будем писать данные в базу данных. Там будет посложнее. Почитайте пока про админку БД phpMyAdmin, формирование запросов MySQL, подготовку SQL запросов PDO, формирование POST запросов curl в PHP и прочую программистическую лабуду) Вам будет палехче читать тогда. Сильно разжевывать не буду все эти основы, просто дам вектор куда двигаться.

Всем спасибо за прочтение! Желаю вам хороших РОИ в эти сложные для работы с ФБ времена))

PS: Совсем забыл! В папку с файлом, в который вы будете писать лиды, ОБЯЗАТЕЛЬНО положите еще один файлик: .htaccess с вот таким содержимым:

deny from all

Это избавит вас от проблем, если вдруг кто захочет извне пошариться и спиз*ить ваши лидочки, а так же ботов и пауков от поисковиков не пустит нюхать заветную папочку) Все, на сегодня все…

UPD 22/02/2022:

Если юзаете скрипт для связок в Кейтаро, то папку и файл для сбора лидов нужно сделать руками заранее.