Документ покрывает операции **Website.ConfirmMobilePhone** и **Website.ResendMobilePhoneConfirmationCode** из типового ТЗ: ввод кода из SMS и повторная отправка SMS.
Предусловия: выполнен быстрый старт (SDK, конфиг, getMindboxClient()). Первичная отправка SMS не вызывается этими двумя операциями — она выполняется сценарием Mindbox раньше (например, после регистрации или после передачи нового номера при редактировании клиента).
| Операция Mindbox | Хелпер SDK | Ответ SDK | Синхронность (по умолчанию в хелпере) |
|---|---|---|---|
Website.ConfirmMobilePhone |
confirmMobile(...) |
MindboxSmsConfirmationResponse |
Синхронно ($isSync = true) |
Website.ResendMobilePhoneConfirmationCode |
resendConfirmationCode(...) |
MindboxCustomerProcessingStatusResponse |
Синхронно ($isSync = true) |
Имена операций **Website.*** в проекте могут отличаться — уточните у менеджера Mindbox.
- Идентификация клиента — через
CustomerRequestDTOтак же, как в других вызовах (напримерsetId('mindboxId', …),setId('bitrixId', …)— набор id зависит от вашей интеграции). - Код из SMS — объект
SmsConfirmationRequestDTO, поле кода:setCode(...).
- Идентификация клиента — достаточно
CustomerRequestDTOс теми же идентификаторами, по которым Mindbox понимает, кому переотправить код (в контексте уже начатого подтверждения номера).
Подробнее о полях — в документации Mindbox и примерах SDK.
Типичная точка вызова — обработчик формы или AJAX после ввода кода пользователем (не обязательно событие ядра Битрикс).
<?php
use Mindbox\DTO\V3\Requests\CustomerRequestDTO;
use Mindbox\DTO\V3\Requests\SmsConfirmationRequestDTO;
use Mindbox\Exceptions\MindboxClientException;
$customer = new CustomerRequestDTO();
$customer->setId('bitrixId', (string)$bitrixUserId);
$smsConfirmation = new SmsConfirmationRequestDTO();
$smsConfirmation->setCode($codeFromUserInput);
try {
$response = getMindboxClient()
->customer()
->confirmMobile(
$customer,
$smsConfirmation,
'Website.ConfirmMobilePhone',
true,
true
)
->sendRequest();
$status = $response->getSmsConfirmation();
} catch (MindboxClientException $e) {
// Логирование, сообщение пользователю
}Параметры confirmMobile:
confirmMobile($customer, $smsConfirmation, $operationName, $addDeviceUUID = true, $isSync = true).
**$addDeviceUUID**— передавать ли DeviceUUID (по правилам проекта).**$isSync**— для ТЗ «синхронно» оставьтеtrue.
<?php
use Mindbox\DTO\V3\Requests\CustomerRequestDTO;
use Mindbox\Exceptions\MindboxClientException;
$customer = new CustomerRequestDTO();
$customer->setId('bitrixId', (string)$bitrixUserId);
try {
$response = getMindboxClient()
->customer()
->resendConfirmationCode(
$customer,
'Website.ResendMobilePhoneConfirmationCode',
true,
true
)
->sendRequest();
} catch (MindboxClientException $e) {
// Логирование, лимиты повторной отправки — по продуктовым правилам
}Сигнатура: resendConfirmationCode($customer, $operationName, $addDeviceUUID = true, $isSync = true).
| Сценарий | Что делает сайт на Mindbox | Что уже сделано сценарием до вызовов ниже |
|---|---|---|
| Регистрация | После регистрации клиента в Mindbox на телефон уходит SMS; пользователь вводит код → **ConfirmMobilePhone** |
Первичная отправка SMS |
| Смена телефона | Новый номер передаётся до подтверждения; SMS уходит автоматически; при необходимости **ResendMobilePhoneConfirmationCode**, затем **ConfirmMobilePhone** |
Первичная отправка на новый номер (операция смены номера в вашем проекте — см. редактирование) |
- Не подставляйте код из SMS в логи и публичные ответы.
- Разбор ответа и кодов ошибок Mindbox — по общей документации API и логам SDK.
- Расширенные примеры: CustomerHelper в общих примерах (в т.ч.
sendAuthorizationCode/checkAuthorizationCode, если понадобятся вне этого ТЗ).