Привет! Очередная статья по отправке заявок в cpa сервисы, сегодня это будет партнерка cpagetti.com. Подробно разберем что куда и как отправлять и напишем обработчик для правильной отправки лидов по API в CPAgetti, для справки CPAgetti — партнерская программа, работающая с вертикалями: Nutra / Gambling / Crypto / Dating.
Итак, переходим непосредственно к основному вопросу нашей статьи, к настройке отправки лидов по API в CPA сеть CPAgetti. Готовых лендингов с настроенным апи я у них к сожалению не нахожу, видимо нет такой опции (если вдруг все-таки есть пишите в комментах). Но при этом все необходимые данные что и куда отправлять на сайте есть. Для этого нажимаем пункт меню Инструменты и там выбираем вкладку API.
Как можно увидеть здесь расписаны все обязательные и не обязательные поля для отправки, ниже расписаны коды ошибок, которые отправит сервер в ответ на наш запрос если лид принят не будет. Ну и в третьем блоке приводится полный код отправки заявки через 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.