
Card Testing Shield для WooCommerce — захист чекауту від перебору вкрадених карток (card testing)
Плагін для WooCommerce, який зупиняє перебір вкрадених карток на чекауті: рахує спроби оплати карткою й відмови шлюзу з однієї IP-адреси, сесії браузера й e-mail, ставить зростаючу паузу після кожної відмови і відмовляє ще до того, як наступна спроба дійде до платіжного шлюзу. Класичний і блоковий чекаут, «Оплатити замовлення», «Додати спосіб оплати». Базова версія безкоштовна; Pro — ліміти на BIN картки й мережу, автоматичне блокування під час хвилі відмов, списки блокування, журнал до 90 днів і CSV.
- Сумісність
- WooCommerce 8.0+ (перевірено на 11.2) · WordPress 6.2+ (перевірено на 7.1) · PHP 7.4+ (прогін на 8.3) · класичний і блоковий чекаут · Stripe, WooPayments, Braintree, Square, Authorize.Net, NMI та інші карткові шлюзи · лічильники в Redis, APCu або таблиці БД
- Ліцензія
- один сайт, річна
- Тріал
- 7 днів, без картки, один на сайт
- Оновлено
- жовтень 2026
Що є в Free,
а що дає Pro
Безкоштовна версія працює без обмеження в часі. Pro додає решту функцій з таблиці.
Як це виглядає

Тріал стартує, коли ви попросите
Свіжий інстал — безкоштовна версія, нічого не вмикається само. Кнопка «Спробувати Pro 7 днів» → e-mail → ключ одразу у вікні і листом.

