API интеграция офферов с партнерской сетью rocketprofit

API интеграция офферов с партнерской сетью shakes.pro API интеграции с ПП

Сегодня на очереди — новая интеграция с партнёрской программой rocketprofit. Предлагаю подробно разобрать функционал API и настроить продуманную отправку лидов в партнёрскую программу с наших сайтов.

По традиции, немного о самой партнёрке. К сожалению, не слишком тесно общался с ребятами, но работаю с ПП уже довольно долго. Помню, как впервые познакомился с rocketprofit в 2020 году, когда работал в своей первой команде, и с тех пор успешно продолжаю с ними сотрудничать.

личный кабинет rocketprofit

Что по офферам и гео?

Rocketprofit — активно сосредоточены на Европе со своими инхаус-офферами. Офферы действительно сильные. Помню, как долго работал с OPHTALAX, который показал отличные результаты. Судя по спаю, он и сейчас более чем актуален.

Плюсы Rocketprofit:

отзывы партнерская программа Shakes
  • Работа менеджеров — адекватная и быстрая.
  • Выплаты — всегда вовремя, в день заказа, без лишней бюрократии.
  • Личный кабинет — удобный и продуманный. Здесь представлено огромное количество лендингов. Это одна из немногих ПП, которая сразу открывает доступ ко всем лендам и постоянно их обновляет.
  • Высокодоходные ГЕО — сильные офферы и КЦ на европпу.
  • Фото для отзывов — сразу открыто много фото оффера для отзывов и крео, при переходе на оффер. Это действительно удобно.

Из минусов:

отзывы партнерская программа Shakes

Их не так много. На Partnerkin я нашёл пару негативных отзывов, где упоминались проблемы с поддержкой. Но не могу это ни подтвердить, ни опровергнуть, так как всегда предпочитаю общаться напрямую с менеджерами.

Других минусов действительно не вижу, если есть кейсы или что сказать, буду рад выслушать и опубликовать пруфы. Стучитесь в ТГ канал!

Ну что, разошёлся я… Пора приступить к интеграции!


Настройка API для CPA-сети Rocketprofit

Настройка постбеков в Keitaro для интеграции с ПП Rocketprofit

  1. Keitaro:
    • Шаблон: Если нет предустановленного шаблона для Rocketprofit, используйте следующие настройки:
      • Название: Rocketprofit.com
      • Параметры для оффера: sid1={subid}
      • Postback URL: ВАШ_Домен/postback?sub_id={sid1}&status={status}&payout={payout}&lead_status=pending&sale_status=approved&rejected_status=rejected,trash&currency={currency}&from=Rocketprofit.com
  2. Партнёрская программа Rocketprofit:
    • Перейдите в раздел Потоки, затем выберите Глобальный постбек:
      • В поле Постбэк URL укажите:
        ВАШ_Домен/postback?sub_id={sid1}&status={status}&payout={payout}&lead_status=pending&sale_status=approved&rejected_status=rejected,trash&currency={currency}&from=Rocketprofit.com
      • Выделите 1 пункт:
        • Постбэк при смене статуса
        • Нажмите Сохранить, затем переходите к следующему шагу.

Пример постбека в трекере кейтаро:

Пример постбека в кабинете партнерской сети:

Интеграция API с партнеркой rocketprofit на лендинге:

  • Вставьте макрос subid в форму на лендинге для корректной работы постбеков.
<form action="api.php" class="order_form al-form x_order_form" method="post">
<span class="x_country_select"><select class="country-select" name="country_code">
<option selected="selected" value="CZ">Czechia</option><option value="ES">Spain</option><option value="SK">Slovakia</option><option value="IT">Italy</option><option value="HU">Hungary</option><option value="EE">Estonia</option><option value="GR">Greece</option><option value="HR">Croatia</option><option value="LT">Republic of Lithuania</option><option value="LV">Latvia</option><option value="RO">Romania</option><option value="SI">Slovenia</option><option value="PT">Portugal</option><option value="BG">Bulgaria</option><option value="PL">Poland</option></select></span>
<div class="name-input input-wrapper"><input id="name" name="name" placeholder="Jméno" type="text" required autocomplete="name"><label for="name"></label></div>
<div class="phone-input input-wrapper"><input id="phone" name="phone" placeholder="Telefon" type="tel" required autocomplete="tel"><label for="phone"></label></div>
<button class="button-submit" type="submit"><span class="button-submit-text lt77">OBJEDNAT</span></button>
<input type="hidden" name="utm_content" value="<?= @$_GET['utm_content'] ?>">
<input type="hidden" name="utm_term" value="<?= @$_GET['utm_term'] ?>">
<input type="hidden" name="utm_campaign" value="<?= @$_GET['utm_campaign'] ?>">
<input type='hidden' name='ip' value='<?= $_GET['utm_ip']; ?>' />
<input type='hidden' name='userAgent' value='<?= $_GET['utm_userAgent']; ?>' />
<input type='hidden' name='utm_source' value='<?= $_GET['utm_source']; ?>' />
<input type='hidden' name='acc' value='<?= $_GET['campaign.name']; ?>' />
<input type='hidden' name='placement' value='<?= $_GET['placement']; ?>' />
<input type='hidden' name='adset' value='<?= $_GET['ad.name']; ?>' />
<input type='hidden' name='ad' value='<?= $_GET['ad.id']; ?>' />
<input type='hidden' name='sid1' value='{subid}' />
<input type='hidden' name='sub4' value="<?php echo $_GET['pxl']; ?>" />
<input type='hidden' name='sid2' value="{acc}">
<input type='hidden' name='sid3' value="{adset}">
<input type='hidden' name='sid4' value="{buyer}">
<input type='hidden' name='sid5' value="{ev}">
<input type="hidden" name="country_code" value="CZ">
<input type="hidden" name="campaign_id" value="ID_ПОТОКА">
<input type="hidden" name="redirect_url" value="/success.php" />
</form>

