Настройка модуля локальных платежей
Схема работы
Модуль локальных платежей позволяет программному обеспечению 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-хэш строки вида <xml-запрос>:<парольная фраза>, где <xml-запрос> - это POST-запрос (см. ниже), а <парольная фраза> указывается в настройках.
Если указан URL проверки платежа, то терминал осуществляет отправку реквизитов на указанный в настройках url в виде запроса методом POST:
<root> <check operator_id="3" terminal_id="123456789"> <input dbname="name" value="петя"/> <input dbname="tariff" value="2"/> </check> </root>
Описание:
- <check> - блок запроса на проверку.
- operator_id - id локального оператора.
- terminal_id - ID терминала (указывается в конфигурации)
- <input> - перечисление значений реквизитов, где id - идентификатор реквизита, value - значение
В случае успеха сервер отправляет ответ в виде xml-документа следующего вида:
<?xml version='1.0' encoding = 'utf-8'?> <root result='true' confirm='Платеж будет зачислен в течении суток. Продолжить?'> <extra_input> <input name='Поле1' dbname='field1' value='Значение1'/> <input name='Поле2' dbname='field2' value='Значение2'/> </extra_input> </root>
Описание параметров успешного ответа:
- /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.
В случае отказа сервер формирует следующее сообщение:
<?xml version='1.0' encoding = 'utf-8'?> <root result='false' alert='В платеже отказано, лицевой счет не найден!'/>
Описание параметров отказа ответа:
- /root/@result - результат операции (в случае успешного ответа false)
- /root/@alert - [опционально] описание отказа
Оповещения отправляются в виде xml-документа методом POST, без разбивки на отдельные параметры, целиком. Пример отправки:
<root> <payment operator_id="3" com_amount="0" pay_amount="5000" pay_time="1371387135" terminal_id="123456789"> <input dbname="name" value="петя"/> <input dbname="tariff" value="2"/> </payment> <payment operator_id="4" com_amount="1000" pay_amount="5000" pay_time="1371387241" terminal_id="123456789"> <input dbname="name" value="Вася"/> <input dbname="tariff" value="2"/> </payment> </root>
Описание:
- <payment> - блок одного платежа. Блоки <payment> могут повторяться, если платежей несколько.
- operator_id - id локального оператора.
- com_amount - размер комиссии (в копейках)
- pay_amount - сумма к оплате (в копейках)
- pay_time - время платежа (unix time)
- terminal_id - ID терминала (указывается в конфигурации)
- <input> - перечисление значений реквизитов, где id - идентификатор реквизита, value - значение
Крайне важно исключить появление дубликатов платежей, для этого необходимо сохранять платежи в БД и для каждого нового платежа проверять его наличие по pay_time. pay_time будет уникальным для каждого платежа.