PluginProbe
Robokassa payment gateway for Woocommerce / trunk
Robokassa payment gateway for Woocommerce vtrunk
1.8.8 1.8.9 trunk
robokassa / labelsClasses.php

labelsClasses.php in Robokassa payment gateway for Woocommerce trunk, at labelsClasses.php

255 lines 6.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class payment_robokassa_pay_method_request_main extends \Robokassa\Payment\WC_WP_robokassa {
4 public function __construct() {
5 $this->id = 'robokassa';
6 $this->method_title = 'Robokassa';
7 $this->long_name = 'Оплата через Robokassa';
8 $this->description = get_option('RobokassaOrderPageDescription', 'Оплатить через Robokassa');
9
10 parent::__construct();
11 }
12 }
13
14 class payment_robokassa_pay_method_request_podeli extends \Robokassa\Payment\WC_WP_robokassa {
15 public function __construct() {
16 $this->id = 'robokassa_podeli';
17 $this->method_title = 'Robokassa';
18 $this->long_name = 'Оплата через Robokassa';
19 $this->title = 'Robokassa Х Подели';
20
21 parent::__construct();
22 }
23 }
24
25 class payment_robokassa_pay_method_request_credit extends \Robokassa\Payment\WC_WP_robokassa {
26 public function __construct() {
27 $this->id = 'robokassa_credit';
28 $this->method_title = 'Robokassa';
29 $this->long_name = 'Оплата через Robokassa';
30 $this->title = 'Рассрочка или кредит';
31
32 parent::__construct();
33 }
34 }
35
36 class payment_robokassa_pay_method_request_mokka extends \Robokassa\Payment\WC_WP_robokassa {
37 public function __construct() {
38 $this->id = 'robokassa_mokka';
39 $this->method_title = 'Robokassa';
40 $this->long_name = 'Оплата через Robokassa';
41 $this->title = 'Robokassa X Mokka';
42
43 parent::__construct();
44 }
45 }
46
47 class payment_robokassa_pay_method_request_split extends \Robokassa\Payment\WC_WP_robokassa {
48 public function __construct() {
49 $this->id = 'robokassa_split';
50 $this->method_title = 'Robokassa';
51 $this->long_name = 'Оплата через Robokassa';
52 $this->title = 'Robokassa X Яндекс Сплит';
53
54 parent::__construct();
55 }
56 }
57
58 class payment_robokassa_pay_method_request_sbp extends \Robokassa\Payment\WC_WP_robokassa {
59 public function __construct() {
60 $this->id = 'robokassa_sbp';
61 $this->method_title = 'Robokassa';
62 $this->long_name = 'Оплата через Robokassa';
63 $this->title = 'Оплата через QR-код СБП';
64
65 parent::__construct();
66 }
67 }
68
69 /**
70 * Возвращает конфигурацию все�
71 способов оплаты Robokassa.
72 *
73 * @return array
74 */
75 function robokassa_get_payment_methods_config()
76 {
77 return [
78 [
79 'class' => 'payment_robokassa_pay_method_request_main',
80 'gateway_id' => 'robokassa',
81 'title' => 'Robokassa',
82 ],
83 [
84 'class' => 'payment_robokassa_pay_method_request_credit',
85 'gateway_id' => 'robokassa_credit',
86 'option' => 'robokassa_payment_method_credit_enabled',
87 'alias' => 'OTP',
88 'title' => 'Рассрочка или кредит',
89 ],
90 [
91 'class' => 'payment_robokassa_pay_method_request_podeli',
92 'gateway_id' => 'robokassa_podeli',
93 'option' => 'robokassa_payment_method_podeli_enabled',
94 'alias' => 'Podeli',
95 'title' => 'Robokassa Х Подели',
96 ],
97 [
98 'class' => 'payment_robokassa_pay_method_request_mokka',
99 'gateway_id' => 'robokassa_mokka',
100 'option' => 'robokassa_payment_method_mokka_enabled',
101 'alias' => 'Mokka',
102 'title' => 'Robokassa X Mokka',
103 ],
104 [
105 'class' => 'payment_robokassa_pay_method_request_split',
106 'gateway_id' => 'robokassa_split',
107 'option' => 'robokassa_payment_method_split_enabled',
108 'alias' => 'YandexPaySplit',
109 'title' => 'Robokassa X Яндекс Сплит',
110 ],
111 [
112 'class' => 'payment_robokassa_pay_method_request_sbp',
113 'gateway_id' => 'robokassa_sbp',
114 'option' => 'robokassa_payment_method_sbp_enabled',
115 'alias' => 'SBP',
116 'title' => 'Оплата через QR-код СБП',
117 ],
118 ];
119 }
120
121 /**
122 * Возвращает описание дополнительны�
123 способов оплаты Robokassa.
124 *
125 * @return array
126 */
127 function robokassa_get_optional_payment_methods_config()
128 {
129 return array_values(
130 array_filter(
131 robokassa_get_payment_methods_config(),
132 function (array $config) {
133 return !empty($config['option']);
134 }
135 )
136 );
137 }
138
139 /**
140 * Возвращает конфигурацию дополнительного метода по идентификатору шлюза.
141 *
142 * @param string $gateway_id
143 *
144 * @return array
145 */
146 function robokassa_get_optional_method_config_by_gateway($gateway_id)
147 {
148 foreach (robokassa_get_payment_methods_config() as $config) {
149 if (($config['gateway_id'] ?? '') === $gateway_id) {
150 return $config;
151 }
152 }
153
154 return [];
155 }
156
157 /**
158 * Проверяет, включён ли дополнительный способ оплаты в настройка�
159 .
160 *
161 * @param array $config
162 *
163 * @return bool
164 */
165 function robokassa_is_optional_method_enabled(array $config)
166 {
167 $option_name = $config['option'] ?? '';
168
169 if ($option_name === '') {
170 return false;
171 }
172
173 $option_value = get_option($option_name, 'yes');
174
175 return $option_value !== 'no';
176 }
177
178 /**
179 * Проверяет, доступен ли дополнительный способ оплаты для магазина.
180 *
181 * @param array $config
182 *
183 * @return bool
184 */
185 function robokassa_is_optional_method_available(array $config)
186 {
187 $alias = $config['alias'] ?? '';
188
189 if ($alias === '') {
190 return false;
191 }
192
193 if (function_exists('robokassa_is_currency_alias_available')) {
194 return robokassa_is_currency_alias_available($alias);
195 }
196
197 return true;
198 }
199
200 /**
201 * Определяет, следует ли регистрировать дополнительный способ оплаты.
202 *
203 * @param array $config
204 *
205 * @return bool
206 */
207 function robokassa_is_optional_method_active(array $config)
208 {
209 if (get_option('robokassa_country_code', 'RU') === 'KZ') {
210 return false;
211 }
212
213 return robokassa_is_optional_method_available($config) && robokassa_is_optional_method_enabled($config);
214 }
215
216 /**
217 * Возвращает список gateway id без создания экземпляров классов.
218 *
219 * @return array
220 */
221 function robokassa_get_gateway_ids()
222 {
223 $gateway_ids = [];
224
225 foreach (robokassa_get_payment_methods_config() as $config) {
226 if (empty($config['gateway_id'])) {
227 continue;
228 }
229
230 if (!empty($config['option']) && !robokassa_is_optional_method_active($config)) {
231 continue;
232 }
233
234 $gateway_ids[] = $config['gateway_id'];
235 }
236
237 return array_values(array_unique($gateway_ids));
238 }
239
240 function robokassa_payment_add_WC_WP_robokassa_class($methods = null) {
241 foreach (robokassa_get_payment_methods_config() as $config) {
242 if (empty($config['class'])) {
243 continue;
244 }
245
246 if (!empty($config['option']) && !robokassa_is_optional_method_active($config)) {
247 continue;
248 }
249
250 $methods[] = $config['class'];
251 }
252
253 return $methods;
254 }
255