Cards

Платформа для работы с картами клиетов и картами оплат.

Возможности

  • Генерация универсальных карт с логином и паролем. Данной картой можно как пополнять интернет так пользоваться как независемым аккаунтом.
  • Генерация аккаунтов пользователей.
  • Генерация аккаунтов пользователей из файла с данными о них.
  • Контроль перебора карт и ошибочных вводов.
  • Учёт дилеров и отчёты о продажах.
  • Начисление процента дилеру от продаж.
  • Печать карт в формате PDF. Для данной функции нужно установить модуль Perl PDF::API2
  • Експорт карт в XML, CSV
  • Выполнение внешних программ после авторизации карточки


Использование

Карта платежей используется для пополнения счета клиента. После успешного пополнения, карте присваивается состояние USE (Использовано).
Карта с прикреплёнными сервисами (универсальные карты) кроме сумы пополнения содержит логин и пароль для использования сервиса, например Internet. После покупки карты клиент может воспользоваться сервисом карты для входа в систему или просто пополнить имеющийся счёт. После успешного пополнения счёта сервисный акаунт анулируется и эти изменения фиксируются в сервисном журнале / Настройки / История/. Если пользователь уже начал использовать сервис карты, то дальнейшее пополнение используя карту невозможно.

Screenshots

Администрирование карт пополнения счета
Администрирование карт пополнение

