При размещении заказа на некоторые товары производитель выдвигает требование обязательно указывать некоторую информацию о конечном пользователе (далее - лицензионная форма). Причем, для различных продуктов необходимо передавать разную информацию.
При размещении заказа на товар необходимо передавать лицензионную форму, если установлен флаг LicenseFormRequired у продукта (в результатах метода GetPriceChanges).
Перед размещением заказа, необходимо вызвать метод GetUserInfoDescriptionFor, передав туда язык описания и список товаров, на которые размещается заказ. В результатах метода будет содержаться список полей, которые конечному пользователю необходимо будет заполнить. Для каждого поля предоставляется текстовое описание и набор требований к его заполнению (регулярное выражение, длина и т.д.).
Важно учитывать, что некоторые поля могут быть предназначены не для конечного пользователя, а для партнера. Тип поля определяется полем UserType в его описании. Значение в них должно подставляться автоматически системой партнера, а само поле не должно показываться конечному пользователю. На данный момент существует только одно такое поле - Пин Касперского.
К сожалению, не всегда с помощью регулярных выражений можно описать все правила заполнения формы (Например, правило вида «Поле компания обязательно для заполнения, только если пользователь юридическое лицо»). Такие правила отражаются только на описании, для понимания их заполняющим форму. Для проверки корректности заполнения формы существует метод CheckEndUserInfo. Т.к. форма должна быть своя для каждого товара, проверку необходимо осуществлять следующим образом:
При добавлении лицензионной формы к строке заказа поля необходимо фильтровать по продукту также, как и для проверки формы.