WooCommerce: как настроить обязательную 3D Secure авторизацию платежей

Что такое 3D Secure и почему это важно для WooCommerce

3D Secure (3DS) — дополнительный уровень безопасности для онлайн-платежей по картам, требующий подтверждения операции пользователем через банк-эмитент (например, ввод одноразового пароля). В WooCommerce 3DS помогает снизить риск мошенничества и гарантировать, что владелец карты действительно совершает покупку.

Однако не все платежные шлюзы и настройки автоматически активируют 3DS, а отсутствие этой проверки может привести к отказам платежей или повышенным рискам.

Диагностика проблемы: платежи проходят без 3D Secure

  • Покупатели жалуются на мошеннические транзакции или возвраты chargeback;
  • В отчетах платежного шлюза видно, что 3DS не применяется;
  • Банк или процессинговый центр требует обязательной 3DS авторизации;
  • Статусы заказов в WooCommerce не отражают проверку 3DS.

Для проверки можно зайти в панель платежного шлюза и найти логи или отчеты по конкретным транзакциям, где видно, применялась ли 3DS.

Пошаговое решение: как включить обязательную 3D Secure в WooCommerce

1. Проверьте поддержку 3DS в вашем платежном шлюзе

Не все шлюзы поддерживают 3D Secure, а некоторые требуют отдельной активации в личном кабинете. Например, популярные шлюзы как Stripe, PayPal, Яндекс.Касса (ЮKassa) и CloudPayments поддерживают 3DS.

2. Настройте плагин платежного шлюза для работы с 3DS

В панели администратора WordPress перейдите в WooCommerce → Настройки → Платежи, выберите нужный шлюз и проверьте опции, связанные с 3DS. В большинстве официальных плагинов есть галочка или переключатель “Включить 3D Secure” или “Обязательная 3DS авторизация”.

3. Включите параметр обязательной 3DS через код (если штатных настроек нет)

Некоторые плагины не имеют интерфейса для включения 3DS. Тогда нужно добавить фильтр, который передаст параметр в API шлюза. Пример для Stripe (плагин WooCommerce Stripe Payment Gateway):

add_filter('woocommerce_stripe_request_body', 'enable_stripe_3ds', 10, 2);function enable_stripe_3ds($request_body, $order) {  $request_body['payment_method_options']['card']['request_three_d_secure'] = 'any';  return $request_body;}

Параметр request_three_d_secure = 'any' заставит Stripe всегда запрашивать 3DS, если карта поддерживает.

4. Обновите политику безопасности в WooCommerce

Рекомендуется добавить проверку статуса 3DS после оплаты, чтобы не подтверждать заказы без успешного прохождения 3DS. Для этого используйте хук:

add_action('woocommerce_thankyou', 'check_3ds_status', 10, 1);function check_3ds_status($order_id) {  $order = wc_get_order($order_id);  $payment_method = $order->get_payment_method();  if ($payment_method !== 'stripe') return;  // пример для Stripe  $meta = $order->get_meta('_stripe_charge');  if (!$meta) return;  $charge = json_decode($meta);  if ($charge->payment_method_details->card->three_d_secure != 'authenticated') {    $order->update_status('on-hold', 'Платеж не прошёл 3D Secure авторизацию');  }}

Этот пример требует, чтобы данные о платеже сохранялись в мета-поле _stripe_charge. Логика проверки может отличаться в зависимости от шлюза.

Проверка результата после внедрения

  • Совершите тестовый платеж с картой, поддерживающей 3D Secure (часто доступны тестовые карты у провайдера);
  • Убедитесь, что появляется окно или форма подтверждения 3DS;
  • Проверьте статус заказа в WooCommerce, он должен быть «Обработан» или «Выполнен» только при успешной 3DS;
  • Проверьте логи платежного шлюза, что 3DS применён;
  • Попросите реальных пользователей подтвердить, что при оплате теперь требуется дополнительное подтверждение.

Частые ошибки и их исправление

  • 3DS не срабатывает, хотя включено в настройках: проверьте, поддерживает ли карта 3DS, некоторые карты (например, корпоративные) могут не требовать 3DS.
  • Ошибки в API при передаче параметров 3DS: проверьте правильность ключей массива и синтаксис, используйте отладочные логи WooCommerce и платежного плагина.
  • Заказы остаются в статусе «Ожидает оплаты» после прохождения 3DS: убедитесь, что в коллбэке от платежного шлюза корректно фиксируется статус оплаты и 3DS.
  • Пользователи жалуются на сложность процесса оплаты: настройте стиль и тексты форм 3DS, при необходимости используйте кастомизацию через хуки плагина.

Практические советы по безопасности и производительности

  • Регулярно обновляйте WooCommerce и все платежные плагины, так как 3DS и API банков часто меняются;
  • Используйте HTTPS для всего сайта, это обязательное требование для 3DS;
  • Для снижения нагрузки — кэшируйте страницы, исключая страницы оплаты и подтверждения;
  • Если используете кастомные коллбэки для 3DS, обязательно проверяйте подписи и запросы на подлинность;
  • Логируйте все этапы платежей и 3DS для последующего аудита и отладки.

Сравнение способов включения 3D Secure

МетодПреимуществаНедостаткиПример
Настройка плагинаПросто, без кода, поддержка от разработчиковНе всегда доступна, зависит от плагинаВключить галочку «Обязательная 3DS» в настройках
Добавление фильтра в functions.phpГибко, можно принудительно включить 3DSТребует знаний PHP, возможны ошибки
add_filter('woocommerce_stripe_request_body', 'enable_stripe_3ds', 10, 2);function enable_stripe_3ds($request_body, $order) {  $request_body['payment_method_options']['card']['request_three_d_secure'] = 'any';  return $request_body;}
Обработка статуса 3DS через хукКонтроль статуса платежа, безопасностьСложность реализации, зависит от API шлюза
add_action('woocommerce_thankyou', 'check_3ds_status', 10, 1);function check_3ds_status($order_id) {  $order = wc_get_order($order_id);  if ($order->get_payment_method() != 'stripe') return;  $meta = $order->get_meta('_stripe_charge');  if (!$meta) return;  $charge = json_decode($meta);  if ($charge->payment_method_details->card->three_d_secure != 'authenticated') {    $order->update_status('on-hold', 'Платеж не прошёл 3D Secure авторизацию');  }}
Как добавить поддержку криптовалют в платежные системы WordPress
05.02.2026
Как отладить проблемы с подключением платежных систем в WordPress
02.02.2026
WooCommerce: как автоматически отключать неактивные подписки
15.05.2026
Как сделать автоматический возврат платежей в WordPress
24.03.2026
WooCommerce: как реализовать авторизацию платежей через REST API для собственных приложений
29.05.2026