PluginProbe
PayPlug for WooCommerce (Official) / 2.18.0
PayPlug for WooCommerce (Official) v2.18.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 1.2.6 All 101 releases
payplug / src / PayplugWoocommerce.php

PayplugWoocommerce.php in PayPlug for WooCommerce (Official) 2.18.0, at src/PayplugWoocommerce.php

267 lines 8.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Payplug\PayplugWoocommerce;
4
5 // Exit if accessed directly
6 if (!defined('ABSPATH')) {
7 exit;
8 }
9
10 use Payplug\PayplugWoocommerce\Admin\Ajax;
11 use Payplug\PayplugWoocommerce\Admin\Metabox;
12 use Payplug\PayplugWoocommerce\Admin\Notices;
13 use Payplug\PayplugWoocommerce\Admin\SetupCallback;
14 use Payplug\PayplugWoocommerce\Admin\WoocommerceActions;
15 use Payplug\PayplugWoocommerce\Front\PayplugOney\Requests\OneyAnimation;
16 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugAmex;
17 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugApplePay;
18 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugBancontact;
19 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugBizum;
20 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugCreditCard;
21 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugIdeal;
22 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugMybank;
23 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugOney3x;
24 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugOney3xWithoutFees;
25 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugOney4x;
26 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugOney4xWithoutFees;
27 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugSatispay;
28 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugScalapay;
29 use Payplug\PayplugWoocommerce\Gateway\Blocks\PayplugWero;
30 use Payplug\PayplugWoocommerce\Traits\GatewayGetter;
31 use Payplug\PayplugWoocommerce\Traits\ServiceGetter;
32
33 class PayplugWoocommerce
34 {
35 use ServiceGetter;
36 use GatewayGetter;
37
38 /**
39 * @var PayplugWoocommerce
40 */
41 private static $instance;
42
43 /**
44 * PayPlug admin notices
45 *
46 * @var Notices
47 */
48 public $notices;
49
50 /**
51 * PayPlug metabox
52 *
53 * @var Metabox
54 */
55 public $metabox;
56
57 /**
58 * Custom woocommerce actions
59 *
60 * @var WoocommerceActions
61 */
62 public $actions;
63
64 /**
65 * @var PayplugWoocommerceRequest
66 */
67 public $requests;
68
69 /**
70 * Ajax actions handler
71 *
72 * @var Ajax
73 */
74 public $ajax;
75
76 /**
77 * PayPlug Setup authentifications.
78 *
79 * @var SetupCallback
80 */
81 public $setup_callback;
82
83 /**
84 * Get the singleton instance.
85 *
86 * @return PayplugWoocommerce
87 */
88 public static function get_instance()
89 {
90 if (is_null(self::$instance)) {
91 self::$instance = new static();
92 }
93
94 return self::$instance;
95 }
96
97 /**
98 * Singleton instance can't be cloned.
99 */
100 private function __clone()
101 {
102 }
103
104 /**
105 * Singleton instance can't be serialized.
106 */
107 public function __wakeup()
108 {
109 }
110
111 /**
112 * PayplugWoocommerce constructor.
113 */
114 private function __construct()
115 {
116 // Bail early if WooCommerce is not activated
117 if (!defined('WC_VERSION')) {
118 add_action('admin_notices', function () {
119 ?>
120 <div id="message" class="notice notice-error">
121 <p><?php _e('PayPlug requires an active version of WooCommerce', 'payplug'); ?></p>
122 </div>
123 <?php
124 });
125
126 return;
127 }
128
129 $this->check_upgrade();
130
131 if (PayplugWoocommerceHelper::is_pre_30()) {
132 require_once PAYPLUG_GATEWAY_PLUGIN_DIR . '/woocommerce-compat.php';
133 }
134
135 $this->notices = new Notices();
136 $this->metabox = new Metabox();
137 $this->actions = new WoocommerceActions();
138 $this->requests = new PayplugWoocommerceRequest();
139 new Front\ApplePay();
140 $this->ajax = new Ajax();
141
142 $this->setup_callback = new SetupCallback();
143
144 if (PayplugWoocommerceHelper::show_oney_popup()) {
145 $this->animationHandlers();
146 }
147
148 add_action('woocommerce_payment_gateways', [$this, 'register_payplug_gateway']);
149
150 // Registers WooCommerce Blocks integration.
151 add_action('woocommerce_blocks_loaded', [$this, 'woocommerce_gateways_block_support']);
152
153 add_filter('plugin_action_links_' . PAYPLUG_GATEWAY_PLUGIN_BASENAME, [$this, 'plugin_action_links']);
154 }
155
156 /**
157 * Register PayPlug gateway.
158 *
159 * @param $methods
160 *
161 * @return array
162 */
163 public function register_payplug_gateway($methods)
164 {
165 $methods[] = __NAMESPACE__ . '\\Gateway\\PayplugCreditCard';
166 $methods[] = __NAMESPACE__ . '\\Gateway\\PayplugGatewayOney3x';
167 $methods[] = __NAMESPACE__ . '\\Gateway\\PayplugGatewayOney4x';
168 $methods[] = __NAMESPACE__ . '\\Gateway\\PayplugGatewayOney3xWithoutFees';
169 $methods[] = __NAMESPACE__ . '\\Gateway\\PayplugGatewayOney4xWithoutFees';
170 $methods[] = __NAMESPACE__ . '\\Gateway\\Bancontact';
171 $methods[] = __NAMESPACE__ . '\\Gateway\\AmericanExpress';
172 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Mybank';
173 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Ideal';
174 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Satispay';
175 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Wero';
176 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Bizum';
177 $methods[] = __NAMESPACE__ . '\\Gateway\\PPRO\\Scalapay';
178
179 $methods[] = __NAMESPACE__ . '\\Controller\\ApplePay';
180
181 return $methods;
182 }
183
184 /**
185 * Add additional action links.
186 *
187 * @param array $links
188 *
189 * @return array
190 */
191 public function plugin_action_links($links = [])
192 {
193 $plugin_links = [
194 '<a href="' . esc_url(PayplugWoocommerceHelper::get_setting_link()) . '">' . esc_html__('Settings', 'payplug') . '</a>',
195 ];
196
197 return array_merge($plugin_links, $links);
198 }
199
200 public function animationHandlers()
201 {
202 $options = get_option('woocommerce_payplug_settings', []);
203
204 //if live and don't have country setted on the option
205 if (!isset($options['company_iso'])) {
206 $options['company_iso'] = PayplugWoocommerceHelper::UpdateCountryOption($options);
207 }
208
209 //failsafe
210 if (empty($options['company_iso']) || !isset($options['payment_methods']['configuration']['oney']['with_fees'])) {
211 return;
212 }
213
214 if (!class_exists('\\Payplug\\PayplugWoocommerce\\Front\\PayplugOney\\Country\\Oney' . $options['company_iso'])) {
215 return;
216 }
217
218 $oney_type = $options['payment_methods']['configuration']['oney']['with_fees']
219 ? 'with_fees'
220 : 'without_fees';
221
222 switch ($oney_type) {
223 case 'without_fees' :
224 $class = 'PayplugGatewayOney3xWithoutFees';
225 break;
226 default:
227 $class = 'PayplugGatewayOney3x';
228 break;
229 }
230
231 new OneyAnimation($oney_type, $class);
232 }
233
234 /**
235 * Registers WooCommerce Blocks integration.
236 */
237 public function woocommerce_gateways_block_support()
238 {
239 if (class_exists('Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType')) {
240 add_action(
241 'woocommerce_blocks_payment_method_type_registration',
242 function (\Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry $payment_method_registry) {
243 $payment_method_registry->register(new PayplugCreditCard());
244 $payment_method_registry->register(new PayplugBancontact());
245 $payment_method_registry->register(new PayplugSatispay());
246 $payment_method_registry->register(new PayplugAmex());
247 $payment_method_registry->register(new PayplugIdeal());
248 $payment_method_registry->register(new PayplugMybank());
249 $payment_method_registry->register(new PayplugWero());
250 $payment_method_registry->register(new PayplugBizum());
251 $payment_method_registry->register(new PayplugScalapay());
252 $payment_method_registry->register(new PayplugApplePay());
253 $payment_method_registry->register(new PayplugOney3x());
254 $payment_method_registry->register(new PayplugOney4x());
255 $payment_method_registry->register(new PayplugOney3xWithoutFees());
256 $payment_method_registry->register(new PayplugOney4xWithoutFees());
257 }
258 );
259 }
260 }
261
262 private function check_upgrade()
263 {
264 return $this->get_service('upgrade')->run_upgrade();
265 }
266 }
267