Модуль платежей. Разрешает автоматически зачислять деньги с разных платёжных систем.
Надо подписать договор с платежной системой.
Получить протокол (опционально) взаимодействия API.
Получить ключи от процессинга (например, логин, пароль, номер мерчанта в платежной системе).
Купить и настроить модуль платежной системы в ABillS.
Принимать платежи.
Тип 1 - Портал абонента: пользователь оплачивает за услуги непосредственно со своего веб-кабинета используя виртуальные платёжные системы (Webmoney, Yandex деньги) или пластиковые карты Visa/Master Cards.
1) После входа в личный кабинет пользователь переходит в меню Денежные операции>Пополнение счёта, вводит сумму пополнения, выбирает систему оплаты и нажимает кнопку дальше

2) Система переносит пользователя на страницу подготовленной оплаты с данными платежа

3) Если все данные верны пользователь нажимает кнопку оплатить и переносится на странице проведение платежа системы оплаты которую он выбрал
4) После успешного совершения платежа пользователя возвращает назад на страницу личного кабинета с информацией что платёж был зачислен успешно
5) Если во время платежа произошла ошибка пользователя также возвращает на страницу личного кабинета и предупреждает повторно об ошибке пополнения
Тип 2 - Терминалы оплаты: пользователь оплачивает за услуги с терминала платежей. Терминал платежей через обработчик paysys_check.cgi передает данные в биллинг.
1) Пользователь подходит к терминалу и выбирает провайдера
2) Вводит свой логин или UID (или любой другой параметр указанный в настройке платёжной системы в биллинге). Терминал идентифицирует абонента, показывает его ФИО и остаток на счету.
3) Пользователь пополняет счет. На протяжении 1-2 минут деньги появляются на счету и биллинг активизирует услуги.
Тип 3 - Работа с выписками: пользователь оплачивает за услуги в банке. Средства вносятся администратором или автоматически через консоль (FTP, POP3, file)
При оплате в систему биллинга вносятся следующие данные:
Журнал платежей
Идентификатор платежа
Сумма платежа
Дата и время платежа
Платёжная системы
Журнал внешних платежей
Идентификатор платежа
Сумма платежа
Дата и время платежа
Платёжная системы
IP адрес откуда пришёл платёж
Тело самого запроса
Статус транзакции

