Модуль платежей. Разрешает автоматически зачислять деньги с разных платёжных систем.
Table of Contents |
---|
Возможности
- Автоматически зачислять деньги на счёт пользователя без участия оператора
- Уведомление администратора о поступлениях платежей.
- Уведомление пользователя о получении платежа.
- Ведение журнала платежей с детальной информацией о платежах.
- Создание отчёта платежей.
- Блокирования/разрешения уведомлений о платеже для определенных только IP адресов. Уведомление администратора о не санкционируемых операциях.
- Зачисление с Visa/Master карт.
- Зачисления через терминалы оплаты.
- Загрузка платежей с файла(Банковские выписки).
- Курсы Валют.
- Запуск команд перед/после оплатой.
Children Display | ||
---|---|---|
|
С чего начать?
Надо подписать договор с платежной системой.
Получить протокол (опционально) взаимодействия 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
Подключение модуля
Code Block | ||||
---|---|---|---|---|
| ||||
@MODULES = (
'Paysys'
);
# Включение меню финансовых операций.
$conf{user_finance_menu}=1;
#Включение новой схемы модуля Paysys.
$conf{PAYSYS_NEW_SCHEME}=1;
$conf{PAYSYS_NEW_SETTINGS} = 1; |
Подробнее про использования новой схемы.
Настройка работы с базой данных и создание таблиц:
Code Block | ||
---|---|---|
| ||
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.
Code Block | ||
---|---|---|
| ||
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
Code Block | ||||
---|---|---|---|---|
| ||||
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
Code Block | ||
---|---|---|
| ||
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_PASSWD}='abills:pass'; Устаревший параметр ! | Параметры CGI авторизации, действует полностью на скрипт paysys_check.cgi |
$conf{PAYSYS_IPS}='127.0.0.1,192.168.1.40'; Устаревший параметр ! | Ограничение IP адресов на скрипте paysys_check.cgi Сейчас нужно использовать ограничение на уровне настройки модулей |
$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, UAH" | Параметры для изменения выбора желаемых валют в быстрых отчётах курса валют ЦБ РФ и НБУ. |
$conf{PAYSYS_ADD_TO_RECOMMENDED_SUMM}='1.2'; | 1.2 - Значение суммы, которое будет добавляться к рекомендуемой сумме оплаты |
$conf{PAYSYS_NET_RECOMMENDED_SUM}=1; | Возвращать рекомендуемую оплату 0 в платежные системы |
$conf{PAYSYS_RECOMMENDED_SUM_AS_DEPOSIT}=1; | Возвращать рекомендуемую оплату только как депозит абонента, если он в минусе |
$conf{PAYMENT_METHOD_NEW}=1; | Включение работы модуля с меню Настройки>Другое>Вид оплаты. После включения данной опции, виды оплат будут показываться с меню Настройки>Другое>Вид оплаты, а также появится галочка "Создать вид оплаты" при добавлении платежной системы. |
$conf{PAYMENT_HIDE_USER_MENU}=1; | После включения данной опции, все меню модуля не будут показываться абоненту в кабинете пользователя. |
$conf{FIO_HIDEN} Параметр удален, работает по умолчанию | После подключения данной опции в платежных терминалах не будет отображаться полное ФИО (Например: Te** Us** Te***n* Ві***р*в**). Подробнее можете почитать здесь |
$conf{PAYMENTS_POOL}=1; | Параметр пула платежей. При включенной опции платежи будут проходить дополнительную проверку. Используется с 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}=2; | Включение режима отладки, подробнее можете почитать здесь, таже нужно создать файл paysys_check.log в каталоге usr/abills/var/log/ |
$conf{PAYSYS_MIN_SUM}=10; | Минимальная оплата через портал пользователя |
$conf{PAYSYS_MAX_SUM}=1000; | Максимальная оплата через портал пользователя |
$conf{PAYSYS_MIN_SUM_RECOMMENDED_PAY}=1; | Рекомендуемая сумма как минимальная сумма пополнения |
$conf{SECOND_BILLING}=1; | Дублирование платежей на второй биллинг, подробнее про это можете прочитать здесь |
$conf{PAYSYS_USER_PORTAL_MAP}=1; | Включить карту в портале пользователя под возможными платежными системами |
$conf{PAYSYS_USER_PORTAL_BTN_TEXT}=1; | Включить надпись названия систем под логотипом платежной системы в портале пользователя |
$conf{PAYSYS_ALLOW_DOMAIN}=1; | Включить возможность прописать в настройках платежной системы ее домена для получения ip адресов |
$conf{PAYSYS_LOG}=2; | Значение 1: Отчёт>Платежные системы>История запросов Значение 2: Отключает логирование в файл /usr/abills/var/log/paysys_check.log Значение более 2: Работает как при значении 1 |
$conf{MULTIDOMS_DOMAIN_ID}=1; | Поддержка работы Multidoms для paysys_check.cgi Если включена опция, нужно давать новый callback url платежным системам. Было: ваш_биллинг_url/paysys_check.cgi Станет: |
$conf{PAYSYS_EMAIL_NOTICE}=1; | Оповещение почты $conf{ADMIN_MAIL}, о платеже |
$conf{PAYSYS_REPORTS_FORCE_IMPORT}=1; | Принудительный импорт платежа (Отчёт>Платежные системы>Внутренние отчеты) по тому же номеру транзакции. Необходимо, если в банке могут повторяться номера транзакций |
$conf{PAYSYS_SKIP_USERS_STATUS}='2,4,5'; | Блокировка на прием платежей по логинам с выбранными статусами |
Пул оплат
$conf{PAYMENT_POOL}=1;
Параметр пула платежей. При включенной опции платежи будут проходить дополнительную проверку.
Используется с billd payments_pool (проходиться по оплатам из пула оплат и выполняет cross_modules_pre cross_modules_make для каждой оплаты)
Это разрешает намного економичней расходовать ресурсы сервера и увеличить скорость ответа на запросы платежных систем. Данный механизм рекомендуется для провайдеров у которых в день свыше 1000 платежей через внешние системы.
Code Block | ||
---|---|---|
| ||
*/10 * * * * root /usr/abills/libexec/billd payments_pool |
Интерактивный режим
При открытии в веб браузере программы без параметра paysys_check.cgi система запускает интерактивный режим пополнения счета, который разрешает пополнить счет без захода в личный кабинет абонентом.
В интерактивном режиме отображаются все подключённые платёжные системы у которых есть возможность оплаты через личный кабинет
Вид формы:
Параметры
$conf{PAYSYS_GATEWAY_IDENTIFIER}='CONTRACT_ID'; | Параметр по которому проверяется абонент, по умолчанию UID |
За дизайн интерактивной формы отвечает шаблон paysys_gateway.tpl