Зачем использовать WhatsApp для верификации?
Добавление дополнительного канала доставки наряду с SMS
WhatsApp позволяет клиентам получать коды через интернет, когда прием SMS ненадежен. Клиентам необходимы WhatsApp и активное подключение к интернету.Сокращение шагов при вводе кода
Кнопки копирования кода уменьшают количество ручного ввода. Сценарии One-tap и Zero-tap позволяют сократить переключение между приложениями на поддерживаемых интегрированных приложениях для Android.Оптимизация стоимости успешной верификации
Сравнивайте общие расходы на каналы в расчете на одну успешную верификацию по рынкам, включая тарифы на аутентификацию, применимые международные тарифы на аутентификацию, списания YCloud и резервную отправку по SMS. Meta взимает плату за доставленные сообщения; недоставленное сообщение не влечет за собой соответствующую комиссию Meta за сообщение. Другие списания зависят от вашего плана YCloud. См. разделы Цены WhatsApp и Цены Meta.Поиск точек оттока в процессе верификации
Отслеживайте прием запросов API, доставку сообщений и успешную верификацию по отдельности, чтобы выявлять этапы оттока. Ваш бэкенд должен отклонять истекшие, повторно использованные или недействительные коды.Перед началом работы
- Войдите в YCloud и подключите WABA и отправителя.
- Подготовьте логику запроса, генерации, хранения и валидации кодов. В этом руководстве используется API сообщений WhatsApp; жизненный цикл кода контролируется вашей системой. Информацию о сервисе верификации YCloud см. в разделе Verify.
- Подготовьте серверный API-ключ и обработчик webhook.
- Используйте тестового получателя, который запросил код. Запрос кода не является согласием на получение последующих маркетинговых рассылок.
- Настройте SMS-канал и реализуйте правила резервного переключения (fallback) в вашем бэкенде.
1. Выберите способ работы с кодом
| Пользовательский опыт и интеграция | Пример |
|---|---|
| Копирование кода Скопируйте в WhatsApp, затем вставьте на своем веб-сайте или в приложении. Работает на всех платформах. Поле ввода кода и валидация на бэкенде. | ![]() |
| В одно касание / Автозаполнение Нажмите Автозаполнение, чтобы передать код в приложение для Android. Интегрируйте Android SDK для OTP от Meta и настройте имя пакета и хеш ключа подписи приложения. | ![]() |
| Zero-tap Ваше приложение для Android получает код без переключения в WhatsApp или нажатия кнопки. Интегрируйте Android SDK для OTP от Meta, настройте имя пакета и хеш ключа подписи приложения, а также примите условия использования Zero-tap. | ![]() Иллюстративный экран ввода кода. Для Zero-tap требуется Android. |
2. Создайте шаблон аутентификации
Выберите WABA, название и язык
Откройте раздел Шаблоны для нужного WABA в YCloud, выберите Добавить шаблон и укажите категорию Аутентификация. Используйте строчные буквы, цифры и символы подчеркивания для названия, напримерlogin_verification. Выберите язык ваших клиентов и зафиксируйте точное одобренное название и код языка для отправки. См. раздел Создание шаблона.
Настройка содержимого и действия с кодом
Аутентификация использует предварительно заданный текст с кодом, а также поддерживаемые уведомления о безопасности и сроке действия. Не добавляйте в текст сообщения обычный рекламный текст, URL, медиафайлы или эмодзи. Выберите Копировать код, Автозаполнение или Zero Tap. Для вариантов «Автозаполнение» и Zero Tap укажите фактическое имя пакета Android и хеш подписи, а также завершите интеграцию с приложением. Для Zero Tap также требуется принять соответствующие условия. Для конфигурации API используйте текущий форматsupported_apps, а не устаревшие примеры с верхнеуровневыми параметрами package_name и signature_hash. Следуйте руководствам по интеграции аутентификации для получения подробных сведений об Android SDK и процедуре согласования.
Настройка трех независимых параметров срока действия
Мы рекомендуем установить TTL доставки OTP (
messageSendTtlSeconds) на 30–60 секунд в шаблоне аутентификации. Не превышайте оставшийся срок действия кода. YCloud поддерживает диапазон 30–900 секунд со значением по умолчанию 10 минут для новых шаблонов.
Отображаемое уведомление об истечении срока действия поддерживает значения 1–90 минут и не обеспечивает принудительное истечение срока на бэкенде. TTL доставки останавливает ожидающие попытки доставки; он не отзывает уже доставленные сообщения. См. контракт API YCloud.
Отправьте и проверьте доступность
Отправьте шаблон на модерацию и проверьте его фактический статус проверки. Отправляйте сообщения только после того, как он будет одобрен и станет доступен для использования. В случае отклонения выясните причину и следуйте инструкциям в разделе Проверка и жизненный цикл шаблонов. Не рассчитывайте на фиксированное время одобрения.3. Отправка через API
Отправляйте сообщение сразу после того, как клиент запросит код. Выберите режим отправки, необходимый для вашего сценария:
С любым из эндпоинтов используйте одобренный шаблон аутентификации.
Подготовка запроса
- Выполняйте аутентификацию на стороне сервера с помощью
X-API-Key. - Используйте номера в формате E.164, включая коды стран, для
fromиto. - Установите для
typeзначениеtemplateи используйте одобренное имя и язык для выбранного WABA. - Передавайте один и тот же код в теле сообщения и в параметрах кнопки OTP.
- Связывайте запрос на верификацию с идентификатором сообщения YCloud. Поле
externalIdпомогает при сверке данных, но не гарантирует идемпотентность.
123456 приведено для примера и в рабочей среде должно генерироваться вашей системой верификации:
sub_type: url; не используйте обычную структуру кнопок с кодами маркетинговых купонов. См. разделы Аутентификация с копированием кода и Отправка сообщения WhatsApp. Вы также можете выбрать Ещё → Копировать как cURL у одобренного шаблона и проверить сгенерированные параметры по его конфигурации.
Успешный ответ API не подтверждает доставку. Если время ожидания запроса истекло, проверьте доступные записи сообщений и колбэки перед повторной отправкой.
4. Получение обновлений о доставке
В разделе Разработчикам → Вебхуки создайте эндпоинт, укажите URL колбэка и подпишитесь наwhatsapp.message.updated. Инструкции по проверке подписи, подтверждениям и повторным попыткам см. в руководстве по Webhook.
Сопоставляйте каждый идентификатор сообщения с соответствующим запросом на верификацию:
Отмечайте верификацию завершённой только после того, как ваш бэкенд проверит код. Обрабатывайте дублирующиеся и запоздалые колбэки так, чтобы более ранний статус не перезаписывал более поздний. Используйте Журналы сообщений для ручного анализа.
5. Проектирование интерфейса и резервный канал SMS
Чётко информируйте о канале доставки
Перед отправкой предупредите, что код придёт через WhatsApp. После отправки отобразите маскированный номер получателя, сообщение об ожидании, обратный отсчёт до повторной отправки и доступные альтернативные варианты. Предоставьте клиентам возможность вернуться назад и исправить номер.| Стратегия и пользовательский опыт | Пример интерфейса |
|---|---|
| Сначала WhatsApp, резервный канал SMS Начните с WhatsApp и предложите SMS, если доставка не удалась или занимает слишком много времени. | ![]() |
| Выбор клиента Предложите WhatsApp и SMS перед отправкой, затем покажите обратный отсчёт до повторной отправки и экран ввода кода. | ![]() |
Настройка резервного канала SMS
Установите TTL доставки OTP на 30–60 секунд в шаблоне аутентификации WhatsApp и согласуйте с ним таймер переключения на резервный канал SMS.
Meta взимает плату за доставленные сообщения WhatsApp. Сообщение, срок действия которого истек без доставки, не облагается комиссией Meta; при этом плата за SMS по-прежнему взимается. Отсутствие Webhook о доставке само по себе не доказывает факт недоставки, поэтому списание может произойти за оба канала, если сообщение WhatsApp было доставлено до истечения срока. См. раздел Тарифы WhatsApp.
Отправляйте SMS не более одного раза на один запрос верификации, даже если обратные вызовы дублируются или приходят с опозданием. Используйте тот же неистекший код либо аннулируйте старый код при выпуске нового. Резервная отправка не должна продлевать время жизни кода.
6. Тестирование перед запуском
После запуска сравните показатель доставки, задержку доставки, процент завершения верификации, долю резервной отправки SMS и стоимость успешной верификации в разрезе рынков, каналов и устройств. Используйте эти данные для тонкой настройки приоритетов каналов и пороговых значений ожидания.
Дополнительный сценарий: верификация, инициируемая клиентом
В сценарии верификации, инициируемой клиентом, пользователь открывает WhatsApp из приложения, отправляет сообщение с данными для текущей верификации, а затем возвращается в приложение. Этот подход требует использования одноразового проверочного значения (challenge), привязки сессии, ограничения срока действия, защиты от повторного воспроизведения и подтверждения со стороны пользователя.FAQ
Как проверить, установлен ли WhatsApp на Android или iOS?
На Android объявитеcom.whatsapp и com.whatsapp.w4b в блоке package queries манифеста, затем вызовите метод OTP Android SDK от Meta isWhatsAppInstalled(context) на экземпляре WhatsAppOtpHandler.
На iOS используйте UIApplication.shared.canOpenURL(URL(string: "whatsapp://otp")!) и настройте разрешения для запросов URL-схем, необходимые вашему приложению.
Проверка установки помогает предложить оптимальный канал на текущем устройстве. При этом она не подтверждает, что введенный номер телефона зарегистрирован в WhatsApp. Предоставьте клиентам возможность подтвердить свой номер WhatsApp и выбрать другой канал. См. раздел Проверка установки на Android и iOS от Meta.