Один ключ — один сайт
Переносите магазин — відв’яжіть ліцензію на старому домені й активуйте на новому самі. Для студій — ключі на 5, 25 сайтів або без обмежень.
Технічні вимоги
WooCommerce 8.0+ (перевірено на 11.2.1), класичний і блоковий чекаут, «Оплатити замовлення», «Додати спосіб оплати»
WordPress 6.2+ (перевірено на 7.1) · PHP 7.4+ (повний прогін на PHP 8.3, на 7.4 — перевірка синтаксису)
Шлюзи: будь-який картковий через стандартні хуки WooCommerce. Окремо підключено WooCommerce Stripe Gateway (перевірено з 11.0.1, AJAX «Додати спосіб оплати» — з 9.7) і WooPayments (його AJAX перевірки картки, переглянуто на 11.2). Braintree, Square, Authorize.Net і NMI підключено за їхнім вихідним кодом, живих оплат через них не було
BIN-ліміт (Pro): лише для шлюзів, що передають номер картки або BIN на сайт — Authorize.Net, NMI, стандартна форма картки WooCommerce
Лічильники: об’єктний кеш Redis (перевірено з Redis Object Cache), APCu або власна таблиця БД — щит обирає найшвидше з наявного
Проксі: Cloudflare (CF-Connecting-IP лише з мереж Cloudflare) або заголовок вашого проксі чи балансувальника
Мови адмінки: українська, російська, англійська
Історія версій
Ліміти спроб і відмов на адресу, сесію й e-mail; зростаюча пауза після відмов; ліміт одночасних оплат; класичний і блоковий чекаут, «Оплатити замовлення» і «Додати спосіб оплати» (форма…
Разом з Card Testing Shield для WooCommerce купують
4 модулі одним замовленням — на 40% дешевше, ніж окремо


Nova Poshta Premium — Нова Пошта для WooCommerce

Mono Acquiring — оплата карткою monobank для WooCommerce

Telegram-сповіщення і Viber/SMS покупцям для WooCommerce
Повний опис модуля
Card Testing Shield для WooCommerce — плагін проти перебору вкрадених карток на чекауті. Card testing виглядає так: скрипт проганяє через ваш магазин список номерів карток, одну дрібну оплату за іншою, щоб знайти ті, що ще працюють. Платить магазин: сотні відхилених транзакцій, комісія шлюзу за кожну спробу, чарджбеки, а згодом — лист від Stripe чи банку-еквайра про заморожений або закритий акаунт.
Щит рахує те, чого тестувальник карток не може приховати: скільки оплат карткою приходить з однієї IP-адреси, однієї сесії браузера й одного e-mail і скільки з них шлюз відхилив. Коли ліміт вичерпано, наступна спроба отримує відмову ще на вашому сервері — до платіжного шлюзу вона не доходить і комісії не коштує. Справжній покупець цього не помічає: він робить одну оплату, рідко дві.
Для ботів, що перебирають каталог і фільтри GET-запитами, у нас є окремий плагін — Crawler Shield для WooCommerce. Card Testing Shield захищає інше: POST-запити оплати на чекауті, «Оплатити замовлення» і «Додати спосіб оплати». Вони не заважають один одному, на тесті стояли разом.
Як це виглядає для покупця
Звичайний покупець не бачить нічого нового: та сама форма, той самий шлюз. Той, хто вичерпав ліміт, отримує нейтральне повідомлення у звичному місці помилок чекауту — без підказки, який саме ліміт спрацював: «Зараз ми не можемо прийняти від вас ще одну оплату карткою. Спробуйте пізніше, оберіть інший спосіб оплати або зв’яжіться з нами». Під час короткої паузи додається, через скільки секунд можна спробувати знову. Текст повідомлення можна змінити в налаштуваннях. Інші способи оплати — переказ на рахунок, післяплата — лишаються відкритими.
Спроба рахується лише тоді, коли WooCommerce прийняв форму й передає замовлення шлюзу. Покупець, який виправляє помилку в адресі чи забуте поле, спроби не витрачає.
Що отримує адмін
- WooCommerce → Card Testing Shield з вкладками «Огляд», «Правила» і «Журнал».
- Огляд: спроби оплати карткою, відхилені шлюзом і відмовлені щитом за 24 години й 7 днів; таблиця по годинах з колонкою «Відмовив би» для режиму спостереження.
- «Покупець не може оплатити?» — введіть IP-адресу чи e-mail: видно, що щит нарахував, до коли відмова і пауза, і кнопка «Розблокувати» скидає все одразу.
- «Як щит бачить цей магазин»: відстежувані способи оплати, адреса, яку щит бачить для вас (з попередженням, якщо це адреса сервера чи проксі), де живуть лічильники, і чи ввімкнено вбудований «Rate limit Checkout» WooCommerce.
Журнал записує кожну відхилену оплату і кожну відмову щита: час, де (чекаут, блоковий чекаут, «Оплатити замовлення», «Додати спосіб оплати»), адреса, e-mail, спосіб оплати, замовлення і причина — наприклад, «пауза після відмови» чи «кілька оплат одночасно». Фільтри «Відмовлено», «Відмовив би», «Відхилено», «Блокування». Повторні відмови того самого клієнта під час атаки не пишуться в журнал по одній, щоб не роздувати базу. Free зберігає журнал 7 днів, Pro — до 90 з експортом у CSV.
Як це працює — крок за кроком
- Які способи оплати стежити. Типово — усі карткові: Stripe, WooPayments, Braintree, Square, Authorize.Net, NMI та інші. Банківський переказ, чек і накладений платіж не відстежуються, доки ви їх не позначите.
- Спроба. Коли WooCommerce прийняв форму і передає замовлення шлюзу, щит додає спробу до лічильників IP-адреси, сесії браузера (кошика) й e-mail платника. Типово: 10 спроб з адреси і 6 із сесії чи e-mail за 60 хвилин.
- Відмова. Шлюз відхилив оплату — щит рахує відмову (типово ліміт 5 на адресу і 3 на сесію чи e-mail) і ставить паузу: 10 секунд після першої відмови, далі 20, 40 і до 5 хвилин. Людина, яка вводить картку вдруге, паузи не помічає; скрипт зі списком карток сповільнюється до повзання.
- Пізні відмови. Якщо шлюз повідомляє про відмову пізніше — вебхуком чи після невдалого 3-D Secure, — замовлення переходить у «Невдале», і щит рахує це один раз, навіть якщо статус ставиться двічі. Успішний 3-D Secure відмовою не вважається.
- Одночасні оплати. Скрипт може надіслати 20 карток паралельно — тоді всі 20 дійшли б до шлюзу раніше, ніж перша відмова потрапить у лічильник. Тому щит пропускає не більше 3 оплат за 10 секунд з однієї адреси, браузера чи акаунта; лічильник атомарний (Redis, APCu чи один запит до таблиці). Ліміт можна змінити або вимкнути фільтром
catcode_cts_burst. - Відмова щита. Клієнт, що вичерпав ліміт, отримує відмову на заданий час (типово 60 хвилин) з нейтральним повідомленням. Покупці, які вже платили, менеджери магазину й адміністратори не обмежуються ніколи; адреси, мережі, e-mail і домени з білого списку — теж.
- «Додати спосіб оплати». Улюблений шлях тестувальників, які реєструють тисячі безкоштовних акаунтів. Щит обмежує його окремо (типово 5 карток і 3 відмови з адреси чи акаунта) — і у формі WooCommerce, і в AJAX-перевірках карток Stripe та WooPayments.
- Режим спостереження. Не певні, що ліміти підходять вашому магазину? Увімкніть «Спостереження» на кілька днів: щит лише записує, кому відмовив би, і нікому не відмовляє.
Pro. Тестувальники ганяють згенеровані номери однієї банківської серії через багато адрес — Pro рахує відмови на BIN картки (перші шість цифр) для всіх відвідувачів разом. Це працює для шлюзів, що передають номер картки або BIN на сайт: плагіни Authorize.Net і NMI, стандартна форма картки WooCommerce. Stripe, Braintree і Square перетворюють картку на токен ще в браузері, номер на сайт не потрапляє — там працюють інші ліміти. Ще Pro рахує відмови на мережу /24 (IPv4) чи /48 (IPv6) для атак з сусідніх адрес. Під час хвилі відмов (типово 20 відхилених оплат карткою за 15 хвилин по всьому магазину) Pro вмикає блокування на 60 хвилин: жорсткіші ліміти для всіх, крім довірених покупців, за бажанням гості не можуть платити карткою, а вам приходить лист. Блокування можна ввімкнути й завершити вручну. Для «Додати спосіб оплати» є мінімальний вік акаунта (типово 24 години) або правило «лише акаунти з оплаченим замовленням». Списки блокування — IP-адреси й мережі, e-mail і домени пошти, BIN.
Що під капотом
- Точки перевірки:
woocommerce_checkout_processдля класичного чекауту, перевірка запиту Store API до виконання для блокового (відповідь — звичайна помилка оплати),woocommerce_before_pay_actionдля «Оплатити замовлення»,woocommerce_add_payment_method_form_is_validі AJAX-дії Stripe та WooPayments для «Додати спосіб оплати». - Результат оплати береться з відповіді WooCommerce і шлюзу: успіх, відмова, 3-D Secure. Пізня відмова — через перехід замовлення в «Невдале», один раз на замовлення.
- Ковзне вікно: ліміт читає поточний період плюс частку попереднього, що ще перекривається, тож дві швидкі серії по обидва боки повної години не подвоюють ліміт.
- Атомарні лічильники: INCR у Redis, apcu_inc або один
INSERT … ON DUPLICATE KEY UPDATE— паралельні запити не читають застарілі значення. - Адреса відвідувача: CF-Connecting-IP приймається лише з офіційних мереж Cloudflare, щоб скрипт не підставив чужу адресу заголовком.
- Дані: нічого не йде за межі вашого сервера, безкоштовна версія не робить зовнішніх запитів. Номер картки не зберігається ніде.
- Видалення плагіна прибирає його таблиці, налаштування й завдання крону.
Як встановити
- Плагіни → Додати новий → Завантажити плагін: оберіть
catcode-card-testing-shield-for-woocommerce-free-1.0.0.zipі активуйте (WooCommerce має бути активний). - Відкрийте WooCommerce → Card Testing Shield → «Правила». Типові ліміти підходять більшості магазинів; якщо сумніваєтесь — увімкніть «Спостереження» на кілька днів і подивіться журнал.
- Якщо сайт за Cloudflare чи іншим проксі — перевірте у вкладці «Огляд» рядок «Ваша адреса, як її бачить щит» і за потреби оберіть «Адреса відвідувача» в «Правила → Сервер».
- Додайте до білого списку адреси свого офісу чи кол-центру, якщо приймаєте оплати по телефону.
- Для Pro: вставте ліцензійний ключ з листа після оплати або натисніть «Спробувати Pro 7 днів» унизу вкладки «Правила».
Питання
про модуль
Не знайшли відповідь? Напишіть у Telegram — відповімо протягом робочого дня.
Що таке card testing і чим він шкодить магазину?
Це скрипт, який проганяє вкрадені номери карток через ваш чекаут дрібними оплатами, щоб знайти картки, які ще працюють. Платить за це магазин: сотні відхилених транзакцій, комісії шлюзу за кожну спробу, чарджбеки, а наприкінці — платіжний провайдер, який заморожує чи закриває акаунт.
Чи не заблокує він справжніх покупців?
Типово дозволено 6 спроб і 3 відмови на сесію браузера й e-mail та 10 спроб і 5 відмов на IP-адресу за годину — справжньому покупцю рідко треба більше двох-трьох. Покупців, які вже платили, щит не обмежує взагалі. Якщо комусь таки відмовили — знайдіть його у вкладці «Огляд» за IP чи e-mail і розблокуйте.
Це замінює CAPTCHA чи антифрод платіжного шлюзу?
Ні, працює разом з ними. CAPTCHA розв'язують ферми, і вона не захищає «Оплатити замовлення» та збережені картки. Антифрод шлюзу бачить лише ті спроби, що вже дійшли до шлюзу і коштують вам комісію. Щит зупиняє повторні спроби ще на вашому сервері.
А вбудований у WooCommerce «Rate limit Checkout»?
Ця функція (Налаштування → Додатково → Функції) пропускає 3 запити блокового чекауту на хвилину з адреси чи акаунта, незалежно від результату. Класичний чекаут, «Оплатити замовлення» і збережені картки вона не покриває, на відмови й e-mail не дивиться. Можна тримати увімкненими обидва.
Магазин за Cloudflare — щит бачить справжню адресу покупця?
Так: адресу береться з CF-Connecting-IP автоматично, але лише для запитів, які справді прийшли з мереж Cloudflare. За іншим проксі чи балансувальником оберіть його заголовок у «Правила → Сервер». У вкладці «Огляд» видно, яку адресу щит бачить для вас.
Чи зберігає плагін дані карток?
Ні. У журналі — адреса, e-mail, спосіб оплати й замовлення, ніколи номер картки. Pro для шлюзів, що передають номер на сайт, читає в пам'яті лише перші шість цифр (BIN) і зберігає тільки їх. Безкоштовна версія не робить жодних зовнішніх запитів.
Поки що жодного відгуку. Будьте першим.
Поки питань немає. Запитай — ми відповімо протягом 24 годин.
Не той варіант, що шукаєте?
Робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.
Замовити кастомний модуль
Купівля модуля
—
