PluginProbe
PayPlug for WooCommerce (Official) / 3.1.0
PayPlug for WooCommerce (Official) v3.1.0
3.1.0 3.0.0 2.18.0 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.1.0 1.10.0 1.10.1 1.2.1 1.2.10 1.2.11 1.2.2 1.2.3 1.2.4 1.2.5 All 102 releases
← All changes | src/Admin/Ajax.php +91 -78 2.18.0 → 3.1.0 View file →
@@ -36,157 +36,121 @@
36 36 public function __construct()
37 37 {
38 38 $permission = (current_user_can('editor') || current_user_can('administrator'));
39 39
40 - add_action('rest_api_init', function () use ($permission) {
40 + add_action('rest_api_init', function () use ($permission): void {
41 41 //Path to REST route and the callback function
42 42 register_rest_route('payplug_api', '/save/', [
43 43 'methods' => ['GET', 'POST'],
44 44 'callback' => [$this, 'save_action'],
45 - 'permission_callback' => function () use ($permission) {
46 - return $permission;
47 - },
45 + 'permission_callback' => fn () => $permission,
48 46 'show_in_index' => false,
49 47 ]);
50 48 register_rest_route('payplug_api', '/init/', [
51 49 'methods' => ['GET', 'POST'],
52 50 'callback' => [$this, 'payplug_init'],
53 - 'permission_callback' => function () use ($permission) {
54 - return $permission;
55 - },
51 + 'permission_callback' => fn () => $permission,
56 52 'show_in_index' => false,
57 53 ]);
58 54 register_rest_route('payplug_api', '/login/', [
59 55 'methods' => ['GET', 'POST'],
60 56 'callback' => [$this, 'login_action'],
61 - 'permission_callback' => function () use ($permission) {
62 - return $permission;
63 - },
57 + 'permission_callback' => fn () => $permission,
64 58 'show_in_index' => false,
65 59 ]);
66 60 register_rest_route('payplug_api', '/logout/', [
67 61 'methods' => ['GET', 'POST'],
68 62 'callback' => [$this, 'payplug_logout'],
69 - 'permission_callback' => function () use ($permission) {
70 - return $permission;
71 - },
63 + 'permission_callback' => fn () => $permission,
72 64 'show_in_index' => false,
73 65 ]);
74 66 register_rest_route('payplug_api', '/refresh_keys/', [
75 67 'methods' => ['GET', 'POST'],
76 68 'callback' => [$this, 'refresh_keys'],
77 - 'permission_callback' => function () use ($permission) {
78 - return $permission;
79 - },
69 + 'permission_callback' => fn () => $permission,
80 70 'show_in_index' => false,
81 71 ]);
82 72 register_rest_route('payplug_api', '/check_requirements/', [
83 73 'methods' => ['GET', 'POST'],
84 74 'callback' => [$this, 'payplug_check_requirements'],
85 - 'permission_callback' => function () use ($permission) {
86 - return $permission;
87 - },
75 + 'permission_callback' => fn () => $permission,
88 76 'show_in_index' => false,
89 77 ]);
90 78 register_rest_route('payplug_api', '/bancontact_permissions/', [
91 79 'methods' => ['GET', 'POST'],
92 80 'callback' => [$this, 'api_check_bancontact_permissions'],
93 - 'permission_callback' => function () use ($permission) {
94 - return $permission;
95 - },
81 + 'permission_callback' => fn () => $permission,
96 82 'show_in_index' => false,
97 83 ]);
98 84 register_rest_route('payplug_api', '/applepay_permissions/', [
99 85 'methods' => ['GET', 'POST'],
100 86 'callback' => [$this, 'api_check_applepay_permissions'],
101 - 'permission_callback' => function () use ($permission) {
102 - return $permission;
103 - },
87 + 'permission_callback' => fn () => $permission,
104 88 'show_in_index' => false,
105 89 ]);
106 90 register_rest_route('payplug_api', '/american_express_permissions/', [
107 91 'methods' => ['GET', 'POST'],
108 92 'callback' => [$this, 'api_check_american_express_permissions'],
109 - 'permission_callback' => function () use ($permission) {
110 - return $permission;
111 - },
93 + 'permission_callback' => fn () => $permission,
112 94 'show_in_index' => false,
113 95 ]);
114 96 register_rest_route('payplug_api', '/oney_permissions/', [
115 97 'methods' => ['GET', 'POST'],
116 98 'callback' => [$this, 'api_check_oney_permissions'],
117 - 'permission_callback' => function () use ($permission) {
118 - return $permission;
119 - },
99 + 'permission_callback' => fn () => $permission,
120 100 'show_in_index' => false,
121 101 ]);
122 102 register_rest_route('payplug_api', '/one_click_permissions/', [
123 103 'methods' => ['GET', 'POST'],
124 104 'callback' => [$this, 'api_check_one_click_permission'],
125 - 'permission_callback' => function () use ($permission) {
126 - return $permission;
127 - },
105 + 'permission_callback' => fn () => $permission,
128 106 'show_in_index' => false,
129 107 ]);
130 108 register_rest_route('payplug_api', '/satispay_permissions/', [
131 109 'methods' => ['GET', 'POST'],
132 110 'callback' => [$this, 'api_check_satispay_permissions'],
133 - 'permission_callback' => function () use ($permission) {
134 - return $permission;
135 - },
111 + 'permission_callback' => fn () => $permission,
136 112 'show_in_index' => false,
137 113 ]);
138 114 register_rest_route('payplug_api', '/mybank_permissions/', [
139 115 'methods' => ['GET', 'POST'],
140 116 'callback' => [$this, 'api_check_mybank_permissions'],
141 - 'permission_callback' => function () use ($permission) {
142 - return $permission;
143 - },
117 + 'permission_callback' => fn () => $permission,
144 118 'show_in_index' => false,
145 119 ]);
146 120 register_rest_route('payplug_api', '/ideal_permissions/', [
147 121 'methods' => ['GET', 'POST'],
148 122 'callback' => [$this, 'api_check_ideal_permissions'],
149 - 'permission_callback' => function () use ($permission) {
150 - return $permission;
151 - },
123 + 'permission_callback' => fn () => $permission,
152 124 'show_in_index' => false,
153 125 ]);
154 126 register_rest_route('payplug_api', '/integrated_permissions/', [
155 127 'methods' => ['GET', 'POST'],
156 128 'callback' => [$this, 'api_check_integrated_payment'],
157 - 'permission_callback' => function () use ($permission) {
158 - return $permission;
159 - },
129 + 'permission_callback' => fn () => $permission,
160 130 ]);
161 131 register_rest_route('payplug_api', '/wero_permissions/', [
162 132 'methods' => 'POST',
163 133 'callback' => [$this, 'api_check_wero_permissions'],
164 - 'permission_callback' => function () use ($permission) {
165 - return $permission;
166 - },
134 + 'permission_callback' => fn () => $permission,
167 135 'show_in_index' => false,
168 136 ]);
169 137 register_rest_route('payplug_api', '/bizum_permissions/', [
170 138 'methods' => 'POST',
171 139 'callback' => [$this, 'api_check_bizum_permissions'],
172 - 'permission_callback' => function () use ($permission) {
173 - return $permission;
174 - },
140 + 'permission_callback' => fn () => $permission,
175 141 'show_in_index' => false,
176 142 ]);
177 143 register_rest_route('payplug_api', '/scalapay_permissions/', [
178 144 'methods' => 'POST',
179 145 'callback' => [$this, 'api_check_scalapay_permissions'],
180 - 'permission_callback' => function () use ($permission) {
181 - return $permission;
182 - },
146 + 'permission_callback' => fn () => $permission,
183 147 'show_in_index' => false,
184 148 ]);
185 149 });
186 150 }
187 151
188 - public function refresh_keys(WP_REST_Request $request)
152 + public function refresh_keys(WP_REST_Request $request): void
189 153 {
190 154 $data = $request->get_params();
191 155 $email = sanitize_text_field(wp_unslash($data['payplug_email']));
192 156 $password = base64_decode(wp_unslash($data['payplug_password']));
@@ -252,14 +216,14 @@
252 216 ]
253 217 );
254 218 }
255 219
256 - public function api_check_one_click_permission(WP_REST_Request $request)
220 + public function api_check_one_click_permission(WP_REST_Request $request): void
257 221 {
258 222 wp_send_json_success(true);
259 223 }
260 224
261 - public function api_check_bancontact_permissions(WP_REST_Request $request)
225 + public function api_check_bancontact_permissions(WP_REST_Request $request): void
262 226 {
263 227 $account = $this->generic_get_account($request, Bancontact::ENABLE_ON_TEST_MODE);
264 228
265 229 if (isset($account['httpResponse']['payment_methods']['bancontact']['enabled']) && $account['httpResponse']['payment_methods']['bancontact']['enabled']) {
@@ -272,9 +236,9 @@
272 236 'close' => __('payplug_ok', 'payplug'),
273 237 ]);
274 238 }
275 239
276 - public function api_check_applepay_permissions(WP_REST_Request $request)
240 + public function api_check_applepay_permissions(WP_REST_Request $request): void
277 241 {
278 242 $account = $this->generic_get_account($request, ApplePay::ENABLE_ON_TEST_MODE);
279 243
280 244 if ($account['httpResponse']['payment_methods']['apple_pay']['enabled']) {
@@ -289,9 +253,9 @@
289 253 'close' => __('payplug_ok', 'payplug'),
290 254 ]);
291 255 }
292 256
293 - public function api_check_american_express_permissions(WP_REST_Request $request)
257 + public function api_check_american_express_permissions(WP_REST_Request $request): void
294 258 {
295 259 $account = $this->generic_get_account($request, AmericanExpress::ENABLE_ON_TEST_MODE);
296 260
297 261 if (isset($account['httpResponse']['payment_methods']['american_express']['enabled']) && $account['httpResponse']['payment_methods']['american_express']['enabled']) {
@@ -304,9 +268,9 @@
304 268 'close' => __('payplug_ok', 'payplug'),
305 269 ]);
306 270 }
307 271
308 - public function api_check_oney_permissions(WP_REST_Request $request)
272 + public function api_check_oney_permissions(WP_REST_Request $request): void
309 273 {
310 274 $account = $this->generic_get_account($request, PayplugGatewayOney3x::ENABLE_ON_TEST_MODE);
311 275
312 276 if (isset($account['httpResponse']['permissions']['can_use_oney']) && $account['httpResponse']['permissions']['can_use_oney']) {
@@ -329,9 +293,9 @@
329 293
330 294 wp_send_json_success(true);
331 295 }
332 296
333 - public function api_check_satispay_permissions(WP_REST_Request $request)
297 + public function api_check_satispay_permissions(WP_REST_Request $request): void
334 298 {
335 299 $account = $this->generic_get_account($request, Satispay::ENABLE_ON_TEST_MODE);
336 300
337 301 $enabled = isset($account['httpResponse']['payment_methods']['satispay']['enabled']) ? $account['httpResponse']['payment_methods']['satispay']['enabled'] : false;
@@ -345,9 +309,9 @@
345 309
346 310 wp_send_json_success($enabled);
347 311 }
348 312
349 - public function api_check_mybank_permissions(WP_REST_Request $request)
313 + public function api_check_mybank_permissions(WP_REST_Request $request): void
350 314 {
351 315 $account = $this->generic_get_account($request, Mybank::ENABLE_ON_TEST_MODE);
352 316
353 317 $enabled = isset($account['httpResponse']['payment_methods']['mybank']['enabled']) ? $account['httpResponse']['payment_methods']['mybank']['enabled'] : false;
@@ -361,9 +325,9 @@
361 325
362 326 wp_send_json_success($enabled);
363 327 }
364 328
365 - public function api_check_ideal_permissions(WP_REST_Request $request)
329 + public function api_check_ideal_permissions(WP_REST_Request $request): void
366 330 {
367 331 $account = $this->generic_get_account($request, Ideal::ENABLE_ON_TEST_MODE);
368 332
369 333 $enabled = isset($account['httpResponse']['payment_methods']['ideal']['enabled']) ? $account['httpResponse']['payment_methods']['ideal']['enabled'] : false;
@@ -377,9 +341,9 @@
377 341
378 342 wp_send_json_success($enabled);
379 343 }
380 344
381 - public function api_check_wero_permissions(WP_REST_Request $request)
345 + public function api_check_wero_permissions(WP_REST_Request $request): void
382 346 {
383 347 $account = $this->generic_get_account($request, Wero::ENABLE_ON_TEST_MODE);
384 348
385 349 $enabled = isset($account['httpResponse']['payment_methods']['wero']['enabled']) ? $account['httpResponse']['payment_methods']['wero']['enabled'] : false;
@@ -393,9 +357,9 @@
393 357
394 358 wp_send_json_success($enabled);
395 359 }
396 360
397 - public function api_check_bizum_permissions(WP_REST_Request $request)
361 + public function api_check_bizum_permissions(WP_REST_Request $request): void
398 362 {
399 363 $account = $this->generic_get_account($request, Bizum::ENABLE_ON_TEST_MODE);
400 364
401 365 $enabled = isset($account['httpResponse']['payment_methods']['bizum']['enabled']) ? $account['httpResponse']['payment_methods']['bizum']['enabled'] : false;
@@ -409,9 +373,9 @@
409 373
410 374 wp_send_json_success($enabled);
411 375 }
412 376
413 - public function api_check_scalapay_permissions(WP_REST_Request $request)
377 + public function api_check_scalapay_permissions(WP_REST_Request $request): void
414 378 {
415 379 $account = $this->generic_get_account($request, Scalapay::ENABLE_ON_TEST_MODE);
416 380
417 381 $enabled = isset($account['httpResponse']['payment_methods']['scalapay']['enabled']) ? $account['httpResponse']['payment_methods']['scalapay']['enabled'] : false;
@@ -492,9 +456,9 @@
492 456 * Response Json Error WP Format for wrong credentials
493 457 *
494 458 * @return void
495 459 */
496 - private function login_wrong_credentials_error()
460 + private function login_wrong_credentials_error(): void
497 461 {
498 462 wp_send_json_error(['message' => __('payplug_error_wrong_credentials', 'payplug')]);
499 463 }
500 464
@@ -516,9 +480,9 @@
516 480 ];
517 481
518 482 return wp_send_json_success([
519 483 'settings' => $wp,
520 - ] + (new Vue)->init());
484 + ] + (new Vue())->init());
521 485 }
522 486
523 487 /**
524 488 * @return bool|null
@@ -533,15 +497,15 @@
533 497
534 498 http_response_code(200);
535 499 wp_send_json_success([
536 500 'message' => __('Successfully logged out.', 'payplug'),
537 - 'status' => (new Vue)->payplug_section_status(),
501 + 'status' => (new Vue())->payplug_section_status(),
538 502 'settings' => $wp,
539 - 'subscribe' => (new Vue)->payplug_section_subscribe(), // When Logging out the Status Block needs to be updated
503 + 'subscribe' => (new Vue())->payplug_section_subscribe(), // When Logging out the Status Block needs to be updated
540 504 ]);
541 505 }
542 506
543 - private function accountIsNotValid()
507 + private function accountIsNotValid(): void
544 508 {
545 509 $live_key = PayplugWoocommerceHelper::get_live_key();
546 510 if (empty($live_key)) {
547 511 wp_send_json_error([
@@ -551,9 +515,9 @@
551 515 ]);
552 516 }
553 517 }
554 518
555 - private function optionUnnavailableInTestMode()
519 + private function optionUnnavailableInTestMode(): void
556 520 {
557 521 wp_send_json_error([
558 522 'title' => __('payplug_enable_feature', 'payplug'),
559 523 'msg' => __('payplug_unavailable_testmode_description', 'payplug'),
@@ -559,12 +523,12 @@
559 523 'msg' => __('payplug_unavailable_testmode_description', 'payplug'),
560 524 ]);
561 525 }
562 526
563 - public function payplug_check_requirements()
527 + public function payplug_check_requirements(): void
564 528 {
565 529 wp_send_json_success([
566 - 'status' => (new Vue)->payplug_section_status(),
530 + 'status' => (new Vue())->payplug_section_status(),
567 531 ]);
568 532 }
569 533
570 534 public function api_check_integrated_payment(WP_REST_Request $request)
@@ -584,9 +548,9 @@
584 548
585 549 return true;
586 550 }
587 551
588 - public function login_action()
552 + public function login_action(): void
589 553 {
590 554 $data = json_decode(file_get_contents('php://input'), true);
591 555 $email = sanitize_email($data['payplug_email']);
592 556 $password = base64_decode(wp_unslash($data['payplug_password']));
@@ -595,8 +559,11 @@
595 559 // use AccountGateway
596 560 try {
597 561 $account_gateway = $this->get_gateway('account');
598 562 $register = $account_gateway->register((string) $email, (string) $password);
563 + if (!empty($register['multiple_users'])) {
564 + wp_send_json_error(['message' => __('payplug_error_multiple_users', 'payplug')]);
565 + }
599 566 if (empty($register)) {
600 567 $this->login_wrong_credentials_error();
601 568 }
602 569
@@ -609,9 +576,9 @@
609 576 'WP' => [
610 577 '_wpnonce' => $wp_nonce,
611 578 ],
612 579 ];
613 - $vue = (new Vue)->init();
580 + $vue = (new Vue())->init();
614 581
615 582 wp_send_json_success(['settings' => $user + $wp] + $vue);
616 583 } catch (HttpException $e) {
617 584 $this->login_wrong_credentials_error();
@@ -617,9 +584,9 @@
617 584 $this->login_wrong_credentials_error();
618 585 }
619 586 }
620 587
621 - public function save_action(WP_REST_Request $request)
588 + public function save_action(WP_REST_Request $request): void
622 589 {
623 590 if (!$this->get_gateway('account')->is_logged()) {
624 591 http_response_code(403);
625 592 wp_send_json_error('You are not logged in !');
@@ -686,8 +653,54 @@
686 653 'min' => (int) $data['oney_min_amounts'] * 100,
687 654 'max' => (int) $data['oney_max_amounts'] * 100,
688 655 ]);
689 656 $options['payment_methods']['configuration']['oney']['with_fees'] = 'with_fees' == (string) $data['payplug_oney'];
657 +
658 + // scalapay payment - the thresholds widget isn't necessarily rendered (a stale admin
659 + // JS bundle right after a deploy, for instance). Its absence must not reach
660 + // Validator::scalapay_thresholds(), which would read the missing values as 0, fail
661 + // the "below the account minimum" check and abort the whole request via
662 + // wp_send_json_error() - discarding every other setting in this save, since
663 + // update_options() only runs at the end of this method.
664 + if (array_key_exists('scalapay_min_amounts', $data) && array_key_exists('scalapay_max_amounts', $data)) {
665 + [$scalapay_authorized_min, $scalapay_authorized_max] = Scalapay::authorized_bounds(
666 + $options['payment_methods']['configuration']['scalapay'] ?? [],
667 + $options['payment_methods']['permissions']['scalapay']['amounts'] ?? '{}'
668 + );
669 + // round() before the cast: the submitted values are euros, so a bare (int) cast
670 + // would bind tighter than the * 100 and truncate the cents (49.99 -> 4900).
671 + $scalapay_thresholds = Validator::scalapay_thresholds(
672 + (int) round((float) $data['scalapay_min_amounts'] * 100),
673 + (int) round((float) $data['scalapay_max_amounts'] * 100),
674 + $scalapay_authorized_min,
675 + $scalapay_authorized_max
676 + );
677 + $options['payment_methods']['configuration']['scalapay']['custom_amounts'] = json_encode($scalapay_thresholds);
678 + }
679 +
680 + // Force-disable methods unavailable in test mode: submitted 'active' flags are
681 + // trusted as-is, so one enabled while in live mode stays active after just
682 + // switching to test unless we re-check it here.
683 + if (!$options['mode']) {
684 + $enable_on_test_mode = [
685 + 'oney' => PayplugGatewayOney3x::ENABLE_ON_TEST_MODE,
686 + 'apple_pay' => ApplePay::ENABLE_ON_TEST_MODE,
687 + 'payplug' => PayplugGateway::ENABLE_ON_TEST_MODE,
688 + 'american_express' => AmericanExpress::ENABLE_ON_TEST_MODE,
689 + 'bancontact' => Bancontact::ENABLE_ON_TEST_MODE,
690 + 'satispay' => Satispay::ENABLE_ON_TEST_MODE,
691 + 'mybank' => Mybank::ENABLE_ON_TEST_MODE,
692 + 'ideal' => Ideal::ENABLE_ON_TEST_MODE,
693 + 'wero' => Wero::ENABLE_ON_TEST_MODE,
694 + 'bizum' => Bizum::ENABLE_ON_TEST_MODE,
695 + 'scalapay' => Scalapay::ENABLE_ON_TEST_MODE,
696 + ];
697 + foreach ($enable_on_test_mode as $name => $allowed) {
698 + if (!$allowed && isset($options['payment_methods']['configuration'][$name]['active'])) {
699 + $options['payment_methods']['configuration'][$name]['active'] = false;
700 + }
701 + }
702 + }
690 703
691 704 //
692 705 $update = $payplug->get_service('configuration')->update_options($options);
693 706