Авторизация по номеру телефона

Создание профиля покупателя при регистрации

В некоторых случаях етсь необходимость при регистрации пользователя создавать профиль покупателя. Это необходимо для того чтобы при переходе пользователя на страницу оформления заказ, у него сразу были подставлены поля из профиля, в частности номер телефона.

Дл яреализации этой задачи достаточно разместить следующий код в файл local/bitrix/php_interface/init.php либо, если его нет, в файле bitrix/php_interface/init.php.

При этом важно проверить и при необходимости заменить значения для идентификтора типа плательщика $personalTypeId и идентификатора свойства заказа с номером телефона (ORDER_PROPS_ID). При необходимости вы можете самостоятельно расширить набор свойств заказа которые попадут в профиль покупателя дополнив массив $arProfileProps


$eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandler("bxmaker.authuserphone", "onUserAdd", "bxmaker_authuserphone_onUserAdd");

    function bxmaker_authuserphone_onUserAdd(\Bitrix\Main\Event $event)
    {
        $arFields = $event->getParameter('FIELDS');

        //идентификтаор типа плательщика
        $personalTypeId = 1;

        //массив свойств создаваемого профиля
        $arProfileProps = array(
            array(
                "ORDER_PROPS_ID" => 3, //идентификатор свойства заказа с номером телефона для конкретного типа плательщика
                "NAME" => "Телефон",
                "VALUE" => $arFields['PHONE']
            )
        );

        if (\Bitrix\Main\Loader::includeModule('sale')) {

            //создаём новый профиль --------
            $arProfileFields = array(
                "NAME" => "Профиль покупателя (" . $arFields['PHONE'] . ')',
                "USER_ID" => intval($arFields['USER_ID']),
                "PERSON_TYPE_ID" => $personalTypeId
            );
            $profileId = CSaleOrderUserProps::Add($arProfileFields);

            //если профиль создан
            if ($profileId) {

                //добавляем значения свойств к созданному ранее профилю
                foreach ($arProfileProps as $arProp) {

                    $resultProp = CSaleOrderUserPropsValue::Add(array_merge($arProp, array(
                        "USER_PROPS_ID" => $profileId,
                    )));
                }
            }
        }

        $result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, array());
        return $result;
    }


Чтобы провреить добавление, можно на странице добавления заказа в админке найти нужного пользователя, выбрать его и в списке появившемся с профилем найти профиль с названием Профиль покупателя (7 xxx xxx xx xx)