AlterCPA – широко известный движок на рынке партнерских программ. С AlterCPA работают большое количество ПП в таких сферах, как нутра, гемблинг, крипта и другие.
Ниже приведён небольшой список партнерских программ, использующих данный движок:
Нутра
➡️ CashFactories: cashfactories.com – партнерская программа.
Гео: преимущественно Африка и ЛатАм.
Контакты: @adu86 — Александр.
➡️ SkyLead: skylead.pro – прямой рекламодатель и производитель.
Гео: Европа и ЛатАм.
Контакты: @unstep — Андрей, @amrn77 — Артем.
➡️ OfferStore: offer.store – прямой рекламодатель (ЛатАм) с опцией реселла для регионов: Европа, Америка, Индия, Азия.
Контакты: @Igor_td — Игорь, @dmitriy_offerstore — Дмитрий.
➡️ LeadCore: leadcore.pro/#ru – прямой рекламодатель, производитель, баинг в Украине, а также партнерская программа для всего мира.
Контакты: @levidissss — Влад (овнер), @yurii_advert — Юра (менеджер).
➡️ Monolead: monolead.biz – прямой рекламодатель.
Гео: Восточная и Центральная Европа.
Контакты: @Monolead_account — Руслан.
➡️ AffRocket: my.affrocket.pro – прямой рекламодатель и CPA-сеть.
Гео: Европа/СНГ.
Контакты: @anna_rocket — Анна.
➡️ ManyMoney: manymoney.club/ru – прямой рекламодатель.
Гео: Польша.
Контакты: @antoni_manymoney — Антон, @manager_manymoney — Лиза.
➡️ Dimax: dimax-cpa.ru – прямой рекламодатель.
Гео: РФ, КЗ, РБ.
Контакт: @privetinterpol — Максим.
➡️ X-Men: x-men.pro – прямой рекламодатель.
Гео: СНГ, преимущественно Беларусь, РФ и Казахстан.
Контакты: @DmitriyTroy — Дмитрий.
➡️ ArkNet: arknet.group – прямой рекламодатель.
Гео: Европа.
Контакты: @ceo_arcadius — Андрей.
➡️ ProfitPay: my.profitpay.one – прямой рекламодатель и реселлер.
Гео: Европа.
Контакты: @PavelLushko — Павел, @digi_aleksandra.
Крипта
➡️ StocksCPA: stockscpa.com
Вертикаль: крипта.
Гео: Tier 1/2.
Контакты: @Murat_sherst.
➡️ Indonesians – рекламная сеть.
Вертикаль: крипта, форекс.
Гео: Россия.
Контакты: @vadtmnv.
➡️ LIDSLIVE: lids.live
Вертикаль: крипта, форекс, чарджбек.
Гео: весь мир.
Контакты: @fintp1 — Артем.
➡️ Traffic Culture – медиабаинг.
Вертикаль: FX/Крипта/Чарджи.
Гео: весь мир.
Контакты: @vidas03, @alex_tcult.
➡️ YAD: yadcorp.com
Вертикаль: крипта.
Гео: весь мир.
Контакты: @LeanMe, @jmn_ji.
➡️ MoneyRush – партнерская сеть.
Вертикаль: крипта.
Гео: весь мир.
Контакты: @ramteam_new (Ram team).
➡️ SharkLink: sharklink.org
Вертикаль: крипта.
Гео: весь мир.
Контакты: @SharkLink_Polina — Полина, @Sharklink_web.
Гемблинг / беттинг
➡️ EJex.club: ejex.club – партнерская сеть.
Вертикаль: гемблинг.
Гео: СНГ, Европа, ЛатАм, Азия.
Контакты: @ejex_cpa.
Адалт
➡️ StasyQ: stasyq.online – прямой рекламодатель.
Гео: весь мир.
Контакты: @stasyq_support — Stan.
➡️ AffCoff: affcoff.io – прямой рекламодатель и реселлер.
Гео: весь мир.
Контакты: @Affcoff — Stan.
Белые вертикали и инфобизнес
➡️ Edulid: edulid.com – прямой рекламодатель SP офферов.
Гео: СНГ, WW.
Контакты: @orlovee — Денис, @sanchezzkll — Александр, @lawyer13167 — Максим.
➡️ GGLead: gglead.net – прямой рекламодатель.
Гео: весь мир.
Контакты: @gglead_support — Павел.
Сегодня мы рассмотрим стандартную интеграцию нутра-офферов с партнерскими сетями на AlterCPA. Рассмотрим особенности API-интеграции и ключевые моменты настройки, позволяющие максимально эффективно использовать возможности платформы AlterCPA для работы с офферами в нишах нутра, гемблинга и крипты.
- Настройка постбеков в трекере (Keitaro)
- Шаблон в Keitaro
- Настройка партнерской программы на AlterCPA
- Интеграция API на сайте
- Настройка API в ПП на AlterCPA
- Разбор работы скрипта api.php
- 1. Проверка дублирующихся лидов
- 2. Очистка номера телефона
- 3. Основной блок обработки запроса
- 4. Подготовка данных для отправки на API
- 5. Отправка данных через cURL
- 6. Обработка ответа API и логирование
- Полный код api.php для altercpa:
Настройка постбеков в трекере (Keitaro)
Если в вашем трекере отсутствует предустановленный шаблон для AlterCPA, воспользуйтесь следующими настройками:
Шаблон в Keitaro
- Название: Укажите название вашей партнерской программы.
- Параметры для оффера:
subid={subid} - Postback URL:
ВАШ_Домен/postback?subid={subid}&payout={cash}&status={stage}&lead_status=wait&sale_status=approve&rejected_status=cancel,trash¤cy=usd&from=Название_ПП