Форма оплаты
{{:abills:docs:modules:cards:user.png?300|Форма оплаты

Генерация аккаунтов для Dv модуля
Генерация аккаунтов для Dv модуля

Установка

Создать таблицы в базе.

# mysql -D abills < db/Cards.sql
# cp Cards.pm /usr/abills/Abills/mysql

Подключение модуля. abills/libexec/config.pl

@MODULES = (
          'Cards'
          );

Настройка

Параметры конфигурации модуля: abills/libexec/config.pl

$conf{CARDS_BRUTE_LIMIT}=5; Количество неправильных попыток перед блокировкой пользователя.
По умолчанию: 5.
$conf{CARDS_BRUTE_CLEAN_PERIOD}=2; Количество дней через которое удаляется запись о неправильно вводе пин кода.
По умолчанию 2 дня.
$conf{CARDS_PAYMENT_PIN_LENGTH}=8; Длина пинкода. По умолчанию 8 символов.
$conf{CARDS_PIN_SYMBOLS}='0123456789'; Символы используемые для генерации PIN кода.
По умолчанию: 0123456789.
$conf{CARDS_SHOW_PINS}=1; Показывать ПИН-коды карточек администратору
$conf{CARDS_LOGIN_PASSWD_SAME}=1; Генерировать одинаковые логины и пароли для карточек с сервисами. Логины генерируются в произвольном порядке без учёта правил формирования логинов в форме заведения универсальных карт
$conf{CARDS_PAYMENTS_EXTERNAL}='/usr/abills/misc/cards_external.sh'; Запуск внешних программ после успешного пополнения счёта.
$conf{CARDS_NUMBER_LENGTH}=11; длина номера карты. По умолчанию 11 символов
$conf{CARDS_PIN_ONLY}=1; Использовать только пин для пополнения
$conf{CARDS_SKIP_COMPANY}=0; Запрет пополнения пользователям прикреплённым к компаниям

Дилеры

Добавление дилера. Любой пользовательский акаунт может получить расширение дилер. Для этого нужно включить в акаунте эту функцию. / Customers/ Logins/ Information/

Tarif plan Тарифный план по которому будут сниматься деньги с дилера за сгенерированные карточки
Percentage Процентная ставка от продаж карт
Disable Блокировать
Registration Дата регистрации
Comments Комментарии

Список дилеров
/ Customers/ Dealers/

ID ID Дилера
Name Название
Address Адрес
E-Mail E-mail
Registration Дата регистрации
Percentage Процентная ставка дилера
State Состояние активности
Count Общее количество полученных карт
Enable Остаток непроданных карт

Тарифные планы

/ Система/ Интернет карточки/ Дилеры Тарифные планы/

Название: Название
Процентная ставка: Процентная ставка дилера от проданных каточек
Цена операции: Сума которая снимается с дилера при пополнении карточкой. Указывается в процентах, а также можно использовать регулярные выражения
Регулярные выражения:
(COUNT>10=PRICE:100;
TOTAL_SUM>100=PRICE:20;)
Вид оплаты: Предоплата
послеоплата (карточки выдаются внезависимости от его депозита)
оплата после активации с дилера сума снимается поле активации карточки абонентом
Активации: Сума активации ТП
Изменить: Сума которая снимается при изменении ТП
Кредит: Кредит
Минимальная денежная наработка: Минимальная сума на которую нужно продать карточек. Если сума не наработана систма дополнительно её до снимает
Сервер доступа:
Бонус :

Генерация Универсальных Карт (с сервисами)

Меню генерации универсальных карт / Клиенты/ Логины/ Internet/ Интернет карточки/

Login Информация о логине
Prefix Префикс логина
Begin Первый номер логина. Следует за префиксом
Length: Длина логина
File: Получить список логинов и паролей из файла
Password Пароль
Symbols: Символы, которые используются при генерации пароля
Size: Длина пароля

Универсальные карты генерируются по аналогии с формой создания клиентов.

Описание процесса импорта

В системе есть возможность загрузить логины, пароли и другую сопутствующую информацию о пользователях из текстового файла. Очень удобно при миграции из других биллинговых систем.

Влияющие параметры из libexec/config.pl

# Длина пароля не менее
$conf{PASSWD_LENGTH}=6;

# Максимальная длина логина
# По умолчанию 16 но не более 20
$conf{MAX_USERNAME_LENGTH}=15;

# В логине возможно использовать только
# По умолчанию маленькие латинские буквы, цифры и символ подчёркивания(только не первым символом)
$conf{USERNAMEREGEXP}="^[a-z0-9_][a-z0-9_-]*\$";

После подключения модуля Cards появляется меню / Customers/ Users/ Internet / Internet cards/

Все значения, явно не указанные в файле для импорта, берутся из полей на данной странице, внимательно проверьте их перед нажатием кнопки «Create».

Обратите внимание, что если указана дата активации (не «0000-00-00»), то, в зависимости от тарифного плана, будут сделаны все необходимые расчёты с соответствующим изменением депозитов.

Формат файла логинов

[LOGIN][tab][PASSWORD][tab][EXPRESION…]

Разделитель для данных символ табуляции.

LOGIN Логин
PASSWORD Пароль. Если в поле PASSWORD прочерк «-» система автоматически генерирует пароли.
EXPRESSION Дополнительные параметры. Формат НАЗВАНИЕ=«ЗНАЧЕНИЕ».
Дополнительные параметры для модуля 'Dv'

После подключения модуля Cards появляется меню / Customers/ Users/ Internet/ Internet carts/

Информация о акаунте

1.ACTIVATE Дата активации аккаунта
1.EXPIRE Дата окончания аккаунта
1.COMPANY_ID АйДи компании
1.CREDIT Кредит
1.CREDIT_DATE Дата завершения кредита
1.GID Ид группы
1.REDUCTION Скидка
1.DISABLE Статус логина
1.UID UID абонента. По умолчанию заполняется автоматически. Явно использовать только в крайнем случае

Персональная информация

3.ADDRESS_BUILD Номер дома
3.ADDRESS_FLAT Номер квартиры
3.ADDRESS_STREET Улица
3.ADDRESS_FULL Полный адрес при импорте с систем где адрес записывается одной стройкой.
3.COMMENTS Комментарии
3.CONTRACT_ID Номер контракта
3.CONTRACT_DATE Дата контракта
3.EMAIL E-mail адрес
3.FIO Имя отчество
3.PHONE Телефон
3.PASPORT_NUM Номер паспорта
3.PASPORT_DATE Дата выдачи паспорта
3.PASPORT_GRANT Учреждение,которое выдало паспорт
3.ZIP индекс
3.CITY Город

Для добавления дополнительных информационных полей указывается номер 3 и название поля в базе заглавными буквами.
Пример:
3._SECOND_ADDRESS

Internet

4.CID Caller ID
4.FILTER_ID АйДи фильтра
4.IP IP адрес
4.NETMASK Маска сети
4.SIMULTANEONSLY Одновременных соединений
4.SPEED Скорость
4.TP_ID АйДи тарифного плана
4.CALLBACK Флаг активности CallBack
4.STATUS Статус Сервиса
0 - Активно
1 - Отключено
2 - Не активизирован
3 - Приостановление
4 - Отключено: Неуплата
5 - Cлишком маленький депозит
6 - Заблокирован из за вирусов
4.PASSWORD Дополнительный пароль сервиса
4.DV_LOGIN Дополнительный логин сервиса
4.DV_SKIP_FEE=1 Не снимать начисление абон. платы при импорте

Если не указать серию при импорте через меню (/ Customers/ Logins/ Internet/ Internet cards/) то для заведённых аккаунтов начислится абонплата, если же указать серию абон. плата не будет начислена

4.EXPIRE Дата завершения услуги

Оплата

5.SUM Сума «+» оплата, «-» снятие денег. Разделитель дробной части точка
5.DESCRIBE Описание
5.ER Курс обмена
5.EXT_ID Внешний АйДи
5.DATE Дата произведения оплаты «0000-00-00 00:00:00» или «0000-00-00»
5.EXT_BILL_DEPOSIT Сума дополнительного депозита

E-mail (Если подключён модуль Email к системе)

6.USERNAME Имя логина для почтового ящика (Пример: USERNAME@DOMAIN_NAME)
6.DOMAINS_SEL ID домена
6.COMMENTS Комментарий
6.MAILDIR Каталог, в который будет складываться почта USERNAME@DOMAIN_NAME
6.MAILS_LIMIT Лимит на количество писем
6.BOX_SIZE Лимит на размер почтового ящика (в байтах)
6.ANTIVIRUS Активизировать антивирус для данного почтового ящика
6.ANTISPAM Активизировать фильтр спама для данного почтового ящика
6.DISABLE Заблокировать ящик. Сервер не будет принимать почту для данного ящика и сообщать о его блокировке.
6.EXPIRE Время истечения действия акаунта
6.PASSWORD Пароль на почтовый ящик

Msgs (Если подключён модуль Msgs к системе)

7.UID UID
7.SUBJECT Тема сообщения
7.MESSAGE Сообщение

Bonus (Если подключён модуль Bonus к системе)

8.ACTION_TYPE Тип операции
0 - пополнение
1 - снятие
8.EXT_BILL_ID Номер дополнительного счета. Если не указывать автоматически подставляется
8.DESCRIBE Описание
8.METHOD Тип оплаты
8.EXT_ID Дополнительный идентификатор операции
8.INNER_DESCRIBE Внутриние описание операции
8.EXPIRE Время истечения операции

Dhcphosts (Если подключён)

11.IP
11.HOSTNAME
11.NETWORK
11.MAC
11.DISABLE
11.COMMENTS
11.PORTS
11.VID
11.SERVER_VID
11.NAS_ID
11.OPTION_82
11.BOOT_FILE
11.NEXT_SERVER
11.IPN_ACTIVATE

Дополнительные параметры

SKIP_ERRORS=1 игнорировать ошибки, возникшие при добавлении акаунтов и добавлять следующие. По умолчанию загрузка останавливается на первой случившейся ошибке

Пример файла логинов. Переносятся логин, пароль, сума и ФИО:

petrov   pasrddsword   5.SUM="10"  3.FIO="Petrov A V"
test     testpassword  5.SUM="2.5" 3.FIO="THis Is test"
test2    test2pasrdds  5.SUM="6.0" 3.FIO="THis Is test2 user"

Управления картами

/ System configuration/ Card System/ Internet carts/
Состояние карт

ENABLE Карта активна
DISABLE Карта блокирована
USED Карта использована
DELETED Удалён сервис карты но карта ещё активна для пополнения
RETURNED Карта возвращена дилером

Дата продажи карты

SOLD Время продажи карты дилером. Используется при начислении комиссии дилеру от проданных карт

После изменения состояния карты или передачи её дилеру в поле Administrator вносятся данные об администраторе, сделавшем последние действия, и заносятся данные в системный журнал (/System configuration/ History/).

Список Серий

Serial Серия
Count Количество карт
Sum Общая сума на которую выписаны карты
Enable Активных карт (Не активизированных)
Expire Время окончания действия карты
Dillers Количество карт отправленных дилерам
Added Дата создания серии
Administrators Администратор, создавший серию

Список Карт

Number Номер карты
Serial Серия карты
Login Логин.
Если карта с прикреплённым сервисом в поле отображается логин пользователя сервисом. Для карт пополнения это поле не заполнено.
Sum Сума для пополнения на карте
Status Статус карты.
Статусы:
Enable – Активна
Disable – Блокирована
Used – Использована
Deleted - Уничтожен логин карты
Returned - Возвращена
Expire Дата окончания действия карты. По истечению этой даты карта считается нерабочей.
Added Дата генерации карты
Dillers Дилер
Date Дата изменения статуса карты
Sold Дата продажи карты
Administrators Администратор, создавший карту
PIN ПИН-код карты. Для карты с сервисом это пароль.
Колонка отображается только, если включена опция $conf{CARDS_SHOW_PINS}

Печать и экспорт карт

В системе предусмотрена функция печати карточек оплаты и формирование шаблонов в формате PDF. Для работы с PDF форматом нужно установить Perl модуль .
Печать осуществляется на лист размером А4. Куда можно разместить 10 карточек.
За печать карточек отвечают следующие шаблоны:

  • cards_print.tpl - печать в HTML формате
  • cards_print.pdf - PDF шаблон
  • cards_print.dsc - файл разметки для PDF шаблона

При формирование печатной странички можно использовать следующие переменные шаблона.

SERIAL_0 Серийный номер
LOGIN_0 Логин
PIN_0 Пин или пароль карточки
TP_0 Тарифный план для универсальной карточки
SUM_0 Цена карточки
EXPIRE_0 Дата окончания действия карточки
AGE_0 Время дествия карточки с момента первого входа используется только для универсальных карт
TIME_LIMIT_0 Предоплаченное время работы по данной карточке, только для универсальных карт. Время указывается в часах.

Номер в конце переменно указывает место размещение данных по карточке на листе.

0 1
2 3
4 5
6 7
8 9

Также можно экспортировать уже созданные карточки в формат CSV. В файл экспорта заносятся следующие поля разделённые табуляцией: SERIAL LOGIN, PASSWORD/PIN, TARIF_PLAN, SUM, EXPIRE, AGE, TIME_LIMIT

Интерфейс Дилера

(Поставляется как дополнение к карточному модулю)

Возможности

  1. Генерация карт платежей произвольного номинала
  2. Дилер имеет возможность генерировать карты на суму своего депозита (депозит + кредит).
  3. Фомирования чеков для чековых принтеров (Например: D-Link DSA-3100P)
  4. Вывод отчётов для дилера

Установка

# cp dillers.cgi /usr/abills/cgi-bin/

После успешной установки интерфейс доступен за адресом

https://your.host:9443/dillers.cgi

Работа с системой
Для создания дилера нужно зайти в меню / Customers/ Logins/ Information/ Dillers/ и активизировать дилерский аккаунт.

Терминальный сервер

Также в интерфейс дилера встроен терминальный сервер который разрешает подключать к системе внешние программы для генерации карточек.

Протокол

  • Проверка активности сервера:
/dillers.cgi?cmd=ping

ответ

pong
  • Пополнение счета:

/dillers.cgi?cmd=pay&term=1234567&pswd=password&date=29.09.2010&time=10:55&sum=15

переменные

term ID терминалов (Указывается в опции $conf{CARDS_TERMINAL_IDS})
pswd пароль терминала (Указывается в опции $conf{CARDS_TERMINAL_PASSWD}
data дата пополнения
time время пополнения
sum сумма пополнения

ответ

err=no&series=14351431&pin=76543

err ошибка пополнения.
no - Выполнено без ошибок
ERR_WRONG_SUM - неправильно указана сума
EXIST - карточка уже существует
ERROR - другая ошибка
WRONG_TERMINAL_ID - Неправильный ID терминала
WRONG_PASSWORD - Указана неправильный пароль в переменной $conf{CARDS_TERMINAL_PASSWD}
DILLER_NOT_EXIST - Не указан дилер системы или не существует проверте опцию $conf{CARDS_TERMINAL_UID}
SMALL_DEPOSIT - У дилера слишком мало средств для создания карт
series Серия
pin пин

Переменные настройки

$conf{CARDS_TERMINAL_IP}='192.168.1.102'; IP адреса терминалов пополнения указываются через запятую
$conf{CARDS_TERMINAL_IDS}='1234567:212:password,12443:322:password'; ID:UID:PASSWORD
ID терминалов оплаты указываются через запятую
UID абонента
PASSWORD - пароль

Устаревшие опции

$conf{CARDS_TERMINAL_PASSWD}='password'; Пароль авторизации терминалов
$conf{CARDS_TERMINAL_UID}='4810'; UID дилера системы через которого будут проходить операции выписки карт пополнения

Отчёты

/ Reports/ Cards/

Формирование отчётов по работе карточной системы

Перебор PIN кодов

В системе ведётся контроль перебора пин кодов если количество неправильный вводов абонентом больше значения переменной $conf{CARDS_BRUTE_LIMIT} (По умолчанию 5) система блокирует ввод данных по карточкам. Блокировка длится период указанный в переменной $conf{CARDS_BRUTE_CLEAN_PERIOD} (по умолчанию 2 дня). Блокировка ввода карточки производится только если такаая картчока уже есть в системе и пользователь исчерпал количество попыток
Журнал блокировок можно посмотреть в меню

/ System configuration/ Internet cards/ Brute Attack/

Список ошибок пользовательского интерфейса

600 Непредвиденная ошибка. Обратитесь в службу поддержки
601 Попытка перебора пин кодов карточки
602 Время действия карточки закончилось
603 Карточка не существует
604 Остаток на карточке не достаточный для пополнения
605 Неправильные параметры ввода карточки
606 Карточка уже использована
607 Карточка уже использована. Попытка DDos
608 По данной карточке уже произведена оплата
609 Ошибка на стадии зачисления средств на счёт