Top.Mail.Ru

Отправка заявок по API в CPAgetti

Привет! Очередная статья по отправке заявок в cpa сервисы, сегодня это будет партнерка cpagetti.com. Подробно разберем что куда и как отправлять и напишем обработчик для правильной отправки лидов по API в CPAgetti, для справки CPAgetti — партнерская программа, работающая с вертикалями: Nutra / Gambling / Crypto / Dating.

Итак, переходим непосредственно к основному вопросу нашей статьи, к настройке отправки лидов по API в CPA сеть CPAgetti. Готовых лендингов с настроенным апи я у них к сожалению не нахожу, видимо нет такой опции (если вдруг все-таки есть пишите в комментах). Но при этом все необходимые данные что и куда отправлять на сайте есть. Для этого нажимаем пункт меню Инструменты и там выбираем вкладку API.

Отправка лидов по api в cpagetti

Как можно увидеть здесь расписаны все обязательные и не обязательные поля для отправки, ниже расписаны коды ошибок, которые отправит сервер в ответ на наш запрос если лид принят не будет. Ну и в третьем блоке приводится полный код отправки заявки через cURL, который мы приведем в нужный вид чтобы в итоге получить готовые обработчик.

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

<form action="" method="POST">
	<select name="country">
		<option value="ru">Россия</option>
	</select>
	<input type="text" name="name" placeholder="Ваше имя">
	<input type="tel" name="phone" placeholder="Ваш телефон">
	<input type="submit" value="Отправить">
	
	<input type="hidden" name="offer_id" value="1644">
	<input type="hidden" name="lang" value="RU">
	<input type="hidden" name="stream_code" value="r07w">
</form>

Как видим, дополнительно кроме имени и телефона мы будем передавать в обработчик (я его назвал тут send.php) такие параметры как страну, язык, id оффера в системе, ну и дополнительно код потока. Опционально сюда можно также добавить и дополнительные поля субаккаунтов если нужно.

Половина дела сделана, далее создаем файл обработчик send.php и просто копируем в него код из примера, который дает нам цпа сетка.

   $uri = 'http://api.cpagetti.com/order/register';
    $order = [
        'api_key' => '04eca20e867a74e9', //берем у нашего менеджера в CPAgetti
        'name' => $_POST['name'],
        'phone' => $_POST['phone'],
        'offer_id' => $_POST['offer_id'],
        'country' => $_POST['country'],
        'lang' => $_POST['lang'],
        'ip' => (!empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null), // ip пользователя СЕРВЕР ОПРЕДЕЛИТ САМОСТОЯТЕЛЬНО
        'sub1' => '',
        'sub2' => '',
        'sub3' => '',
        'sub4' => '',
        'sub5' => '',
    ];
    $headers = [
        "Host" => $uri,
        "User-Agent" => (!empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null),
        "Accept" => (!empty($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null),
        "Accept-Language" => (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null),
        "Keep-Alive" => '15',
        "Connection" => "keep-alive",
        "Referer" => (!empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null),
    ];
    /**
     * @see http://php.net/manual/ru/book.curl.php
     */
    $curl = curl_init();
    /**
     * @see http://php.net/manual/ru/function.curl-setopt.php
     */
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_URL, $uri);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $order);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    /**
     * @see http://php.net/manual/ru/language.exceptions.php
     */
    try {
        $responseBody = curl_exec($curl);
        // тело оказалось пустым
        if (empty($responseBody)) {
            throw new Exception(date('Y.m.d H:i:s') . 'Error: Empty response for order. ' .
            var_export($order, true));
        }
        /**
         * @var StdClass $response
         */
        $response = json_decode($responseBody);
        // возможно пришел некорректный формат
        if (empty($response)) {
            throw new Exception('Error: Broken json format for order. ' . PHP_EOL .
            var_export($order, true));
        }
        // заказ не принят API
        if (!$response->success) {
            throw new Exception('Invalid: Order processing error. ' .
            PHP_EOL . var_export($order, true));
        }
        /**
         * логируем данные об обработке заказа         * @see http://php.net/manual/ru/function.file-put-contents.php
         */
        file_put_contents(
            __DIR__ . '/order.success.log',
            date('Y.m.d H:i:s') .' '. $responseBody,
            FILE_APPEND
        );
        curl_close($curl);
        header('Location: order.html'); //тут прописываем название нашей страницы спасибо, на которую пользователь попадет после отправки заявки
    } catch (Exception $e) {
        /**
        * логируем ошибку        * @see http://php.net/manual/ru/function.file-put-contents.php
        */
        file_put_contents(
            __DIR__ . '/order.error.log',
            date('Y.m.d H:i:s') .' '. $e->getMessage() . PHP_EOL . $e->getTraceAsString(),
            FILE_APPEND
        );
    }

Как видите, все данные мы принимаем из массива POST и отправляем их cURL-ом на сервер CPAgetti, после чего либо принимаем и записываем в лог ошибку если вдруг заявка не принята, или же перенаправляем пользователя на нашу страницу спасибо и пишем в лог данные об успешной обработке заказа. Перенаправление на страницу спасибо выглядит так header(‘Location: order.html’), в коде я эту строку прокомментировал, она под номером 71. Обращаю ваше внимание на то что api-ключ нужно запрашивать у вашего менеджера. На этом все по отправке заявок по api в CPAgetti, если будут вопросы или замечания обязательно пишите в комментариях.

Перейдя по кнопке ниже, вы сможете ввести необходимые данные и скачать готовый обработчик, полностью настроенный для передачи заявок по api в CPAgetti.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.