Валідація customerData
Загальний опис логіки валідації
Масив customerData формується під час натискання кнопки «Оплатити» (коли передається POST-параметр alliancepay_action = create_order). Дані клієнта витягуються з глобального масиву параметрів шлюзу WHMCS $params['clientdetails'].
Потім сформований масив передається до DTO об'єкта SDK: OrderRequestDTO::fromArray($orderData).
⚠️ Особливість для розробників (Валідація в SDK): Оскільки очищення та перевірка правил валідації (
max_len,pattern,stop_words) відбуваються всередині зовнішнього PHP SDK, цей шлюз WHMCS передає дані «як є» (as-is), попередньо трансформувавши лише телефон та код країни. Якщо SDK DTO викидає виняток (Exception) через невалідні дані, WHMCS перехоплює його, логує помилку черезlogModuleCallі виводить загальне повідомлення для користувача.
Назва поля
Тип даних
Обов'язкове
Звідки береться в WHMCS ($params['clientdetails'])
Особливості та трансформації даних перед передачею в SDK
senderCustomerId
string
Так
(string)$params['clientdetails']['userid']
Примусово приводиться до типу string. У WHMCS користувач завжди авторизований для оплати інвойсу.
senderFirstName
string
Ні
$params['clientdetails']['firstname']
Передається напряму. SDK валідує за стандартним regex та на стоп-слова.
senderLastName
string
Ні
$params['clientdetails']['lastname']
Передається напряму.
senderEmail
string
Ні
$params['clientdetails']['email']
Передається напряму.
senderCountry
string
Ні
$params['clientdetails']['countrycode']
Трансформація через бібліотеку League\ISO3166:
Двозначний код країни (наприклад, UA) конвертується у числовий код ISO (наприклад, 804) через $leagueIso3166->alpha2(). Якщо код відсутній, поле не додається в масив.
senderRegion
string
Ні
$params['clientdetails']['state']
Передається напряму (назва штату/області текстовим рядком).
senderCity
string
Ні
$params['clientdetails']['city']
Передається напряму.
senderStreet
string
Ні
$params['clientdetails']['address1']
Передається напряму.
senderAdditionalAddress
string
Ні
$params['clientdetails']['address2']
Передається напряму.
senderZipCode
string
Ні
$params['clientdetails']['postcode']
Передається напряму.
senderPhone
numeric_string
Ні
Конкатенація полів:
phonecc + phonenumber
Логіка формування: Код країни телефона (phonecc) та сам номер (phonenumber) зливаються в один рядок без розділювачів. Далі SDK валідує строку як numeric_string.
Останнє оновлення