Api интеграция с ПП m4leads. Настройка постбеков в Кейтаро.

настройка api m4leads API интеграции с ПП

Всем привет! В этой статье я подробно разберу процесс настройки API интеграций с CPA-сетью m4leads. Поделюсь полезными советами и помогу коллегам настроить работу с партнерской сетью без лишних сложностей, чтобы у вас было больше времени на генерацию трафика.

От себя добавлю, что команда m4leads отлично справляется с обработкой трафика и демонстрирует высокий уровень апрува. По моему мнению, это одна из ведущих сетей в сфере нутры. У них есть множество собственных офферов и собственный колл-центр, работающий круглосуточно, что, безусловно, положительно влияет на показатели апрува. m4leads – это давно зарекомендовавшая себя партнерская программа с адекватными и всегда готовыми помочь менеджерами. Она явно заслуживает внимания арбитражников.

Ну а теперь перейдем к делу и настроим интеграцию с партнерской программой m4leads.

Задача: Настройка api интеграции с партнерской программой m4leads

Будем настраивать постбеки в Кейтаро и партнерской программе, а также передачу лидов по API.

Настройка постбеков в кейтаро

В Кейтаро уже есть встроенный шаблон для m4leads. Если вы используете другой трекер или по каким-то причинам шаблона нет, вот настройка:

  • Название: M4leads.com
  • Параметры для оффера: sub_id1={subid}
  • Postback URL: ВАШ_Домен/postback?subid=[sub_id1]&tid=[order_id]&payout=[price]&status=[status]&from=m4leads.com

Теперь перейдем в партнерскую программу:

  1. Идем в ПП → Инструменты → Postback
  2. Метод передачи: GET (галочку «Только принятые» НЕ ставим).
  3. В поле postbackURL вписываем наш постбек: ВАШ_Домен/postback?subid=[sub_id1]&tid=[order_id]&payout=[price]&status=[status]&from=m4leads.com

Далее настроим статусы пользователя:

  • Одобрено: sale
  • Отменен: rejected
  • Некорректный: rejected
  • В ожидании: lead

После этого нажимаем кнопку «Применить».

Первый этап настройки завершен

Постбеки в партнерской сети m4leads и Кейтаро настроены. Теперь приступим к самой интеграции.


Интеграция api на лендинге

Идем на наш лендинг и находим форму. В форму вставляем макрос с sub_id для корректной работы постбеков:

<input type="hidden" name="subid" value="{subid}">

Пример формы:

                        <form  action="api.php" method=post>
                                    <label class=block_form_label>Имя</label>
                                    <input name=name placeholder="Ваше имя" required
                                            minlength="3">
                                    <label class=block_form_label>Телефон</label>
                                    <input name=phone placeholder="Ваш телефон" type=tel
                                            required minlength="8">
                                <button type=submit>ПОЛУЧИТЬ</button>

                            <input type="hidden" name="country" value="Страна">
                            <input type="hidden" name="offerId" value="id оффера в ПП">
                            <input type="hidden" name="price" value="Цена на сайте">
                            <input type="hidden" name="subid" value="{subid}">
                            <input type='hidden' name='pxl' value="<?php echo $_GET['pxl']; ?>" />
                        </form>

С формой все понятно, здесь особых объяснений не требуется.

Разбор файла api.php

Теперь разберем файл api.php, на который ссылается наша форма:

1. Проверка дублирующихся лидов

Функция isDuplicateLead проверяет, является ли лид дублирующимся.

function isDuplicateLead($phone)
{
    $file = 'leads.txt';

    if (!file_exists($file)) {
        file_put_contents($file, '');
    }

    $leads = file_get_contents($file);
    $escapedPhone = preg_quote($phone, '/');
    $phonePattern = '/' . $escapedPhone . "\n/";

    if (preg_match($phonePattern, $leads)) {
        return true;
    } else {
        file_put_contents($file, $phone . "\n", FILE_APPEND);
        return false;
    }
}
  • Проверяет наличие файла leads.txt. Если файла нет, он создается.
  • Считывает содержимое файла.
  • Ищет телефон в файле. Если телефон найден, возвращает true (лид дублируется).
  • Добавляет телефон в файл, если не найден. Возвращает false (лид новый).

2. Очистка номера телефона

Функция cleanPhoneNumber очищает номер телефона от всех символов, кроме цифр.

function cleanPhoneNumber($phoneNumber)
{
    return preg_replace('/[^0-9]/', '', $phoneNumber);
}

3. Проверка наличия номера телефона

Если номер телефона не передан в POST-запросе, перенаправляем на страницу ошибки.

if (!isset($_POST['phone'])) {
    header('Location: error.php');
    exit;
}

4. Очистка номера телефона