Пошаговый разбор API-интеграции с CPA-сетью rocketprofit

Описание кода:

Данный PHP-скрипт обрабатывает лиды, проверяет на дублирование, очищает номер телефона и отправляет данные о конверсии по API.

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. Обработка данных из формы

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

if (isDuplicateLead($cleanedPhone)) {
    header('Location: error.php');
    exit;
}
  • Номер телефона очищается с помощью функции cleanPhoneNumber.
  • Если номер является дубликатом, пользователь перенаправляется на страницу ошибки.

4. Сбор данных заказа

$order = array(
    'campaign_id' => $_POST['campaign_id'],
    'name' => $_POST['name'],
    'phone' => $_POST['phone'],
    'sid1' => $_POST['sid1'],
    'sid2' => $_POST['sid2'],
    'sid3' => $_POST['sid4']
);
  • Создаётся массив $order, содержащий данные о кампании, имени и телефоне клиента, а также дополнительные идентификаторы.

5. Получение IP-адреса

if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
} elseif (!empty($_SERVER['HTTP_X_REAL_IP'])) {
    $ip = $_SERVER['HTTP_X_REAL_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}
$order['ip'] = $ip;
  • Сначала скрипт пытается получить IP-адрес из заголовков, которые могут быть установлены прокси или сервисами типа Cloudflare. Если они отсутствуют, используется IP-адрес клиента из REMOTE_ADDR.

6. Парсинг реферера

$parsed_referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
parse_str($parsed_referer, $referer_query);
  • Извлекает параметры из URL реферера и сохраняет их в массиве $referer_query.

7. Отправка данных через cURL

$ch = curl_init();
$pxl = $_POST['pxl'];

curl_setopt($ch, CURLOPT_URL, "https://tracker.rocketprofit.com/conversion/new");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array_merge($referer_query, $order)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

$result = curl_exec($ch);
  • Используется cURL для отправки POST-запроса на API Rocketprofit.
  • Данные о реферере и заказе объединяются и передаются в запросе.

8. Обработка ответа

if ($result === 0) {
    echo "Timeout! Everad CPA 2 API didn't respond within default period!";
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($httpCode === 200) {
        header('location: ./success.php?pxl=' . $_POST['sub4'] . '');
    } else if ($httpCode === 400) {
        header('location: ./success.php?pxl=' . $_POST['sub4'] . '');
    } else {
        header('Location: error.php');
    }
}
  • Если ответ не получен, выводится сообщение о таймауте.
  • В зависимости от кода ответа API (200 или 400) происходит перенаправление на страницу успеха или ошибки.

Полный код файла api.php для интеграции

<?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);
}

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

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

$order = array(
    'campaign_id' => $_POST['campaign_id'],
    'name' => $_POST['name'],
    'phone' => $_POST['phone'],
    'sid1' => $_POST['sid1'],
    'sid2' => $_POST['sid2'],
    'sid3' => $_POST['sid4']
);

// Define ip
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
} elseif (!empty($_SERVER['HTTP_X_REAL_IP'])) {
    $ip = $_SERVER['HTTP_X_REAL_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

$order['ip'] = $ip;

$parsed_referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
parse_str($parsed_referer, $referer_query);

$ch = curl_init();
$pxl = $_POST['pxl'];

curl_setopt($ch, CURLOPT_URL, "https://tracker.rocketprofit.com/conversion/new");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array_merge($referer_query, $order)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

$result = curl_exec($ch);

if ($result === 0) {
    echo "Timeout! Everad CPA 2 API didn't respond within default period!";
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($httpCode === 200) {
        header('location: ./success.php?pxl=' . $_POST['sub4'] . '');
    } else if ($httpCode === 400) {
        header('location: ./success.php?pxl=' . $_POST['sub4'] . '');
    } else {
        header('Location: error.php');
    }
}
?>

Данный скрипт демонстрирует эффективный способ обработки лидов, предотвращения дублирования и интеграции с внешним API cpa сети rocketprofit. Он включает в себя важные аспекты валидации и обработки данных, что делает его полезным инструментом для работы с конверсиями в сфере CPA.

Готовый файл api интеграции с партнеркой rocketprofit


Обзор партнерки shakes.pro

Вот и всё, никакой магии — только чистый код. Всем мира и жирнейшего профита! 💰

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