Line # Revision Author
1 358 ahitrov package payments::State;
2
3 use strict;
4 use warnings 'all';
5 use vars qw($AUTOLOAD);
6
7
8 sub new {
9 my ($proto) = @_;
10 my $class = ref($proto) || $proto;
11 my $self = {};
12 bless $self, $class;
13
14 # configured
15 563 ahitrov $self->{project} = '@PROJECT@';
16 $self->{debug} = (lc('@DEBUG@') eq 'yes');
17 $self->{contenido_notab} = 0;
18 $self->{tab_name} = 'Онлайн-оплата';
19 $self->{project_name} = '@PROJECT_NAME@';
20 $self->{default_expire} = '@DEFAULT_EXPIRE@' || 300;
21 $self->{default_object_expire} = '@DEFAULT_OBJECT_EXPIRE@' || 600;
22 358 ahitrov
23 # зашитая конфигурация плагина
24 $self->{db_type} = 'none'; ### For REAL database use 'remote'
25 $self->{db_keepalive} = 0;
26 $self->{db_host} = '';
27 $self->{db_name} = '';
28 $self->{db_user} = '';
29 $self->{db_password} = '';
30 $self->{db_port} = '';
31 $self->{store_method} = 'toast';
32 $self->{cascade} = 1;
33 $self->{db_prepare} = 0;
34
35 563 ahitrov $self->{memcached_enable} = lc( '@MEMCACHED_ENABLE@' ) eq 'yes' ? 1 : 0;
36 $self->{memcached_backend} = '@MEMCACHED_BACKEND@';
37 $self->{memcached_select_timeout} = '@MEMCACHED_SELECT_TIMEOUT@' || 0.2;
38 $self->{memcached_servers} = [qw(@MEMCACHED_SERVERS@)];
39 $self->{memcached_enable_compress} = lc( '@MEMCACHED_ENABLE_COMPRESS@' ) eq 'yes' ? 1 : 0;
40 $self->{memcached_delayed} = lc('@MEMCACHED_DELAYED@') eq 'yes' ? 1 : 0;
41 $self->{memcached_set_mode} = lc('@MEMCACHED_SET_MODE@') eq 'add' ? 'add' : 'set';
42 $self->{memcached_busy_lock} = 60;
43 $self->{memcached_namespace} = lc( $self->{'project'} ).'|plugin_payments|';
44 358 ahitrov
45 $self->{serialize_with} = 'json'; ### or 'dumper'
46
47 # not implemented really (core compatibility)
48 $self->{binary_directory} = '/nonexistent';
49 $self->{data_directory} = '/nonexistent';
50 $self->{images_directory} = '/nonexistent';
51 $self->{preview} = '0';
52
53 $self->{moneta_app_id} = '@MNT_ID@';
54 $self->{moneta_app_secret} = '@MNT_SECRET@';
55 $self->{moneta_currency_code} = '@MNT_CURRENCY_CODE@';
56 $self->{moneta_test_mode} = int('@MNT_TEST_MODE@' || 0);
57 $self->{moneta_sig_code} = '@MNT_SIG_CODE@';
58
59 369 ahitrov my @valid_ips_default = qw(
60 94.103.26.178 94.103.26.179 94.103.26.180 94.103.26.181
61 94.103.26.182 159.255.220.247 159.255.220.248 159.255.220.249
62 159.255.220.250 159.255.220.251 159.255.220.252 159.255.220.253
63 159.255.220.254
64 );
65
66 358 ahitrov $self->{xsolla_app_id} = '@XSO_ID@';
67 $self->{xsolla_app_secret} = '@XSO_SECRET@';
68 $self->{xsolla_currency_code} = '@XSO_CURRENCY_CODE@';
69 $self->{xsolla_test_mode} = int('@XSO_TEST_MODE@' || 0);
70 369 ahitrov if ( '@XSO_VALID_IPS@' ) {
71 $self->{xsolla_valid_ips} = [qw(@XSO_VALID_IPS@)];
72 } else {
73 $self->{xsolla_valid_ips} = \@valid_ips_default;
74 }
75 358 ahitrov
76 525 ahitrov $self->{payture_app_id} = '@PTR_ID@';
77 $self->{payture_app_secret} = '@PTR_SECRET@';
78 $self->{payture_currency_code} = '@PTR_CURRENCY_CODE@';
79 $self->{payture_test_mode} = int('@PTR_TEST_MODE@' || 0);
80 $self->{payture_sig_code} = '@PTR_SIG_CODE@';
81
82 690 ahitrov $self->{sber_app_id} = '@SBER_LOGIN@';
83 $self->{sber_app_secret} = '@SBER_PASSWORD@';
84 $self->{sber_app_token} = '@SBER_TOKEN@';
85 $self->{sber_return_url} = '@SBER_RETURN_URL@';
86 $self->{sber_fail_url} = '@SBER_FAIL_URL@';
87 $self->{sber_test_mode} = int('@SBER_TEST_MODE@' || 0);
88 $self->{sber_currency_code} = int('@SBER_CURRENCY_CODE@' || 643);
89
90 358 ahitrov $self->_init_();
91 $self;
92 }
93
94 sub info {
95 my $self = shift;
96 return unless ref $self;
97
98 for (sort keys %{$self->{attributes}}) {
99 my $la = length $_;
100 warn "\t$_".("\t" x (2-int($la/8))).": $self->{$_}\n";
101 }
102 }
103
104 sub _init_ {
105 my $self = shift;
106
107 # зашитая конфигурация плагина
108 $self->{attributes}->{$_} = 'SCALAR' for qw(
109 debug
110 project
111 563 ahitrov tab_name
112 358 ahitrov
113 db_type
114 db_keepalive
115 db_host
116 db_port
117 db_name
118 db_user
119 db_password
120 store_method
121 cascade
122 db_prepare
123 db_client_encoding
124
125 memcached_enable
126 563 ahitrov memcached_servers
127 memcached_select_timeout
128 memcached_backend
129 358 ahitrov memcached_enable_compress
130 563 ahitrov memcached_set_mode
131 memcached_object_expire
132 358 ahitrov memcached_busy_lock
133 memcached_delayed
134 563 ahitrov memcached_namespace
135 358 ahitrov
136 binary_directory
137 data_directory
138 images_directory
139 preview
140 );
141 }
142
143 sub AUTOLOAD {
144 my $self = shift;
145 my $attribute = $AUTOLOAD;
146
147 $attribute =~ s/.*:://;
148 return unless $attribute =~ /[^A-Z]/; # Отключаем методы типа DESTROY
149
150 if (!exists $self->{attributes}->{$attribute}) {
151 warn "Contenido Error (payments::State): Вызов метода, для которого не существует обрабатываемого свойства: ->$attribute()\n";
152 return;
153 }
154
155 $self->{$attribute} = shift @_ if $#_>=0;
156 $self->{$attribute};
157 }
158
159 1;