Нам необходимо получать номер заявки (из КБ) ответом на отправку данных посредством 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)
У нас привязано несколько интернет магазинов, для каждого магазина нужен свой номер заявки из клиентбызы получать, необходимо для статистики.
Синхронизация тут не подойдет т.к. несколько магазинов с разным товаром.
Надеюсь ясно выразился.
1
Получение номера заявки после отправки данных из интернет магазина в КБ (Без синхронизации)
Автор Sava, 31 мая 2016 18:27
curl_exec curl_setopt CURLOPT_URL CURLOPT_RETURNTRANSFER CURLOPT_POST CURLOPT_POSTFIELDS submit_vars clientbase.ru/questionare.php questionare.php
Сообщений в теме: 6
#1
Отправлено 31 Май 2016 - 18:27
#2
Отправлено 07 Июнь 2016 - 16:32
Вы хотите писать в базу новую заявку в КБ, или же просто получать номер в ответ на запрос с сайта?
#3
Отправлено 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 они добавились.
В дальнейшем, этот пример вычисления будет добавлен в документацию на нашем сайте.
$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
Отправлено 11 Июнь 2016 - 03:15
Где посмотреть пример (запроса, получения ответа, форматы)?
Какое время ответа второго запроса (который данные отправляет и получает ответ)?
Нужно просто получить id заявки, который был присвоен самой системой клиентбаз, а не нами самими.
Чтобы потом можно было выгрузить заявки из клиентбаз и сравнить с теми, которые мы собрали в статистической программе.
И что это? Откуда оно должно браться:
$submit_vars = array();
$submit_vars['qst_text'] = '{$field1660}'; <===========
$submit_vars['qst_id'] = 10; <===========
Заранее благодарю.
Какое время ответа второго запроса (который данные отправляет и получает ответ)?
Нужно просто получить id заявки, который был присвоен самой системой клиентбаз, а не нами самими.
Чтобы потом можно было выгрузить заявки из клиентбаз и сравнить с теми, которые мы собрали в статистической программе.
И что это? Откуда оно должно браться:
$submit_vars = array();
$submit_vars['qst_text'] = '{$field1660}'; <===========
$submit_vars['qst_id'] = 10; <===========
Заранее благодарю.
Сообщение отредактировал Sava: 14 Июнь 2016 - 17:27
#5
Отправлено 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 поля добавленной записи?
Можно пример?
$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
Отправлено 21 Июнь 2016 - 15:13
Как я писал ранее, значения из системных полей получить не получится. Т.е. получить ID возможно только одним способом - создать числовое поле и написать вычисление, которое будет заполнять это поле значением ID записи. В указанном выше примере поле field1660 является как раз таким числовым полем, содержащим значение из поля "ID".
Пример кода
Если у Вас не получается самостоятельно написать вычисление, то Вам стоит обратиться к нашим специалистам. Для этого, заполните заявку на нашем сайте - https://clientbase.r...ersonal_config/
Пример кода
// Отправляем данные $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
Отправлено 10 Октябрь 2016 - 14:09
Не проще через внешний php скрипт методом POST все это принять и через ECHO вывести номер созданной записи?
На вскидку, не проверяя:
Соответственно для каждого передаваемого параметра нужна пара типа
Если уж совсем лениво, можно загнать имена полей в массив и по циклу эту пару обрабатывать.
ИМХО
Понятно, что нужно будет и защиту делать и csrf передавать, но это уже детали фольклора.
На вскидку, не проверяя:
<? $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 анонимных