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

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

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

Для этого разместим код из примера ниже в файл 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)
{
    global $APPLICATION;

    $fields = $event->getParameter('fields');


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

    //идентификтаор свойства для хранения номера телефона
    $phonePropId = 3;


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

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

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

        if ($profileId = CSaleOrderUserProps::Add($arProfileFields)) {
//            echo 'Profile ID: '.$profileId.PHP_EOL;

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

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

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

//                    echo 'ID: '.$resultProp.PHP_EOL;
                }
            }
        } else {
//            echo $APPLICATION->GetException();
        }
    }


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

Чтобы проверить добавление, перейдите на страницу покупаталей - Администрирование / Магазин / Покупатели / Список покупателейи найдите добавленного пользователя.

2022-04-02_17-29.png

Затем на на странице покупателя, в соответствующей вкладке найдите профиль с названием Профиль покупателя (7 xxx xxx xx xx)

2022-04-02_17-37.png