= Настройка модуля локальных платежей = == Схема работы == Модуль локальных платежей позволяет программному обеспечению PayPoint работать автономно, без сети интернет и без привязки к сервису PayCloud. Получатели платежей (за товары/услуги) настраиваются локально на терминале. Модуль позволяет: * Принимать авансовые платежи без сдачи (автономно). * Принимать платежи с фиксированной ценой со сдачей (автономно). Данная опция доступна, если присутствует рабочее устройство выдачи сдачи (диспенсер купюр, хоппер и др.). * Принимать платежи с фиксированной ценой со сдачей на мобильный телефон (требуется подключение к интернету и к серверу PayCloud). Данная опция доступна, если настроено подключение к PayCloud и активирована возможность принимать платежи за сотовую связь. * Принимать платежи с фиксированной ценой по банковским картам (требуется подключение к интернету и к серверу Uniteller). Данная опция доступна, если настроен сервис Uniteller. == Настройка групп получателей платежа == Группы получателей позволяют создать любую иерархию структуры товаров и услуг с требуемым уровнем вложенности. Чтобы добавить группу нажмите Добавить в разделе Список групп. Укажите наименование группы, иконку и вышестоящую группу. == Настройка == Чтобы отредактировать локальный список товаров и услуг перейдите в режим администрирования и выберите пункт "Лок. платежи". Установите галочку около пункта Использовать модуль локальных платежей - это активирует модули и иконку на главной странице интерфейса. В пункте Заголовок установите название группы локальных получателей, например "Услуги автомойки" или "Налоговые платежи". Этот текст будет отображён на кнопке главной страницы. В списке операторов добавьте новую услугу кнопкой Добавить. Укажите наименование услуги, группу из списка и выберите иконку-изображение (желательно формата png с прозрачностью). Выберите метод расчёта: * При авансовом методе клиент вносит любую сумму. При данном методе сдача не выдаётся, зачисляются все внесённые средства. Для данного способа укажите также минимальную и максимальную сумму платежа, а также комиссию в процентах и минимальную комиссию в рублях, если это необходимо. * При методе с фиксированной суммой платежа укажите стоимость товара/услуги в поле Стоимость. Для того, чтобы клиент мог оплатить сразу несколько услуг этого типа за один сеанс (имеется ввиду, например, почасовая оплата) - необходимо поставить галочку в пункте Запрашивать количество, после чего указать минимально и максимально допустимое количество оплат. * Метод "Сумма от пользователя" предполагает ввод суммы пользователем в установленных пределах (минимальная/максимальная сумма). Расчёт выполняется от итоговой суммы, выдаётся сдача в зависимости от способа, выбранного клиентом. Подтвердите ввод нажатием OK. Добавьте нужное количество получателей платежей и нажмите Сохранить настройки. При необходимости информировать клиента об условиях продажи установите галочку Правила/Информация в настройках локального оператора, отредактируйте правила в диалоговом окне, нажав Редактировать. == Настройка реквизитов == Реквизит (поле) - параметр, запрашиваемый у пользователя для ввода. Примеры реквизитов: номер телефона, фамилия, выбор варианта тарифа и т.д. Реквизиты могут быть одним из четырёх типов: * Цифровой - для ввода используется цифровая клавиатура (только цифры). * Символьный - для ввода используется полноценная клавиатура (цифры, символы, два языка). * Булевый (Да/Нет) * Списковый - выбор варианта из списка. Реквизиты оператора представлены окне правки локального оператора. Используйте кнопки Добавить/Редактировать/Удалить для правки. При добавлении нового реквизита укажите Наименование реквизита (оно будет напечатано на чеке), идентификатор (латинскими буквами), описание-подсказку, выберите тип поля. Атрибут формат определяет маску ввода. Маска ввода может содержать любые символы и включает в себя служебные символы '_' и '*', которые определяют обязательную и необязательную позицию ввода соответственно. Пример: {{{ Формат ввода фамилии (минимум 2, максимум 15 символов): __************* Формат ввода телефона (строго 10 символов): +7 (___) ___-__-__ Лицевой счёт (10 символов) с контрольной суммой (2 символа): __________-__ }}} Префиксы задаются для символьного и цифрового типов реквизита, перечисляются через запятую. Префиксы определяют обязательную комбинацию первых символов, например префиксы "925,926" обяжут пользователя вводить номер телефона только с данными префиксами. Префиксы для типа список используется для задания вариантов значений списка, которые разделяются через запятую. == Остатки == Блок управления Остатки позволяет ограничивать количество проданных товаров и услуг. Остатки редактируются в Административном режиме, в разделе Локальные платежи. Чтобы добавить товар или услугу в Остатки нажмите Добавить, выберите нужного оператора и укажите количество единиц резерва (единиц продажи). Повторите операцию для того, чтобы увеличить количество резерва. Кнопки Обнулить и Обнулить всё можно использовать для сброса резерва. Кнопки операторов будут удалены из интерфейса в случае, если остаток по соответствующему товару и услуге будет нулевой. Если оператор не числиться в списке остатков, то учёт остатков по нему производится не будет. При каждой продаже остаток по соответствующему оператору будет уменьшаться на единицу. == Настройка Сервера приема платежей == Оповещения о платеже могут быть отправлены по протоколу http/https на указанный в настройках URL (URL отправки платежа). Настройка оповещения производится в режиме конфигурации, в разделе Локальные платежи->Сервер приема платежей. Настраиваются следующие параметры: * использовать сервер приема - отправка платежей будет выполнятся только если данная опция включена * URL проверки платежа - URL (http или https), на который выполняется отправка данных о платеже для проверки реквизитов * URL отправки платежа - URL (http или https), на который выполняется отправка данных о платеже для регистрации на сервере * использовать HTTP-авторизацию - при использовании данной опции к каждому запросу будет добавляться логин и пароль по схеме HTTP plain auth * использовать md5-подпись - при использовании данной опции в каждый запрос будет добавлен GET-параметр pw, который формируется как md5-хэш строки вида :<парольная фраза>, где - это POST-запрос (см. ниже), а <парольная фраза> указывается в настройках. Если указан URL проверки платежа, то терминал осуществляет отправку реквизитов на указанный в настройках url в виде запроса методом POST: {{{ }}} Описание: * - блок запроса на проверку. * operator_id - id локального оператора. * terminal_id - ID терминала (указывается в конфигурации) * - перечисление значений реквизитов, где id - идентификатор реквизита, value - значение В случае успеха сервер отправляет ответ в виде xml-документа следующего вида: {{{ }}} Описание параметров успешного ответа: * /root/@result - результат операции (в случае успешного ответа true) * /root/@confirm - [опциональный атрибут] текст, демонстрируемый пользователю для подтверждения оплаты. * /root/extra_input/input - [опционально] дополнительные реквизиты, прикрепляемые к платежу. * /root/extra_input/input/@name - имя реквизита * /root/extra_input/input/@dbname - идентификатор реквизита (латинскими буквами и цифрами) * /root/extra_input/input/@value - значение реквизита Дополнительные реквизиты (если таковые указаны в ответе) прикрепляются к платежу аналогично реквизитам, заполняемых пользователем: выводятся на экран для подтверждения, печатаются на чеке, отправляются в оповещении о платеже и в систему ParkCloud. В случае отказа сервер формирует следующее сообщение: {{{ }}} Описание параметров отказа ответа: * /root/@result - результат операции (в случае успешного ответа false) * /root/@alert - [опционально] описание отказа Оповещения отправляются в виде xml-документа методом POST, без разбивки на отдельные параметры, целиком. Пример отправки: {{{ }}} Описание: * - блок одного платежа. Блоки могут повторяться, если платежей несколько. * operator_id - id локального оператора. * com_amount - размер комиссии (в копейках) * pay_amount - сумма к оплате (в копейках) * pay_time - время платежа (unix time) * terminal_id - ID терминала (указывается в конфигурации) * - перечисление значений реквизитов, где id - идентификатор реквизита, value - значение Крайне важно исключить появление дубликатов платежей, для этого необходимо сохранять платежи в БД и для каждого нового платежа проверять его наличие по pay_time. pay_time будет уникальным для каждого платежа.