Модуль платежей. Разрешает автоматически зачислять деньги с разных платёжных систем.

Возможности

С чего начать?

  1. Надо подписать договор с платежной системой.

  2. Получить протокол (опционально) взаимодействия API.

  3. Получить ключи от процессинга (например, логин, пароль, номер мерчанта в платежной системе).

  4. Купить и настроить модуль платежной системы в ABillS.

  5. Посмотреть как настроить платежную систему
  6. Принимать платежи.

 

Типы внешних платежей

Тип 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 адресов
Пример:
domain: out.adyen.com

$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

Станет:
ваш_биллинг_url/paysys_check.cgi/{ID_ДОМЕНА}

$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


F.A.Q

ВопросыОтветы

Как перейти со старой схемы на новую?

С Версии 0.92.76 По умолчанию новая схема!

Сделать надо следующее:
1) прописать опцию в /usr/abills/libexec/config.pl
$conf{PAYSYS_NEW_SCHEME}=1;
2) все новые .pm файлы скопировать в папку /usr/abills/Abills/modules/Paysys/systems/
3) завести платежные системы через /Настройки/Paysys/Настройки/

Как сделать миграцию с 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