Table of Contents |
---|
Описание создания модуля AbillsBank.pm
Нужно создать файл AbillsBank.pm в папке /usr/abills/Abills/modules/Paysys/
Заголовки модуля
Code Block | ||||
---|---|---|---|---|
| ||||
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 => '', ); |
Обязательные функции модуля
Конструктор модуля.
Code Block | ||||
---|---|---|---|---|
| ||||
#**********************************************************
=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;
} |
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =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} ) в списке адресов которые вы прописали при настройках модуля.
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =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() должна быть для оплаты из клиентского кабинета.
Функция запускается после введения суммы и нажатия Дальше.
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =head2 user_portal () - Arguments: Returns: =cut #********************************************************** sub user_portal { my $self = shift; my ($user, $attr) = @_; } |
Создание функции тестирования
Code Block | ||||
---|---|---|---|---|
| ||||
#**********************************************************
=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 | Параметры обозначают функции которые будут тестироваться. Если в вашем модуле нет какой то из них, то параметра не нужно. Цифра в названии обозначает порядок функции тестирования, после нее может быть любое название. |
| ||||||||||||||
| Данные параметры заполняются для создания формы тестирования по каждой функции.
После добавления необходимых параметров ОБЯЗАТЕЛЬНО добавить параметр result - массив результатов, можно передавать несколько(название не изменять) Отдельный элемент массива будет подставляться в регулярное выражение и осуществляться его поиск в xml-ответе функции. |
|