Как узнать e-mail покупателя по заказу в битрикс?
Узнать e-mail покупателя по заказу в битрикс достаточно редкая задача. Опишу как это сделать.
Почта пользователя битрикс хранится в таблице с пользователями, почта, которую пользователь ввел при оформлении заказа хранится в другом месте. Рассмотрим по порядку:
Как узнать e-mail покупателя по заказу в битрикс?
Разберем работу функции, которая будет получать e-mail покупателя по заказу. В функцию передается параметр - код заказа. Затем, мы бегаем, по свойствам заказа, определяем тип свойства - значение IS_EMAIL должно быть Y, и возвращаем в случае, если нашли свойство типа EMAIL и его значение корректно (функция check_email).
<?
function getOrderEmail($order) {
$res = CSaleOrderPropsValue::GetOrderProps($order);
while ($row = $res->fetch()) {
if ($row['IS_EMAIL']=='Y' && check_email($row['VALUE'])) {
return $row['VALUE'];
}
}
return false;
}
?>
Этот код можно дополнить возвратом e-mail из таблицы с пользователями, в случае если по какой-то причине e-mail в заказе отсутствует.
Как получить email текущего пользователя?
<?
if ($order = CSaleOrder::getById($order)) {
if ($user = CUser::GetByID($order['USER_ID'])->fetch()) {
return $user['EMAIL'];
}
}
?>
E-mail текущего пользователя вне заказа получаем c помощью CUser::GetByID.
<?
global $USER;
$userId = $USER->GetID();
$rsUser = CUser::GetByID($userId);
$arUser = $rsUser->Fetch();
print_r($arUser);
?>
В массиве $arUser найдем e-mail текущего пользователя.
Объединив два фрагмента кода, в итоге получим функцию, с помощью которой можно будет узнать e-mail покупателя по заказу в битрикс и в случае отсутствия получить почту из другого места. Всем удачи и успехов в работе!