Описание создания модуля AbillsBank.pm
Нужно создать файл AbillsBank.pm в папке /usr/abills/Abills/modules/Paysys/
Заголовки модуля
package Paysys::systems::AbillsBank; =head1 AbillsBank New module for AbillsBank Documentaion: abills.net.ua Date: 2022.01.01 Version: 8.00 =cut use strict; use warnings FATAL => 'all'; require Paysys::Paysys_Base; our $PAYSYSTEM_NAME = 'AbillsBank'; our $PAYSYSTEM_SHORT_NAME = 'AB'; our $PAYSYSTEM_ID = 1; our $PAYSYSTEM_VERSION = '8.00'; # Этот хеш используется для настройки системы в меню настроек our %PAYSYSTEM_CONF = ( PAYSYS_ABILLS_BANK_LOGIN => '', );
Обязательные функции модуля
Конструктор модуля.
#********************************************************** =head2 new($db, $admin, $CONF) Arguments: $db - ссылка на обьект базы данных (required) $admin - ссылка на обьект администратора (required) $CONF - ссылка на хеш %conf (required) $attr - { в атрибутах передаем дополнительные параметры } Returns: $self - обьект класса платежной системы =cut #********************************************************** sub new { my $class = shift; my ($db, $admin, $CONF, $attr) = @_; my $self = { db => $db, admin => $admin, conf => $CONF, DEBUG => $CONF->{PAYSYS_DEBUG} || 0, }; bless($self, $class); return $self; }
#********************************************************** =head2 get_settings() - return hash of settings Arguments: Returns: HASH =cut #********************************************************** sub get_settings { my %SETTINGS = (); $SETTINGS{VERSION} = $PAYSYSTEM_VERSION; # объявляется в шапке модуля $SETTINGS{ID} = $PAYSYSTEM_ID; # объявляется в шапке модуля $SETTINGS{NAME} = $PAYSYSTEM_NAME; # объявляется в шапке модуля # хеш с нужными ключами настсройки системы, например: логин, пароль, поле идентификации абонента и тд. $SETTINGS{CONF} = \%PAYSYSTEM_CONF; return %SETTINGS; }
Функция proccess() запускается при запросе от платежной системы на скрипт paysys_check.cgi.
Когда приходит запрос, система проверяет наличие IP адреса с которого идет запрос( $ENV{REMOTE_ADDR} ) в списке адресов которые вы прописали при настройках модуля.
#********************************************************** =head2 proccess(\%FORM) - function that proccessing payment on paysys_check.cgi Arguments: $FORM - HASH REF to %FORM Returns: =cut #********************************************************** sub proccess { my $self = shift; my ($FORM) = @_; }
Функция user_portal() должна быть для оплаты из клиентского кабинета.
Функция запускается после введения суммы и нажатия Дальше.
#********************************************************** =head2 user_portal () - Arguments: Returns: =cut #********************************************************** sub user_portal { my $self = shift; my ($user, $attr) = @_; }
Создание функции тестирования
#********************************************************** =head2 has_test() Arguments: - Returns: =cut #********************************************************** sub has_test { my $self = shift; my %params_hash = ( '1CHECK' => { account => { name => 'account', val => '', tooltip => "Идентификатор абонента в зависимости от настроек системы.(По умолчанию вводить UID абонента)", }, command => { name => 'command', val => 'check', ex_params => 'readonly="readonly"', }, sum => { name => 'sum', val => '1.00', tooltip => 'Сумма платежа', type => 'number', }, txn_id => { name => 'txn_id', val => $random, tooltip => 'Transaction ID(случайный номер)', type => 'number', }, result => [ '<result>0</result>' ], }, '2PAY' => { result => [ '<result>0</result>' ], command => { name => 'command', val => 'pay', ex_params => 'readonly="readonly"', }, account => { name => 'account', val => '', tooltip => "Идентификатор абонента в зависимости от настроек системы.(По умолчанию вводить UID абонента)", }, sum => { name => 'sum', val => '1.00', tooltip => 'Сумма платежа', type => 'number', }, txn_id => { name => 'txn_id', val => $random, tooltip => 'Transaction ID(случайный номер)', type => 'number', }, }, '3CANCEL' => { result => [ '<result>0</result>' ], command => { name => 'command', val => 'cancel', ex_params => 'readonly="readonly"', }, prv_txn => { name => 'prv_txn', val => 'Скопировать из ответа на проведение платежа', tooltip => 'Id платежа', type => 'number', }, }, ); return \%params_hash; }
Описание функции и структуры данных
Тест платежной системы обращается в данную функцию для получения параметров по каким проводить тест.
%params_hash должен иметь следующую структуру.
Параметр | Описание | Пример |
---|---|---|
1CHECK, 2PAY, 3CANCEL | Параметры обозначают функции которые будут тестироваться. Если в вашем модуле нет какой то из них, то параметра не нужно. Цифра в названии обозначает порядок функции тестирования, после нее может быть любое название. | Пример взят из модуля Ibox my %params_hash = ( '1CHECK' => { }, '2PAY' => { }, '3CANCEL' => { }, ); |
Пример взят из модуля Ibox param1 => { name => 'account', val => '', tooltip => "", ex_params => 'readonly="readonly"', type => 'number', }, ... param...n => { name => 'account', val => '', tooltip => "", ex_params => 'readonly="readonly"', type => 'number', }, result => [ 'result for exprassion' ], | Данные параметры заполняются для создания формы тестирования по каждой функции.
После добавления необходимых параметров ОБЯЗАТЕЛЬНО добавить параметр result - массив результатов, можно передавать несколько(название не изменять) Отдельный элемент массива будет подставляться в регулярное выражение и осуществляться его поиск в xml-ответе функции. | Пример взят из модуля Ibox '1CHECK' => { account => { name => 'account', val => '', tooltip => "Идентификатор абонента в зависимости от настроек системы.(По умолчанию вводить UID абонента)", }, command => { name => 'command', val => 'check', ex_params => 'readonly="readonly"', }, sum => { name => 'sum', val => '1.00', tooltip => 'Сумма платежа', type => 'number', }, txn_id => { name => 'txn_id', val => $random, tooltip => 'Transaction ID(случайный номер)', type => 'number', }, result => [ '<result>0</result>' ], }, |