> For the complete documentation index, see [llms.txt](https://docs.merchant.alb.ua/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.merchant.alb.ua/platizhni-vidzheti-dlya-cms/wordpress/validaciya-customerdata.md).

# Валідація customerData

### Загальний опис логіки валідації <a href="#zagalnii-opis-logiki-validaciyi" id="zagalnii-opis-logiki-validaciyi"></a>

Масив `customerData` формується перед відправкою платіжного запиту на основі даних замовлення WooCommerce. Після збору дані передаються в метод `validateAndClear` класу `WC_Custom_Data_Validator`.

<table data-header-hidden><thead><tr><th width="145"></th><th width="81"></th><th width="65"></th><th width="79"></th><th width="134"></th><th></th></tr></thead><tbody><tr><td><strong>Назва поля</strong></td><td><strong>Тип даних</strong></td><td><strong>Обов'язкове</strong></td><td><strong>Макс. довжина</strong></td><td><strong>Джерело даних у WooCommerce (WC_Order)</strong></td><td><strong>Особливі правила валідації та фільтрації</strong></td></tr><tr><td><strong>senderCustomerId</strong></td><td><code>string</code></td><td><strong>Так</strong></td><td>255</td><td>Локальна змінна <code>$sender_customer_id</code></td><td>Перевіряється тільки на пустку та довжину.</td></tr><tr><td><strong>senderFirstName</strong></td><td><code>string</code></td><td>Ні</td><td>30</td><td><p><code>$order->get_billing_first_name()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_first_name()</code></p></td><td><ol start="1"><li><strong>Регулярний вираз:</strong> Дозволені літери, цифри, дефіси, апострофи. Без спецсимволів по краях.</li></ol><p> </p><ol start="2"><li><strong>Не лише цифри:</strong> Помилка, якщо строка складається суто з цифр.</li></ol><p> </p><ol start="3"><li><strong>Стоп-слова:</strong> <code>NULL</code>, <code>3D SECURE</code>, <code>SURNAME</code>, <code>CARDHOLDER</code>, <code>UNKNOWN</code> (реєстронезалежно через <code>stripos</code>).</li></ol></td></tr><tr><td><strong>senderLastName</strong></td><td><code>string</code></td><td>Ні</td><td>30</td><td><p><code>$order->get_billing_last_name()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_last_name()</code></p></td><td>Аналогічно до <code>senderFirstName</code> (без перевірки стоп-слів).</td></tr><tr><td><strong>senderEmail</strong></td><td><code>string</code></td><td>Ні</td><td>256</td><td><code>$order->get_billing_email()</code></td><td><strong>Валідація WordPress:</strong> Додатково валідується через вбудовану функцію <code>is_email()</code>.</td></tr><tr><td><strong>senderCountry</strong></td><td><code>string</code></td><td>Ні</td><td>3</td><td><p><code>$order->get_billing_country()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_country()</code></p></td><td>Проходить через внутрішній метод плагіна <code>$this->get_country_code()</code>, який повертає числовий ISO-код.</td></tr><tr><td><strong>senderRegion</strong></td><td><code>string</code></td><td>Ні</td><td>255</td><td><p><code>$order->get_billing_state()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_state()</code></p></td><td>Передається у внутрішній метод <code>$this->get_state_name()</code>, який повертає текстову назву регіону за кодом.</td></tr><tr><td><strong>senderCity</strong></td><td><code>string</code></td><td>Ні</td><td>25</td><td><p><code>$order->get_billing_city()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_city()</code></p></td><td>Стандартна перевірка довжини й шаблону (якщо задано).</td></tr><tr><td><strong>senderStreet</strong></td><td><code>string</code></td><td>Ні</td><td>35</td><td><p><code>$order->get_billing_address_1()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_address_1()</code></p></td><td>Стандартна перевірка довжини.</td></tr><tr><td><strong>senderAdditionalAddress</strong></td><td><code>string</code></td><td>Ні</td><td>255</td><td><p><code>$order->get_billing_address_2()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_address_2()</code></p></td><td>Стандартна перевірка довжини.</td></tr><tr><td><strong>senderIp</strong></td><td><code>string</code></td><td>Ні</td><td>50</td><td><code>$order->get_customer_ip_address()</code></td><td>Стандартна перевірка довжини.</td></tr><tr><td><strong>senderPhone</strong></td><td><code>numeric_string</code></td><td>Ні</td><td>20</td><td><p><code>$order->get_billing_phone()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_phone()</code></p></td><td><strong>Попередня фільтрація:</strong> Для перевірки правил з поля примусово видаляються всі нецифрові символи.</td></tr><tr><td><strong>senderZipCode</strong></td><td><code>string</code></td><td>Ні</td><td>50</td><td><p><code>$order->get_billing_postcode()</code></p><p> </p><p>🔄 Фолбек: <code>get_shipping_postcode()</code></p></td><td>Стандартна перевірка довжини.</td></tr></tbody></table>