Очистка номера телефона с помощью ранее описанной функции.

$cleanedPhone = cleanPhoneNumber($_POST['phone']);

5. Проверка на дублирование лида

Если лид дублируется, перенаправляем на страницу ошибки.

if (isDuplicateLead($cleanedPhone)) {
    header('Location: error.php');
    exit;
}

6. Формирование данных для запроса

Формируем данные для отправки в API m4leads.

$url = 'https://api.m4leads.com/order/add';

$data = [
    'partnerId' => ПартнерID,
    'access-token' => 'Токен в ПП',
    'offerId' => $_POST['offerId'],
    'phone' => $_POST['phone'],
    'price' => $_POST['price'],
    'fullName' => $_POST['name'],
    'ip' => $_SERVER['REMOTE_ADDR'],
    'country' => $_POST['country'],
];

7. Добавление параметров sub_id

Добавляем параметры sub_id в данные.

$sub_id = [];
$sub_id[] = $_POST['subid'];
$sub_id[] = $_POST['sub1'];
$sub_id[] = $_POST['sub2'];
$sub_id[] = $_POST['sub3'];
$sub_id[] = $_POST['sub4'];

$data['sub_id'] = $sub_id;

8. Формирование URL для запроса

Формируем URL для запроса с параметрами.

$url .= '?' . http_build_query($data);

Отправка запроса с помощью cURL

Отправляем запрос с использованием cURL.

if ($curl = curl_init()) {
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($curl);
    curl_close($curl);

    if ($result === false) {
        header('Location: error.php');
        exit;
    } else {
        $arr = json_decode($result, true);
        if (!isset($arr['error'])) {
            header('Location: thankyou.php?name=' . $_POST['name'] . '&phone=' . $_POST['phone'] . '&pxl=' . $_POST['pxl']);
            exit;
        } else {
            header('Location: error.php');
        }
    }
}
  • Инициализируем cURL.
  • Устанавливаем URL и параметры возврата.
  • Выполняем запрос.
  • Закрываем cURL.
  • Обрабатываем результат. Если запрос успешен и нет ошибок, перенаправляем на страницу благодарности. В противном случае, перенаправляем на страницу ошибки.

Таким образом, этот скрипт выполняет проверку на дублирование лидов, очищает номер телефона, отправляет данные в API m4leads и обрабатывает ответ.

Полный код api файла выглядит так:

<?php

function isDuplicateLead($phone)
{
    $file = 'leads.txt';

    if (!file_exists($file)) {
        file_put_contents($file, '');
    }

    $leads = file_get_contents($file);
    $escapedPhone = preg_quote($phone, '/');
    $phonePattern = '/' . $escapedPhone . "\n/";

    if (preg_match($phonePattern, $leads)) {
        return true;
    } else {
        file_put_contents($file, $phone . "\n", FILE_APPEND);
        return false;
    }
}

function cleanPhoneNumber($phoneNumber)
{
    return preg_replace('/[^0-9]/', '', $phoneNumber);
}

if (!isset($_POST['phone'])) {
    header('Location: error.php');
    exit;
}

$cleanedPhone = cleanPhoneNumber($_POST['phone']);

if (isDuplicateLead($cleanedPhone)) {
    header('Location: error.php');
    exit;
}

$url = 'https://api.m4leads.com/order/add';

$data = [
    'partnerId' => ПартнерID,
    'access-token' => 'Токен в ПП',
    'offerId' => $_POST['offerId'],
    'phone' => $_POST['phone'],
    'price' => $_POST['price'],
    'fullName' => $_POST['name'],
    'ip' => $_SERVER['REMOTE_ADDR'],
    'country' => $_POST['country'],
];

$sub_id = [];
$sub_id[] = $_POST['subid'];
$sub_id[] = $_POST['sub1'];
$sub_id[] = $_POST['sub2'];
$sub_id[] = $_POST['sub3'];
$sub_id[] = $_POST['sub4'];

$data['sub_id'] = $sub_id;

$url .= '?' . http_build_query($data);

if ($curl = curl_init()) {
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($curl);
    curl_close($curl);

    if ($result === false) {
        header('Location: error.php');
        exit;
    } else {
        $arr = json_decode($result, true);
        if (!isset($arr['error'])) {
            header('Location: thankyou.php);
            exit;
        } else {
            header('Location: error.php');
        }
    }
}

?>

Базовая настройка API для CPA m4leads завершена. Не забудьте добавить страницы thankyou.php и error.php для корректной обработки успешных и ошибочных результатов. Этот код можно существенно улучшить и модернизировать в зависимости от ваших потребностей.

Если у вас есть вопросы или предложения, буду рад обсудить их в моем Telegram-канале. Присоединяйтесь!

Оцените статью
BoostClicks