После версии 0.78.30 используется новая схема подключения платежных систем, также скоро перестанет поддерживатся PAYSYS_V2
@MODULES = (
'Paysys'
);
# Включение меню финансовых операций.
$conf{user_finance_menu}=1;
#Включение новой схемы модуля Paysys.
$conf{PAYSYS_NEW_SCHEME}=1;
$conf{PAYSYS_NEW_SETTINGS} = 1; |
Подробнее про использования новой схемы.
Настройка работы с базой данных и создание таблиц:
mysql --default-character-set=utf8 -D abills < /usr/abills/db/Paysys.sql -p cp Paysys.pm /usr/abills/Abills/mysql |
Дополнительные модули платёжных систем копируются в папку /usr/abills/Abills/modules/Paysys/systems.
Установка агента получения (чекера) платежей. Платёжные системы отправляют на чекер данные об оплате, чекер идентифицирует систему, по IP адресу с которого идёт запрос, и заносит средства на счет. Если чекер не может идентифицировать системы он пишет Error: Unknown payment system.
cd /usr/abills/cgi-bin/ ln -s ../Abills/modules/Paysys/paysys_check.cgi paysys_check.cgi |
Для включение режима отладки нужно в конфигурационном файле включить опцию $conf{PAYSYS_DEBUG}=1; (Включить лог отладки для Paysys модуля)
Лог ведётся в файле /usr/abills/var/log/paysys_check.log.
Дать права для paysys_check.log
chown -R www-data:www-data /usr/abills/var/log/paysys_check.log chmod 755 /usr/abills/var/log/paysys_check.log |
По данному файлу можно отследить были ли подтверждения оплаты со стороны платёжной системы. Если не можете найти в данном файле подтверждения о платеже. Скорее всего система не отправила Вам его.
Чтобы быть полностью уверенным что платёжная система не отправляет подтверждение посмотрите в файл логов веб сервера на наличие обращений от платёжной системы к вашему биллингу /var/log/httpd/abills-access_log
Если обращения были, а платеж не провелся, то необходимо посмотреть лог ошибок : /var/log/httpd/abills-error.log
grep paysys_check.cgi /var/log/httpd/abills-access_log |
если обращения были вы видите следующие строки
192.168.1.4 - !- [04/Jun/2014:07:33:38 +0000] "GET /paysys_check.cgi HTTP/1.1" 200 1678
Настройки конфигурационного файла
| Параметр | Описание |
|---|---|
| $conf{PAYSYS_ACCOUNT_EXPR}='\d+(\d{8})$/$1'; | Возможность применять выражения для аккаунта абонента Пример: Из цифрового логина брать только последние 8 цифр \d+(\d{8})$/$1 |
| $conf{PAYSYS_PAYMENTS_METHODS}=' - '; Устаревший параметр ! | По умолчанию все оплаты с внешних источников заносятся как External Payments (Внешние платежи). Для создания отдельного типа оплат для каждой платёжной системы нужно указать в файле настройки следующею переменную со списком нужных платёжных систем. Формат списка номер плат. системы:название плат. системы;. Номера являются внутренними идентификаторами системы и не подлежат изменению названия, можно менять. Пример $conf{PAYSYS_PAYMENTS_METHODS}='41:Webmoney; 42:RUpay; 43:SMSProxy; 44:OSMP; 45:Portmone; 46:Ukrpays; 47:USMP;'; |
$conf{PAYSYS_EXCHANGE_RATES}="USD, EUR, RUR" | Параметры для изменения выбора желаемых валют в быстрых отчётах курса валют ЦБ РФ и НБУ. |
$conf{PAYSYS_ADD_TO_RECOMMENDED_SUMM}='1.2'; | 1.2 - Значение суммы, которое будет добавляться к рекомендуемой сумме оплаты |
$conf{PAYMENT_METHOD_NEW}=1; | Включение работы модуля с меню Настройки>Другое>Вид оплаты. После включения данной опции, виды оплат будут показываться с меню Настройки>Другое>Вид оплаты, а также появится галочка "Создать вид оплаты" при добавлении платежной системы. |
| $conf{PAYMENT_HIDE_USER_MENU}=1; | После включения данной опции, все меню модуля не будут показываться абоненту в кабинете пользователя. |
$conf{FIO_HIDEN} Параметр удален, работает по умолчанию | После подключения данной опции в платежных терминалах не будет отображаться полное ФИО (Например: Te** Us** Te***n* Ві***р*в**). Подробнее можете почитать здесь |
$conf{PAYMENT_POOL} | Параметр пула платежей. При включенной опции платежи будут проходить дополнительную проверку. Используется с billd payments_pool (проходиться по оплатам из пула оплат и выполняет cross_modules _pre _make для каждой оплаты) |
$conf{PAYSYS_TEST_USER}='test'; | Аккаунт абонента биллинга по умолчанию для тестирования платежных систем |
$conf{PAYSYS_TEST_SYSTEM}='127.0.0.1,192.168.1.40:Osmp.pm'; | IP адрес с которого будут проходить тестовые запросы также с указанием на какую систему отправлять данные запросы |
| $conf{PAYSYS_DEBUG} | Включение режима отладки, подробнее можете почитать здесь, таже нужно создать файл paysys_check.log в каталоге usr/abills/var/log/ |
| $conf{PAYSYS_MIN_SUM} | Минимальная оплата через портал пользователя |
| $conf{PAYSYS_MAX_SUM} | Максимальная оплата через портал пользователя |
| $conf{PAYSYS_MIN_SUM_RECOMMENDED_PAY} | Рекомендуемая сумма как минимальная сумма пополнения |
| $conf{SECOND_BILLING} | Дублирование платежей на второй биллинг, подробнее про это можете прочитать здесь |
| $conf{PAYSYS_USER_PORTAL_MAP} | Включить карту в портале пользователя под возможными платежными системами |
| $conf{PAYSYS_USER_PORTAL_BTN_TEXT} | Включить надпись названия систем под логотипом платежной системы в портале пользователя |
| $conf{PAYSYS_ALLOW_DOMAIN} | Включить возможность прописать в настройках платежной системы ее домена для получения ip адресов |
| $conf{PAYSYS_LOG} | Значение 1: Отчёт>Платежные системы>История запросов Значение 2: Отключает логирование в файл /usr/abills/var/log/paysys_check.log Значение более 2: Работает как при значении 1 |
$conf{MULTIDOMS_DOMAIN_ID} | Поддержка работы Multidoms для paysys_check.cgi Если включена опция, нужно давать новый callback url платежным системам. Было: ваш_биллинг_url/paysys_check.cgi Станет: |
| $conf{PAYSYS_EMAIL_NOTICE} | Оповещение почты $conf{ADMIN_MAIL}, о платеже |
$conf{PAYMENT_POOL}=1;Параметр пула платежей. При включенной опции платежи будут проходить дополнительную проверку.
Используется с billd payments_pool (проходиться по оплатам из пула оплат и выполняет cross_modules_pre cross_modules_make для каждой оплаты)
Это разрешает намного економичней расходовать ресурсы сервера и увеличить скорость ответа на запросы платежных систем. Данный механизм рекомендуется для провайдеров у которых в день свыше 1000 платежей через внешние системы.
*/10 * * * * root /usr/abills/libexec/billd payments_pool |
При открытии в веб браузере программы без параметра paysys_check.cgi система запускает интерактивный режим пополнения счета, который разрешает пополнить счет без захода в личный кабинет абонентом.
В интерактивном режиме отображаются все подключённые платёжные системы у которых есть возможность оплаты через личный кабинет
Вид формы:

