Привет человек, я ! Нужна помощь?

Тесты и работающая форма

Для добавление лида Нам нужно создать продукт в APP раздел продукты
0. Самое важное поле - "Поле контроля"
  • URL - добавляем ссылку где находится форма. Пример ссылки (http://yaroslav-samoylov.com/.root/mvc/)
  • Redirect - куда попадает учасница после успешной отправки
1. Добавлять в АmoCRM
  • Ставим галочку если нужно добавлять в АмоCRM и заполняем все поля (Сделка, Теги в Амо, Цена товара, ID товара)
  • Сделка, Теги в Амо - думаю здесь понятно
  • Цена товара - это поле опредиляет цену сделки в АmoCRM и в *E-Autopay
  • ID товара - берем id товара в E-Autopay
* цена изменяется если в настройках товара E-Autopay в разделе "Стоимость и размеры комиссионных" > "Произвольная стоимость товара" включена возможность
2. Добавлять в GetResponse
  • Ставим галочку если нужно добавлять в GetResponse и заполняем все поля
  • первое поле "Кампания в GR" определяет в какую кампанию будут попадать новые контакты. Второе поле определяет в какую кампанию перевести после оплаты сделки
  • если все хорошо на сделке видим зельоный кружок, если ошибка что-то пошло нетак
3. Отправка СМС
  • Ставим галочку если нужно отправлять СМС
  • - в тексте смс уже вказано имя если в форме имя не указывается оно автоматичести заменяется на "Уважаемая участница"
  • - Пример смс "Альфред, вы подали заявку". Тоесть в этом поле должно бить ", вы подали заявку"
-- Категория не обезательно

Пример


Add AmoCRM and GetRespons

Добавление сделки в AmoCRM и GetRespons


    public function actionAdd()
    {

        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
        header('Access-Control-Max-Age: 1000');
        header('Access-Control-Allow-Headers: Content-Type');
        // переменные для использования
        $response =array();
        $response['AMOAnswerLead'] = NULL;
        $GRAnswer = NULL;

        $utm_medium=NULL;
        $utm_source=NULL;
        $utm_campaign=NULL;
        $utm_term=NULL;
        $utm_content=NULL;
        $parsed_url['query'] = NULL;
        //парсим ссылку на UTM-метки
        $urls = $_SERVER['HTTP_REFERER'];
        $parsed_url = parse_url($urls);
        if (!empty($parsed_url['query'])) {
            $str = $parsed_url['query'];
            parse_str($str);
        }
        
        
        // достаем продукт по URL 
        $URL = strtok($_SERVER['HTTP_REFERER'], '?');
        $product = Webhook::getURL($URL);
        $products = $product['attributes'];

        // SMS
        // Если нет имени то подставляем свое для СМС (GR)
        // используется для подписки на вебинар
        if (empty($_POST['name'])) {
            $_POST['name'] = 'Уважаемая участница';
        }
        if (empty($_POST['phone'])) {
            $_POST['phone'] = NULL;
        }
        if ($products['smsview'] == 1) {
            $SMS = send_sms(
                $_POST['name'],
                $_POST['phone'],
                $products['SmS']
            );
        }

        // добавляем в АМО и получаем id сделки 
        // готово работает AMO
        
        if ($products['amoview'] == 1) {
            if (!empty($_POST['key'])) 
            {
                $lead = AppLeads::getAmo($_POST['key']);
                amo_add_task($_POST['key'], $products['amoName'], $lead['attributes']['manager']);
                $response['AMOAnswerLead'] = $_POST['key'];
            } 
            else 
            {
                $lead['name'] = $products['amoName'];
                $lead['price'] = $products['amoPrice'];
                $lead['utm'] = $utm_source.'>'.$utm_medium.'>'.$utm_term.'>'.$utm_content.'>'.$utm_campaign;
                $lead['tags'] = $products['amoTags'];
                $contact['name'] = $_POST['name'];
                $contact['phone'] = $_POST['phone'];
                $contact['email'] = preg_replace("/( )|(\s)|( )/", '', $_POST['email']);
                $contact['tags'] = $products['amoTags'];
                
                // создадим сделку и создадим/обновим сделку
                $AMOAnswerLead = amo_add_lead($lead);
                $AMOAnswerContact = amo_add_contact($contact, $AMOAnswerLead);

                $response['AMOAnswerLead'] = $AMOAnswerLead;
                $response['AMOAnswerContact'] = $AMOAnswerContact;
            }
        }

        // GR ждем 1 -1 или error code 
        $error = "";
        if ($products['grview'] == 1) {
            $GRAnswer = gr_add_lead(
                $_POST['CAMPAIGN_ID'] = $products['grNew'],
                $_POST['name'] = $_POST['name'],
                $_POST['phone'] = $_POST['phone'],
                $_POST['email'] = preg_replace("/( )|(\s)|( )/", '', $_POST['email']),
                $_POST['url'] = $_SERVER['HTTP_REFERER'],
                $response['AMOAnswerLead'],
                $error
            );
        };

        // добавляем/проверяем контакт
        function addcontact($name, $phone, $email)
        {   
            $contact = new AppContact();
            $contact->name = $name;
            $contact->email = preg_replace("/( )|(\s)|( )/", '', $email);
            $contact->phone = preg_replace('~[^0-9]+~','',$phone);
            $contact->save();
            return $contact->id;
        }

        $contact = AppContact::getEmail($_POST['email']);

        // если не нашли в базе контакт добавляем новый - используем функцию addcontact()
        if (empty($contact->email)) {
            $IDcontact = addcontact($_POST['name'], $_POST['phone'], $_POST['email']);
        } else {
            $IDcontact = $contact['id'];
        }
        
        // добавляем сделку и крепим к ней контакт 
        if (empty($_POST['key'])) 
        {
            $lead = new AppLeads();

            $lead->contact = $IDcontact;
            $lead->amo = $response['AMOAnswerLead'];
            $lead->status = '1';
            $lead->statusgr = $GRAnswer;
            $lead->manager = 108840;
            $lead->data = date("Y.m.d H:i:s");
            $lead->eautopay = NULL;
            $lead->utmmedium = $utm_medium;
            $lead->utmsourse = $utm_source;
            $lead->utmcampaing = $utm_campaign;
            $lead->utmterm = $utm_term;
            $lead->utmcontent = $utm_content;
            $lead->product = $products['id'];
            $lead->save();
        }
        
        if ($products['redirect'] !== 0) {
            $response['redirect'] = $products['redirect'];
        } else {
            $response['redirect'] = '';
        }
        
        echo json_encode($response);
    }


Webhook and E-autopay

Куда слать данные о сделке? Туда > http://app.polza.com/leads/eautopay


public function actionEautopay()
   {
       $error = '';
       $id = $_POST['additional_field_1'];
       // $product_id = $_POST['product_id'];
       if (!empty($id)) {
           $one = Leads::getAmoedit($id);
           $email = $one->email;
           $idProduct = $one->product;
           $products = Webhook::getOne($idProduct);
           if ($products->grview == 1) {
               $GR = gr_move_lead(
               $email,
               $products->eautopay,
               $products->grNew,
               $products->grEnd,
               $error
               );
           print_r($GR);
           }            
       }
       if (!empty($id)) {
           try {
               $amo = amo_move_lead($id);
           } catch (Exception $e) {
               $error =
               "Ошибка при обновлении лида в amoCRM:".
               $e->getMessage().
               "Отладочная информация (POST-запрос к скрипту):".
               print_r($_POST,true);
           }
           print_r($amo);
       }
   }