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

API интеграция metacpa API интеграции с ПП

Общая информация

  • Год основания: 2013
  • Официальный сайт: metacpa.ru

Meta CPA – международная партнерская CPA-сеть, работающая в нутра-сегменте. Основана в 2013 году. С 2022 года компания выступает как прямой рекламодатель в регионах Азии и Латинской Америки, предоставляя партнёрам возможность выбирать оптимальные предложения из более чем 700 офферов, охватывающих 60 географических регионов.

Ключевые преимущества партнерки

  • Собственные in-house офферы с высоким аппрувалом и быстрыми выплатами до 150$ за лид.
  • Эксклюзивные предложения, ориентированные на рынки Азии и Латам.
  • Поддержка при переводе лендингов и адаптации рекламных кампаний.
  • Персональный саппорт 24/7 – надёжный помощник в арбитраже.
  • Специальные условия для ТОП-партнёров.
  • Приём заявок через API.

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

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

Если у вас отсутствует предустановленный шаблон для metacpa, используйте следующие настройки:

  • Название: Metacpa.ru
  • Параметры для оффера: sub5={subid}
  • Postback URL: luaКопироватьВАШ_Домен/postback?subid={sub5}&payout={payout}&status={status}&currency={currency}&lead_status=0&sale_status=1&rejected_status=3&sub_id_1={offer_id}&sub_id_2={landing_id}&from=metacpa.ru

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

  1. Перейдите в свой профиль и откройте раздел Глобальный постбек.
  2. В поле URL постбэка (новый) укажите: bashКопироватьВАШ_Домен/postback?subid={sub5}&status=0&lead_status=0&sale_status=1&rejected_status=3&sub_id_1={offer_id}&sub_id_2={landing_id}&from=metacpa.ru
  3. В поле URL постбэка (принят) укажите: bashКопироватьВАШ_Домен/postback?subid={sub5}&payout={payout}&status=1&currency={currency}&lead_status=0&sale_status=1&rejected_status=3&sub_id_1={offer_id}&sub_id_2={landing_id}&from=metacpa.ru
  4. В поле URL постбэка (отклонен) укажите: bashКопироватьВАШ_Домен/postback?subid={sub5}&status=3&lead_status=0&sale_status=1&rejected_status=3&sub_id_1={offer_id}&sub_id_2={landing_id}&from=metacpa.ru

Статусы:

  • Новые лиды: 0
  • Подтверждённые лиды: 1
  • Треш-лиды: 3
  • Отклонённые лиды: 3

Нажмите «Сохранить», чтобы применить настройки.

API интеграция оффера с ПП metacpa

Файл: index.php
Вставьте в форму на лендинге макрос с subid, чтобы обеспечить корректную работу постбеков.

<form action="api.php" method="post" class="form">
    <div class="input-group tooltip-hide">
        <input name="name" type="text" placeholder="Имя" required="">
    </div>
    <div class="input-group tooltip-hide">
        <input name="phone" type="text" placeholder="Телефон" required="">
    </div>
 
    <button type="submit" class="btn btn-order">
        ПОЛУЧИТЬ
        <span class="flare"></span>
    </button>
 
    <input type="hidden" name="flow_id" value="ID_потока">
    <input type="hidden" name="geo" value="ID_ГЕО">
    <input type="hidden" name="sub3" value="{buyer}">
    <input type="hidden" name="sub5" value="{subid}">
 
</form>

💡 В форму добавляется значения для сабайди, как показано выше. Так же в форме необходимо заполнить id потока и id ГЕО. Чекнуть гео можно в кабинете ПП, вкладка помощь — справочник по ГЕО

Объяснение настройки api в ПП metacpa

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. Функция логирования

Функция mylog

function mylog($data)
{
    $file = 'log.txt';

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

    file_put_contents($file, $data . "\n", FILE_APPEND);
    return false;
}
  • Цель: Записывать данные в лог-файл log.txt.
  • Проверка файла: Если файла не существует, он создаётся.
  • Запись данных: Переданные данные дописываются в файл с новой строки.
  • Возвращаемое значение: Всегда возвращает false (это может использоваться для остановки дальнейшей обработки в других частях кода).

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

Функция cleanPhoneNumber

function cleanPhoneNumber($phoneNumber)
{
    return preg_replace('/[^0-9]/', '', $phoneNumber);
}
  • Цель: Удалить из номера телефона все символы, кроме цифр.
  • Работа функции: Используется регулярное выражение, которое заменяет всё, что не является цифрой, на пустую строку. Это гарантирует корректное сравнение и отправку номера.

4. Основная логика обработки формы

Очистка и проверка номера телефона

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