Параметры
| $conf{PAYSYS_GATEWAY_IDENTIFIER}='CONTRACT_ID'; | Параметр по которому проверяется абонент, по умолчанию UID |
За дизайн интерактивной формы отвечает шаблон paysys_gateway.tpl
| Вопросы | Ответы |
|---|---|
Как перейти со старой схемы на новую? С Версии 0.92.76 По умолчанию новая схема! | Сделать надо следующее: |
Как сделать миграцию с Paysys V2 на V3? | Атоматическую миграцию можете посмотреть здесь |
| Как спрятать персональную информацию? | Как спрятать персональную информацию абонента? |
| Как Abills различает с какой платежной системы пришел запрос? | Abills ориентируется на IP адреса, которые вы задали в настройках платежной системы. Если адрес, с которого идут запросы не был прикреплен ни к одной платежной системе - Abills не будут обрабатывать их. |
| Как настроить платежную систему? | Как настроить платежную систему? |
0 Operation was successfully completed 1 User not present in the system 2 The error in the database 3 Such a payment already exists in the system, it is not present in the list of payments or the list of transactions 5 Improper payment amount. It arises in systems with a tandem payment if the user starts a transaction with one amount but in the process of changing the amount of the transaction 6 Too small amount 7 The amount of the payment more than permitted 8 The transaction is not found (Paysys list not found) 9 Payments already exists 10 This payment is not found in the system 11 For this group of users not allowed to use external payment (Paysys) 12 An unknown SQL error payment, happens when deadlock 13 Error logging external payments (Paysys list exist transaction) 14 User without bill account 15 Transaction created and unpaid and canceled 17 SQL when conducting payment 19 Cancel payment 28 Wrong exchange 35 Wrong signature 40 Duplicate identifier |