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

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

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

Их не так много. На Partnerkin я нашёл пару негативных отзывов, где упоминались проблемы с поддержкой. Но не могу это ни подтвердить, ни опровергнуть, так как всегда предпочитаю общаться напрямую с менеджерами.
Других минусов действительно не вижу, если есть кейсы или что сказать, буду рад выслушать и опубликовать пруфы. Стучитесь в ТГ канал!
Ну что, разошёлся я… Пора приступить к интеграции!
- Настройка API для CPA-сети Rocketprofit
- Настройка постбеков в Keitaro для интеграции с ПП Rocketprofit
- Интеграция API с партнеркой rocketprofit на лендинге:
- Пошаговый разбор API-интеграции с CPA-сетью rocketprofit
- 1. Функция isDuplicateLead
- 2. Функция cleanPhoneNumber
- 3. Обработка данных из формы
- 4. Сбор данных заказа
- 5. Получение IP-адреса
- 6. Парсинг реферера
- 7. Отправка данных через cURL
- 8. Обработка ответа
- Полный код файла api.php для интеграции
Настройка API для CPA-сети Rocketprofit
Настройка постбеков в Keitaro для интеграции с ПП Rocketprofit
- 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¤cy={currency}&from=Rocketprofit.com
- Шаблон: Если нет предустановленного шаблона для Rocketprofit, используйте следующие настройки:
- Партнёрская программа Rocketprofit:
- Перейдите в раздел Потоки, затем выберите Глобальный постбек:
- В поле Постбэк URL укажите:
ВАШ_Домен/postback?sub_id={sid1}&status={status}&payout={payout}&lead_status=pending&sale_status=approved&rejected_status=rejected,trash¤cy={currency}&from=Rocketprofit.com - Выделите 1 пункт:
- Постбэк при смене статуса
- Нажмите Сохранить, затем переходите к следующему шагу.
- В поле Постбэк URL укажите:
- Перейдите в раздел Потоки, затем выберите Глобальный постбек:
Пример постбека в трекере кейтаро:

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

Интеграция 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

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