if (isDuplicateLead($cleanedPhone)) {
    header('Location: error.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
    exit;
}
  • Очистка: Значение $_POST['phone'] очищается от ненужных символов.
  • Проверка дубликата: Если функция isDuplicateLead возвращает true (номер уже встречался), происходит перенаправление на страницу ошибки с передачей имени и телефона в URL.

5. Формирование запроса к API

Подготовка данных для отправки

$url = 'http://metacpa.ru/create';

$data = array(
    'phone' => $_POST['phone'],
    'name' => $_POST['name'],
    'ip' => $_SERVER['REMOTE_ADDR'],
    'flow_id' => $_POST['flow_id'],
    'geo' => $_POST['geo'],
    'subid' => $_POST['subid'],
    'sub1' => $_POST['sub1'],
    'sub3' => $_POST['sub3'],
    'sub4' => $_POST['sub4'],
    'sub5' => $_POST['sub5'],
);

foreach ($_POST as $key => $value) {
    $data[$key] = $value;
}
  • URL запроса: Определён конечный адрес API http://metacpa.ru/create.
  • Массив данных: Формируется массив с основными параметрами, такими как телефон, имя, IP-адрес пользователя, идентификаторы потоков, геолокация и прочее.
  • Цикл перебора $_POST: Этот цикл гарантирует, что все данные из формы будут включены в массив $data. При этом если какие-то ключи уже заданы, они перезаписываются значениями из $_POST.

6. Выполнение cURL-запроса

Инициализация и выполнение запроса

$process = curl_init();
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_TIMEOUT, 5);
curl_setopt($process, CURLOPT_URL, $url . '?' . http_build_query($data));
$result = curl_exec($process);
curl_close($ch);
  • Инициализация cURL: Функция curl_init() подготавливает новый сеанс.
  • Настройка опций:
    • CURLOPT_RETURNTRANSFER: позволяет сохранить ответ в переменной вместо прямого вывода.
    • CURLOPT_TIMEOUT: устанавливает максимальное время ожидания ответа – 5 секунд.
    • CURLOPT_URL: формируется URL с параметрами запроса с помощью http_build_query($data).
  • Выполнение запроса: curl_exec($process) выполняет запрос и сохраняет ответ в переменной $result.
  • Закрытие сеанса: После выполнения запроса сеанс cURL закрывается. Обратите внимание, что закрытие происходит через переменную $ch, которая не определена – это потенциальная ошибка, и должно быть curl_close($process).

7. Обработка ответа от API

Анализ ответа и перенаправление

if ($result === false) {
    echo 'cURL Error: ' . curl_error($process);
} else {
    $arr = json_decode($result, true);
    if (!isset($arr['error'])) {
        header('Location: ./success.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
        exit;
    } else {
        header('Location: error.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
    }
}
  • Проверка на ошибку: В условии проверяется переменная $return, хотя результат запроса хранится в переменной $result. Здесь, вероятно, допущена опечатка, и вместо $return должно быть $result.
  • Ошибка cURL: Если результат запроса равен false, выводится сообщение об ошибке.
  • Парсинг ответа: Если запрос выполнен успешно, ответ декодируется из JSON в ассоциативный массив.
  • Перенаправление:
    • Если массив не содержит ключа error, происходит перенаправление на страницу успеха (success.php).
    • Если ошибка обнаружена, пользователь перенаправляется на страницу ошибки (error.php).

Итоговый код api принцип работы

  1. Очистка и проверка: При поступлении данных из формы очищается номер телефона, после чего проверяется на дублирование. Если лид уже существует – пользователь перенаправляется на страницу ошибки.
  2. Формирование запроса: Собирается массив с данными, включающими все параметры, полученные через POST.
  3. Отправка данных: Данные отправляются на API metacpa через GET-запрос с использованием cURL.
  4. Обработка ответа: Полученный ответ анализируется. В зависимости от наличия ошибок происходит перенаправление пользователя либо на страницу успеха, либо на страницу ошибки.
<?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 mylog($data)
{
    $file = 'log.txt';

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

    file_put_contents($file, $data . "\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 = 'http://metacpa.ru/create';

$data = array(
    'phone' => $_POST['phone'],
    'name' => $_POST['name'],
    'ip' => $_SERVER['REMOTE_ADDR'],
    'flow_id' => $_POST['flow_id'],
    'geo' => $_POST['geo'],
    'subid' => $_POST['subid'],
    'sub1' => $_POST['sub1'],
    'sub3' => $_POST['sub3'],
    'sub4' => $_POST['sub4'],
    'sub5' => $_POST['sub5'],
);


foreach ($_POST as $key => $value) {
    $data[$key] = $value;
}

$process = curl_init();
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_TIMEOUT, 5);
curl_setopt($process, CURLOPT_URL, $url . '?' . http_build_query($data));
$result = curl_exec($process);
curl_close($ch);

if ($result === false) {
    echo 'cURL Error: ' . curl_error($process);
} else {
    $arr = json_decode($result, true);
    if (!isset($arr['error'])) {
        header('Location: ./success.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
        exit;
    } else {
        header('Location: error.php?name=' . urlencode($_POST['name']) . '&phone=' . urlencode($_POST['phone']));
    }
}
?>
API интеграция с партнерской сетью metacpa

Ну и по уже сложившейся традиции, прикреппляю файл API интеграции metacpa, внутри архива. Копируете форму из примера выше и закидывайте в свой архив файл api.php Получаете профит и зеленые ROI.

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