Перейти к содержимому


Получение номера заявки после отправки данных из интернет магазина в КБ (Без синхронизации)

curl_exec curl_setopt CURLOPT_URL CURLOPT_RETURNTRANSFER CURLOPT_POST CURLOPT_POSTFIELDS submit_vars clientbase.ru/questionare.php questionare.php

Сообщений в теме: 6

#1 Sava

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 31 Май 2016 - 18:27

Нам необходимо получать номер заявки (из КБ) ответом на отправку данных посредством curl_setopt (либо альтернативой через ajax).
Расскажите какие у нас есть возможности? Или где копать?

Мы отправляем данные
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://********************.clientbase.ru/questionare.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $submit_vars);
$result_curl = curl_exec($ch);
($result_curl возвращает done)

У нас привязано несколько интернет магазинов, для каждого магазина нужен свой номер заявки из клиентбызы получать, необходимо для статистики.
Синхронизация тут не подойдет т.к. несколько магазинов с разным товаром.

Надеюсь ясно выразился.

#2 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 07 Июнь 2016 - 16:32

Вы хотите писать в базу новую заявку в КБ, или же просто получать номер в ответ на запрос с сайта?
"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 Timur

    Активный участник

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 08 Июнь 2016 - 17:09

Здравствуйте!

$submit_vars = array();
$submit_vars['qst_text'] = '{$field1660}';
$submit_vars['qst_id'] = 10;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://********************.clientbase.ru/questionare.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $submit_vars);
$result_curl = curl_exec($ch);
echo "<code><pre>" . $result_curl . "</pre ></code>";
curl_close($ch);

field1660 - поле Номер в которое дублируется значение из поля ID. В целях безопасности, значения из системных полей получать нельзя. То есть необходимо после первого запроса отправлять второй. Первым запросом отправляем данные, вторым спаришиваем под каким id они добавились.

В дальнейшем, этот пример вычисления будет добавлен в документацию на нашем сайте.

#4 Sava

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 11 Июнь 2016 - 03:15

Где посмотреть пример (запроса, получения ответа, форматы)?
Какое время ответа второго запроса (который данные отправляет и получает ответ)?
Нужно просто получить id заявки, который был присвоен самой системой клиентбаз, а не нами самими.
Чтобы потом можно было выгрузить заявки из клиентбаз и сравнить с теми, которые мы собрали в статистической программе.

И что это? Откуда оно должно браться:
$submit_vars = array();
$submit_vars['qst_text'] = '{$field1660}'; <===========
$submit_vars['qst_id'] = 10; <===========

Заранее благодарю.

Сообщение отредактировал Sava: 14 Июнь 2016 - 17:27


#5 Sava

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 18 Июнь 2016 - 20:19

При получении заявки у нас на сайте срабатывает код:

$submit_vars['page_charset'] = 'utf-8';
$submit_vars['k_input_field_10_3400'] = $product_info['name'];
$submit_vars['k_input_field_10_1690'] = $order['firstname'];
$submit_vars['k_input_field_10_1700'] = $order['telephone'];
$submit_vars['k_input_field_10_3831'] = $order['product_size'];
$submit_vars['k_input_field_10_3841'] = $order['address'];
$submit_vars['k_input_field_10_3861'] = $order['email'];
$submit_vars['k_input_field_10_4041'] = $_COOKIE['utm_source'];
$submit_vars['k_input_field_10_4051'] = $_COOKIE['utm_medium'];
$submit_vars['k_input_field_10_4061'] = $_COOKIE['utm_content'];
$submit_vars['k_input_field_10_4071 '] = $_COOKIE['utm_campaign'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://**************************.clientbase.ru/questionare.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $submit_vars);
$result_curl = curl_exec($ch);
curl_close($ch);


Вопрос, как отправить второй запрос и получить id поля добавленной записи?
Можно пример?

#6 Timur

    Активный участник

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 21 Июнь 2016 - 15:13

Как я писал ранее, значения из системных полей получить не получится. Т.е. получить ID возможно только одним способом - создать числовое поле и написать вычисление, которое будет заполнять это поле значением ID записи. В указанном выше примере поле field1660 является как раз таким числовым полем, содержащим значение из поля "ID".

Пример кода

// Отправляем данные
$submit_vars = array();
$submit_vars['page_charset'] = 'utf-8';
$submit_vars['k_input_field_10_3400'] = 'dfds';
$submit_vars['k_input_field_10_1690'] = 'dgsg';
$submit_vars['k_input_field_10_1700'] = '342342';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://kirill.crm.loc/cb_distr/questionare.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $submit_vars);
$result_curl = curl_exec($ch);
// Получаем Done
echo "<code><pre>". $result_curl . "</code></pre>";
curl_close($ch);

// Запрашиваем любое поле из последней записи, кроме системных
$submit_vars = array();
$submit_vars['qst_text'] = '{$field1660}';
$submit_vars['qst_id'] = 10;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://kirill.crm.loc/cb_distr/questionare.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $submit_vars);
$result_curl = curl_exec($ch);
// Получаем ответ. к примеру: 65
echo "<code><pre>". $result_curl . "</code></pre>";
curl_close($ch);

Если у Вас не получается самостоятельно написать вычисление, то Вам стоит обратиться к нашим специалистам. Для этого, заполните заявку на нашем сайте - https://clientbase.r...ersonal_config/

#7 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 10 Октябрь 2016 - 14:09

Не проще через внешний php скрипт методом POST все это принять и через ECHO вывести номер созданной записи?
На вскидку, не проверяя:
<?
$config['script_noauth'] = 1; // Строка должна стоять первой !!!  
require_once "common.php";
$product_info="";
if (isset($_REQUEST['name'])) {$name=$_REQUEST['name]'];} else {$name="";}
if (isset($_REQUEST['firstname'])) {$firstname['firstname'];} else {$firstname="";}
$product_info['name']=$name;
$product_info['firstname']=$firstname;
$zID=insert_query($product_info,"Имя вашей таблицы");
echo $zID;
?>

Соответственно для каждого передаваемого параметра нужна пара типа

if (isset($_REQUEST['name'])) {$name=$_REQUEST['name]'];} else {$name="";}
$product_info['name']=$name;

Если уж совсем лениво, можно загнать имена полей в массив и по циклу эту пару обрабатывать.

ИМХО

Понятно, что нужно будет и защиту делать и csrf передавать, но это уже детали фольклора.

Сообщение отредактировал Александр Пономарев: 10 Октябрь 2016 - 14:17






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных