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:
Всем удачи! Жду вас в своем ТГ канале)