Добрый день
Ситуация такая, создана была в корзине
Создал функцию в корзине купить все позиции в один клик без регестрации, в сплывающем окне водим все данные и отправляем, фуннкция прекрасно работает
А вот заказа приходит без имени телефона и мыла (((
Не знаю как быть (((
Помогите умоляю
Вот код:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
function _is($elm, $num=3) {
if (isset($elm) && strlen($elm)>$num)
return true;
return false;
}
$res = array();
$res['result'] = 'error';
$res['mes'] = 'unknown';
$res['post'] = $_POST;
$fio = isset($_POST['fio']) ? $_POST['fio'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$phone = isset($_POST['phone']) ? $_POST['phone'] : '';
/*
if ( _is($fio,3) && ( _is($phone,7) || _is($email,5) ) )
{
*/
if(CModule::IncludeModule("catalog") && CModule::IncludeModule("sale"))
{
//есть ли товары в корзине?
$arCartItems = array();
$total_price = 0;
$total_num = 0;
$sostav = '';
$dbBasketItems = CSaleBasket::GetList(false,
array("FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID, "ORDER_ID" => "NULL", "DELAY" => "N"),
false, false,
array("ID","NAME","QUANTITY", "PRICE"));
while ($arItem = $dbBasketItems->Fetch()) {
$arCartItems[] = $arItem;
$sostav .= '<br>'.$arItem['NAME'].' ('.$arItem['QUANTITY'].' шт. по '.$arItem['PRICE'].' руб.)';
$total_num += (int)$arItem['QUANTITY'];
$total_price += $arItem['PRICE']*$arItem['QUANTITY'];
}
$sostav .='<br>';
$res['items'] = $arCartItems;
$user_id = 0;
global $USER;
if ($USER::IsAuthorized()) {
$user_id = $USER->GetID();
}
if(!$user_id )
{
$res['not_auth'] = 1;
$user_id = 633; //1==admin - все заказы 1клик из козины, прикрепляются к нему
} else {
$res['authed'] = $user_id;
}
/*
$res['try_auth'] = 1;
//пароль для нового пользователя
$pass = rand(100000, 999999);
//группы, в которых он будет состоять
$groups = array(3,4,5);
$user_id = $USER->Add(array(
"NAME" => $_POST['fio'],
"EMAIL" => $_POST['email'],
"LOGIN" => $_POST['email'],
"PERSONAL_PHONE" => $_POST['phone'],
"LID" => "ru",
"ACTIVE" => "Y",
"GROUP_ID" => $groups,
"PASSWORD" => $pass,
"CONFIRM_PASSWORD" => $pass,
));
if ( !$USER->Authorize($user_id) )
{
$res['auth_failed'] = $USER->LAST_ERROR;
$user_id = 633; //admin - все заказы 1клик из козины, прикрепляются к нему
}
//$error_text = $USER->LAST_ERROR;
} else {
$USER->Logout();
$res['authed'] = 1;
*/
if ($total_num>0)
{
//PAY_SYSTEM_ID, PRICE_DELIVERY, DELIVERY_ID, DISCOUNT_VALUE, TAX_VALUE можно не указывать
$arFields = array(
"LID" => SITE_ID,
"PERSON_TYPE_ID" => 1,
//Вместо ### укажите конкретный ID цены
"PRICE" => $total_price, //$ar_res['PRICES'][2]['PRICE'],
"PAYED" => "N",
"CANCELED" => "N",
"STATUS_ID" => "N",
"CURRENCY" => "RUB",
"USER_ID" => $user_id,
"USER_DESCRIPTION" => $_POST['message']
);
$ORDER_ID = IntVal(CSaleOrder::Add($arFields));
if ($ORDER_ID > 0)
{
CSaleBasket::OrderBasket($ORDER_ID, 0, SITE_ID);
//подготовка сообщения
$res['result'] = 'OK';
$res['order'] = array(
'id' => $ORDER_ID,
'num' => $total_num,
'price' => $total_price
);
$res['basket'] = getBacketInfo();
$arEventFields = array(
"ORDER_ID" => $ORDER_ID,
"SOSTAV" => $sostav, //'Товар: '.$ar_res['NAME'], // '<pre>'.print_r($ar_res,true).'</pre>',
"U_FIO" => $fio,
"U_PHONE" => $phone,
"U_EMAIL" => $email,
"PRICE" => "",
"NUM" => $total_num,
"SUM" => (int)($total_price)." руб",
"BCC" => $email,
"SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
);
CEvent::SendImmediate("SALE_NEW_ORDER_ONE_STEP", SITE_ID, $arEventFields, "N");
} else {
$res['mes'] = 'неудалось создать заказ';
}
} else {
$res['mes'] = 'нет товаров в корзине';
}
} else {
$res['mes'] = 'модули не подключены';
}
/*
} else {
$res['mes'] = 'Заполните поля формы (мин. кол-во символов: 3,7,5 для фио, тел. и емайла соответственно)';
}
*/
echo json_encode($res);
Ситуация такая, создана была в корзине
Создал функцию в корзине купить все позиции в один клик без регестрации, в сплывающем окне водим все данные и отправляем, фуннкция прекрасно работает
А вот заказа приходит без имени телефона и мыла (((
Не знаю как быть (((
Помогите умоляю
Вот код:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
function _is($elm, $num=3) {
if (isset($elm) && strlen($elm)>$num)
return true;
return false;
}
$res = array();
$res['result'] = 'error';
$res['mes'] = 'unknown';
$res['post'] = $_POST;
$fio = isset($_POST['fio']) ? $_POST['fio'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$phone = isset($_POST['phone']) ? $_POST['phone'] : '';
/*
if ( _is($fio,3) && ( _is($phone,7) || _is($email,5) ) )
{
*/
if(CModule::IncludeModule("catalog") && CModule::IncludeModule("sale"))
{
//есть ли товары в корзине?
$arCartItems = array();
$total_price = 0;
$total_num = 0;
$sostav = '';
$dbBasketItems = CSaleBasket::GetList(false,
array("FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID, "ORDER_ID" => "NULL", "DELAY" => "N"),
false, false,
array("ID","NAME","QUANTITY", "PRICE"));
while ($arItem = $dbBasketItems->Fetch()) {
$arCartItems[] = $arItem;
$sostav .= '<br>'.$arItem['NAME'].' ('.$arItem['QUANTITY'].' шт. по '.$arItem['PRICE'].' руб.)';
$total_num += (int)$arItem['QUANTITY'];
$total_price += $arItem['PRICE']*$arItem['QUANTITY'];
}
$sostav .='<br>';
$res['items'] = $arCartItems;
$user_id = 0;
global $USER;
if ($USER::IsAuthorized()) {
$user_id = $USER->GetID();
}
if(!$user_id )
{
$res['not_auth'] = 1;
$user_id = 633; //1==admin - все заказы 1клик из козины, прикрепляются к нему
} else {
$res['authed'] = $user_id;
}
/*
$res['try_auth'] = 1;
//пароль для нового пользователя
$pass = rand(100000, 999999);
//группы, в которых он будет состоять
$groups = array(3,4,5);
$user_id = $USER->Add(array(
"NAME" => $_POST['fio'],
"EMAIL" => $_POST['email'],
"LOGIN" => $_POST['email'],
"PERSONAL_PHONE" => $_POST['phone'],
"LID" => "ru",
"ACTIVE" => "Y",
"GROUP_ID" => $groups,
"PASSWORD" => $pass,
"CONFIRM_PASSWORD" => $pass,
));
if ( !$USER->Authorize($user_id) )
{
$res['auth_failed'] = $USER->LAST_ERROR;
$user_id = 633; //admin - все заказы 1клик из козины, прикрепляются к нему
}
//$error_text = $USER->LAST_ERROR;
} else {
$USER->Logout();
$res['authed'] = 1;
*/
if ($total_num>0)
{
//PAY_SYSTEM_ID, PRICE_DELIVERY, DELIVERY_ID, DISCOUNT_VALUE, TAX_VALUE можно не указывать
$arFields = array(
"LID" => SITE_ID,
"PERSON_TYPE_ID" => 1,
//Вместо ### укажите конкретный ID цены
"PRICE" => $total_price, //$ar_res['PRICES'][2]['PRICE'],
"PAYED" => "N",
"CANCELED" => "N",
"STATUS_ID" => "N",
"CURRENCY" => "RUB",
"USER_ID" => $user_id,
"USER_DESCRIPTION" => $_POST['message']
);
$ORDER_ID = IntVal(CSaleOrder::Add($arFields));
if ($ORDER_ID > 0)
{
CSaleBasket::OrderBasket($ORDER_ID, 0, SITE_ID);
//подготовка сообщения
$res['result'] = 'OK';
$res['order'] = array(
'id' => $ORDER_ID,
'num' => $total_num,
'price' => $total_price
);
$res['basket'] = getBacketInfo();
$arEventFields = array(
"ORDER_ID" => $ORDER_ID,
"SOSTAV" => $sostav, //'Товар: '.$ar_res['NAME'], // '<pre>'.print_r($ar_res,true).'</pre>',
"U_FIO" => $fio,
"U_PHONE" => $phone,
"U_EMAIL" => $email,
"PRICE" => "",
"NUM" => $total_num,
"SUM" => (int)($total_price)." руб",
"BCC" => $email,
"SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
);
CEvent::SendImmediate("SALE_NEW_ORDER_ONE_STEP", SITE_ID, $arEventFields, "N");
} else {
$res['mes'] = 'неудалось создать заказ';
}
} else {
$res['mes'] = 'нет товаров в корзине';
}
} else {
$res['mes'] = 'модули не подключены';
}
/*
} else {
$res['mes'] = 'Заполните поля формы (мин. кол-во символов: 3,7,5 для фио, тел. и емайла соответственно)';
}
*/
echo json_encode($res);