Настройка партнерской программы на AlterCPA
Чтобы настроить постбек для партнерской программы на AlterCPA, выполните следующие шаги:
- Перейдите в раздел Потоки – Постбек.
- В поле «Глобальный постбек» укажите следующий URL:
ВАШ_Домен/postback?subid={subid}&payout={cash}&status={stage}&lead_status=wait&sale_status=approve&rejected_status=cancel,trash¤cy=usd&from=Название_ПП - Отметьте галочками следующие статусы:
- Ожидает
- Принят
- Отмена
- Треш
- Нажмите кнопку «Сохранить», чтобы применить настройки.

Интеграция API на сайте
Для обеспечения корректной работы постбеков необходимо вставить в форму на лендинге макрос с subid и другими параметрами. Пример HTML-кода:
<form action="api.php" method="post">
<div class="name-input">
<label for="name-input">Nombre</label>
<input id="name-input" type="text" placeholder="Su nombre" name="name" autocomplete="name"
required>
</div>
<div class="phone-input">
<label for="phone-input">Número de teléfono móvil</label>
<input id="phone-input" type="tel" placeholder="Su número de teléfono móvil" name="phone"
autocomplete="tel" required>
</div>
<button type="submit" class="button-submit">PEDIR</button>
<input type="hidden" name="country" value="ГЕО">
<input type="hidden" name="flow" value="ПОТОК">
<input type="hidden" name="offer" value="ОФФЕР">
<input type="hidden" name="subid" value="{subid}">
</form>
💡 Пример: В форму добавляются значения сабайди, ГЕО, номера потока и id оффера, как показано выше.
Настройка API в ПП на AlterCPA
Файл api.php реализует следующие функции:
- Проверка дублирующих лидов
- isDuplicateLead($phone): Функция проверяет наличие номера телефона в файле
leads.txt. Если такого номера ещё нет, он добавляется в файл для предотвращения повторной регистрации.
- isDuplicateLead($phone): Функция проверяет наличие номера телефона в файле
- Очистка номера телефона
- cleanPhoneNumber($phoneNumber): Удаляет все символы, кроме цифр, обеспечивая корректное представление номера.
- Основная логика обработки запроса
- Сначала проверяется, что запрос выполнен методом POST и содержит обязательные поля (имя и телефон). При отсутствии этих данных происходит перенаправление на страницу ошибки.
- Если данные валидны, формируется массив с информацией лида (включая имя, телефон, UTM-параметры и Click ID), который затем отправляется POST-запросом на API сервера LemonAD.
- Логирование
- Функция writeToLog() фиксирует данные запроса и ответ сервера в лог-файл, что позволяет отслеживать и анализировать процесс обработки лидов.
- Обработка ответа от API
- Если ответ сервера не соответствует формату JSON, происходит перенаправление на страницу ошибки.
- При успешном ответе пользователя направляют на страницу благодарности, где в URL передаются его имя и телефон.
Разбор работы скрипта api.php
Скрипт предназначен для обработки лидов (заявок) с лендинга, выполнения проверки на дублирование, очистки номера телефона и отправки данных на удалённый API. После получения ответа от API происходит перенаправление пользователя на соответствующую страницу.
1. Проверка дублирующихся лидов
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;
}
}
- Назначение: Функция
isDuplicateLeadпроверяет, был ли уже зарегистрирован данный номер телефона, чтобы исключить повторные заявки. - Алгоритм:
- Если файла
leads.txtне существует, он создаётся. - Функция читает содержимое файла.
- Создаётся регулярное выражение для поиска номера телефона (с экранированием спецсимволов).
- Если номер уже присутствует, функция возвращает
true. В противном случае, номер дописывается в файл, и функция возвращаетfalse.
- Если файла
2. Очистка номера телефона
function cleanPhoneNumber($phoneNumber)
{
return preg_replace('/[^0-9]/', '', $phoneNumber);
}
- Назначение: Функция
cleanPhoneNumberудаляет из номера телефона все символы, кроме цифр, что помогает обеспечить корректность передаваемых данных.
3. Основной блок обработки запроса
$cleanedPhone = cleanPhoneNumber($_POST['phone']);
if (isDuplicateLead($cleanedPhone)) {
header('Location: error.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
exit;
}
- Проверка:
- Сначала происходит очистка номера телефона.
- Затем функция
isDuplicateLeadпроверяет, зарегистрирован ли уже этот номер. - Если номер найден (лид дублируется), пользователь перенаправляется на страницу ошибки с передачей имени и телефона через URL.
4. Подготовка данных для отправки на API
$url = 'API_url';
$data = [
'flow' => $_REQUEST['flow'],
'offer' => $_REQUEST['offer'],
'phone' => $_REQUEST['phone'],
'name' => $_REQUEST['name'],
'ip' => $_SERVER['REMOTE_ADDR'],
'subid' => $_REQUEST['subid'],
'sub1' => $_REQUEST['sub1'],
'sub2' => $_REQUEST['sub2'],
'sub3' => $_REQUEST['sub3'],
'sub4' => $_REQUEST['sub4'],
'sub5' => $_REQUEST['sub5'],
'country' => $_REQUEST['country'],
];
$jsonData = json_encode($data);
- Сбор данных:
Создаётся массив с информацией о лиде: имя, номер телефона, IP-адрес и дополнительные параметры (например, subid, UTM-метки). - Преобразование:
Данные конвертируются в JSON для отправки на API.
5. Отправка данных через cURL
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($process, CURLOPT_TIMEOUT, 20);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($process, CURLOPT_POST, true);
curl_setopt($process, CURLOPT_POSTFIELDS, $jsonData);
$return = curl_exec($process);
- Инициализация cURL:
Устанавливаются параметры запроса:- Заголовок
Content-Type: application/json. - Метод запроса — POST.
- Данные в формате JSON передаются через
CURLOPT_POSTFIELDS. - Заданы таймаут, отключена проверка SSL, установлен пользовательский агент.
- Заголовок
6. Обработка ответа API и логирование
if ($return === false) {
echo 'cURL Error: ' . curl_error($process);
} else {
$arr = json_decode($return, true);
if (!isset($arr['error'])) {
header('Location: success.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
exit;
} else {
echo $return;
}
}
curl_close($process);
Если запрос cURL завершается с ошибкой:
Выводится сообщение с ошибкой. Если данные получены:
- Скрипт пытается декодировать JSON-ответ.
- Если в ответе нет поля
error, считается, что операция успешна, и пользователь перенаправляется на страницу благодарности с передачей имени и телефона. - В противном случае выводится ответ API.
Закрытие сессии cURL:
Вызов curl_close($process) завершает работу cURL.
Полный код api.php для altercpa:
<?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?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
exit;
}
$url = 'API_url';
$data = [
'flow' => $_REQUEST['flow'],
'offer' => $_REQUEST['offer'],
'phone' => $_REQUEST['phone'],
'name' => $_REQUEST['name'],
'ip' => $_SERVER['REMOTE_ADDR'],
'subid' => $_REQUEST['subid'],
'sub1' => $_REQUEST['sub1'],
'sub2' => $_REQUEST['sub2'],
'sub3' => $_REQUEST['sub3'],
'sub4' => $_REQUEST['sub4'],
'sub5' => $_REQUEST['sub5'],
'country' => $_REQUEST['country'],
];
$jsonData = json_encode($data);
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, "Mozilla/5.0");
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($process, CURLOPT_TIMEOUT, 20);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($process, CURLOPT_POST, true);
curl_setopt($process, CURLOPT_POSTFIELDS, $jsonData);
$return = curl_exec($process);
if ($return === false) {
echo 'cURL Error: ' . curl_error($process);
} else {
$arr = json_decode($return, true);
if (!isset($arr['error'])) {
header('Location: success.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
exit;
} else {
echo $return;
}
}
curl_close($process);
?>
Так же прикрепляю архивом полный код файла api:
Всем удачи! Жду вас в своем ТГ канале)



