Completed
Push — master ( 13f1d8...ba1e7e )
by Roy
01:47
created
includes/payment-methods/class-wc-gateway-stripe-sepa.php 1 patch
Spacing   +95 added lines, -95 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) {
2
+if ( ! defined('ABSPATH')) {
3 3
 	exit;
4 4
 }
5 5
 
@@ -72,9 +72,9 @@  discard block
 block discarded – undo
72 72
 	public function __construct() {
73 73
 		$this->retry_interval       = 1;
74 74
 		$this->id                   = 'stripe_sepa';
75
-		$this->method_title         = __( 'Stripe SEPA Direct Debit', 'woocommerce-gateway-stripe' );
75
+		$this->method_title         = __('Stripe SEPA Direct Debit', 'woocommerce-gateway-stripe');
76 76
 		/* translators: link */
77
-		$this->method_description   = sprintf( __( 'All other general Stripe settings can be adjusted <a href="%s">here</a>.', 'woocommerce-gateway-stripe' ), admin_url( 'admin.php?page=wc-settings&tab=checkout&section=stripe' ) );
77
+		$this->method_description   = sprintf(__('All other general Stripe settings can be adjusted <a href="%s">here</a>.', 'woocommerce-gateway-stripe'), admin_url('admin.php?page=wc-settings&tab=checkout&section=stripe'));
78 78
 		$this->has_fields           = true;
79 79
 		$this->supports             = array(
80 80
 			'products',
@@ -100,28 +100,28 @@  discard block
 block discarded – undo
100 100
 		// Load the settings.
101 101
 		$this->init_settings();
102 102
 
103
-		$main_settings              = get_option( 'woocommerce_stripe_settings' );
104
-		$this->title                = $this->get_option( 'title' );
105
-		$this->description          = $this->get_option( 'description' );
106
-		$this->enabled              = $this->get_option( 'enabled' );
107
-		$this->testmode             = ( ! empty( $main_settings['testmode'] ) && 'yes' === $main_settings['testmode'] ) ? true : false;
108
-		$this->saved_cards          = ( ! empty( $main_settings['saved_cards'] ) && 'yes' === $main_settings['saved_cards'] ) ? true : false;
109
-		$this->publishable_key      = ! empty( $main_settings['publishable_key'] ) ? $main_settings['publishable_key'] : '';
110
-		$this->secret_key           = ! empty( $main_settings['secret_key'] ) ? $main_settings['secret_key'] : '';
111
-		$this->statement_descriptor = ! empty( $main_settings['statement_descriptor'] ) ? $main_settings['statement_descriptor'] : '';
112
-
113
-		if ( $this->testmode ) {
114
-			$this->publishable_key = ! empty( $main_settings['test_publishable_key'] ) ? $main_settings['test_publishable_key'] : '';
115
-			$this->secret_key      = ! empty( $main_settings['test_secret_key'] ) ? $main_settings['test_secret_key'] : '';
103
+		$main_settings              = get_option('woocommerce_stripe_settings');
104
+		$this->title                = $this->get_option('title');
105
+		$this->description          = $this->get_option('description');
106
+		$this->enabled              = $this->get_option('enabled');
107
+		$this->testmode             = ( ! empty($main_settings['testmode']) && 'yes' === $main_settings['testmode']) ? true : false;
108
+		$this->saved_cards          = ( ! empty($main_settings['saved_cards']) && 'yes' === $main_settings['saved_cards']) ? true : false;
109
+		$this->publishable_key      = ! empty($main_settings['publishable_key']) ? $main_settings['publishable_key'] : '';
110
+		$this->secret_key           = ! empty($main_settings['secret_key']) ? $main_settings['secret_key'] : '';
111
+		$this->statement_descriptor = ! empty($main_settings['statement_descriptor']) ? $main_settings['statement_descriptor'] : '';
112
+
113
+		if ($this->testmode) {
114
+			$this->publishable_key = ! empty($main_settings['test_publishable_key']) ? $main_settings['test_publishable_key'] : '';
115
+			$this->secret_key      = ! empty($main_settings['test_secret_key']) ? $main_settings['test_secret_key'] : '';
116 116
 		}
117 117
 
118
-		add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
119
-		add_action( 'wp_enqueue_scripts', array( $this, 'payment_scripts' ) );
118
+		add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
119
+		add_action('wp_enqueue_scripts', array($this, 'payment_scripts'));
120 120
 
121
-		if ( WC_Stripe_Helper::is_pre_orders_exists() ) {
121
+		if (WC_Stripe_Helper::is_pre_orders_exists()) {
122 122
 			$this->pre_orders = new WC_Stripe_Pre_Orders_Compat();
123 123
 
124
-			add_action( 'wc_pre_orders_process_pre_order_completion_payment_' . $this->id, array( $this->pre_orders, 'process_pre_order_release_payment' ) );
124
+			add_action('wc_pre_orders_process_pre_order_completion_payment_' . $this->id, array($this->pre_orders, 'process_pre_order_release_payment'));
125 125
 		}
126 126
 	}
127 127
 
@@ -133,9 +133,9 @@  discard block
 block discarded – undo
133 133
 	 * @return array
134 134
 	 */
135 135
 	public function get_supported_currency() {
136
-		return apply_filters( 'wc_stripe_sepa_supported_currencies', array(
136
+		return apply_filters('wc_stripe_sepa_supported_currencies', array(
137 137
 			'EUR',
138
-		) );
138
+		));
139 139
 	}
140 140
 
141 141
 	/**
@@ -146,11 +146,11 @@  discard block
 block discarded – undo
146 146
 	 * @return bool
147 147
 	 */
148 148
 	public function is_available() {
149
-		if ( ! in_array( get_woocommerce_currency(), $this->get_supported_currency() ) ) {
149
+		if ( ! in_array(get_woocommerce_currency(), $this->get_supported_currency())) {
150 150
 			return false;
151 151
 		}
152 152
 
153
-		if ( is_add_payment_method_page() && ! $this->saved_cards ) {
153
+		if (is_add_payment_method_page() && ! $this->saved_cards) {
154 154
 			return false;
155 155
 		}
156 156
 
@@ -171,7 +171,7 @@  discard block
 block discarded – undo
171 171
 
172 172
 		$icons_str .= $icons['sepa'];
173 173
 
174
-		return apply_filters( 'woocommerce_gateway_icon', $icons_str, $this->id );
174
+		return apply_filters('woocommerce_gateway_icon', $icons_str, $this->id);
175 175
 	}
176 176
 
177 177
 	/**
@@ -182,19 +182,19 @@  discard block
 block discarded – undo
182 182
 	 * @access public
183 183
 	 */
184 184
 	public function payment_scripts() {
185
-		if ( ! is_cart() && ! is_checkout() && ! isset( $_GET['pay_for_order'] ) && ! is_add_payment_method_page() ) {
185
+		if ( ! is_cart() && ! is_checkout() && ! isset($_GET['pay_for_order']) && ! is_add_payment_method_page()) {
186 186
 			return;
187 187
 		}
188 188
 
189
-		wp_enqueue_style( 'stripe_styles' );
190
-		wp_enqueue_script( 'woocommerce_stripe' );
189
+		wp_enqueue_style('stripe_styles');
190
+		wp_enqueue_script('woocommerce_stripe');
191 191
 	}
192 192
 
193 193
 	/**
194 194
 	 * Initialize Gateway Settings Form Fields.
195 195
 	 */
196 196
 	public function init_form_fields() {
197
-		$this->form_fields = require( WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-sepa-settings.php' );
197
+		$this->form_fields = require(WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-sepa-settings.php');
198 198
 	}
199 199
 
200 200
 	/**
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
 	 */
207 207
 	public function mandate_display() {
208 208
 		/* translators: statement descriptor */
209
-		printf( __( 'By providing your IBAN and confirming this payment, you are authorizing %s and Stripe, our payment service provider, to send instructions to your bank to debit your account and your bank to debit your account in accordance with those instructions. You are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited.', 'woocommerce-gateway-stripe' ), WC_Stripe_Helper::clean_statement_descriptor( $this->statement_descriptor ) );
209
+		printf(__('By providing your IBAN and confirming this payment, you are authorizing %s and Stripe, our payment service provider, to send instructions to your bank to debit your account and your bank to debit your account in accordance with those instructions. You are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited.', 'woocommerce-gateway-stripe'), WC_Stripe_Helper::clean_statement_descriptor($this->statement_descriptor));
210 210
 	}
211 211
 
212 212
 	/**
@@ -217,12 +217,12 @@  discard block
 block discarded – undo
217 217
 	 */
218 218
 	public function form() {
219 219
 		?>
220
-		<fieldset id="wc-<?php echo esc_attr( $this->id ); ?>-form" class="wc-payment-form">
221
-			<?php do_action( 'woocommerce_credit_card_form_start', $this->id ); ?>
220
+		<fieldset id="wc-<?php echo esc_attr($this->id); ?>-form" class="wc-payment-form">
221
+			<?php do_action('woocommerce_credit_card_form_start', $this->id); ?>
222 222
 			<p class="wc-stripe-sepa-mandate" style="margin-bottom:40px;"><?php $this->mandate_display(); ?></p>
223 223
 			<p class="form-row form-row-wide">
224 224
 				<label for="stripe-iban-element">
225
-					<?php esc_html_e( 'IBAN.', 'woocommerce-gateway-stripe' ); ?> <span class="required">*</span>
225
+					<?php esc_html_e('IBAN.', 'woocommerce-gateway-stripe'); ?> <span class="required">*</span>
226 226
 				</label>
227 227
 				<div id="stripe-iban-element" class="wc-stripe-iban-element-field">
228 228
 					<!-- A Stripe Element will be inserted here. -->
@@ -232,7 +232,7 @@  discard block
 block discarded – undo
232 232
 			<!-- Used to display form errors -->
233 233
 			<div class="stripe-source-errors" role="alert"></div>
234 234
 			<br />
235
-			<?php do_action( 'woocommerce_credit_card_form_end', $this->id ); ?>
235
+			<?php do_action('woocommerce_credit_card_form_end', $this->id); ?>
236 236
 			<div class="clear"></div>
237 237
 		</fieldset>
238 238
 		<?php
@@ -243,40 +243,40 @@  discard block
 block discarded – undo
243 243
 	 */
244 244
 	public function payment_fields() {
245 245
 		$total                = WC()->cart->total;
246
-		$display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards;
247
-		$description          = ! empty( $this->get_description() ) ? $this->get_description() : '';
246
+		$display_tokenization = $this->supports('tokenization') && is_checkout() && $this->saved_cards;
247
+		$description          = ! empty($this->get_description()) ? $this->get_description() : '';
248 248
 
249 249
 		// If paying from order, we need to get total from order not cart.
250
-		if ( isset( $_GET['pay_for_order'] ) && ! empty( $_GET['key'] ) ) {
251
-			$order = wc_get_order( wc_get_order_id_by_order_key( wc_clean( $_GET['key'] ) ) );
250
+		if (isset($_GET['pay_for_order']) && ! empty($_GET['key'])) {
251
+			$order = wc_get_order(wc_get_order_id_by_order_key(wc_clean($_GET['key'])));
252 252
 			$total = $order->get_total();
253 253
 		}
254 254
 
255
-		if ( is_add_payment_method_page() ) {
255
+		if (is_add_payment_method_page()) {
256 256
 			$total = '';
257 257
 		}
258 258
 
259 259
 		echo '<div
260 260
 			id="stripe-sepa_debit-payment-data"
261
-			data-amount="' . esc_attr( WC_Stripe_Helper::get_stripe_amount( $total ) ) . '"
262
-			data-currency="' . esc_attr( strtolower( get_woocommerce_currency() ) ) . '">';
261
+			data-amount="' . esc_attr(WC_Stripe_Helper::get_stripe_amount($total)) . '"
262
+			data-currency="' . esc_attr(strtolower(get_woocommerce_currency())) . '">';
263 263
 
264
-		if ( $this->testmode ) {
265
-			$description .= ' ' . __( 'TEST MODE ENABLED. In test mode, you can use IBAN number DE89370400440532013000.', 'woocommerce-gateway-stripe' );
264
+		if ($this->testmode) {
265
+			$description .= ' ' . __('TEST MODE ENABLED. In test mode, you can use IBAN number DE89370400440532013000.', 'woocommerce-gateway-stripe');
266 266
 		}
267 267
 
268
-		$description = trim( $description );
268
+		$description = trim($description);
269 269
 
270
-		echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $description ) ), $this->id );
270
+		echo apply_filters('wc_stripe_description', wpautop(wp_kses_post($description)), $this->id);
271 271
 
272
-		if ( $display_tokenization ) {
272
+		if ($display_tokenization) {
273 273
 			$this->tokenization_script();
274 274
 			$this->saved_payment_methods();
275 275
 		}
276 276
 
277 277
 		$this->form();
278 278
 
279
-		if ( apply_filters( 'wc_stripe_display_save_payment_method_checkbox', $display_tokenization ) && ! is_add_payment_method_page() && ! isset( $_GET['change_payment_method'] ) ) {
279
+		if (apply_filters('wc_stripe_display_save_payment_method_checkbox', $display_tokenization) && ! is_add_payment_method_page() && ! isset($_GET['change_payment_method'])) {
280 280
 			$this->save_payment_method_checkbox();
281 281
 		}
282 282
 
@@ -294,99 +294,99 @@  discard block
 block discarded – undo
294 294
 	 *
295 295
 	 * @return array|void
296 296
 	 */
297
-	public function process_payment( $order_id, $retry = true, $force_save_source = false ) {
297
+	public function process_payment($order_id, $retry = true, $force_save_source = false) {
298 298
 		try {
299
-			$order = wc_get_order( $order_id );
299
+			$order = wc_get_order($order_id);
300 300
 
301
-			if ( $this->maybe_process_pre_orders( $order_id ) ) {
302
-				return $this->pre_orders->process_pre_order( $order_id );
301
+			if ($this->maybe_process_pre_orders($order_id)) {
302
+				return $this->pre_orders->process_pre_order($order_id);
303 303
 			}
304 304
 
305 305
 			// This comes from the create account checkbox in the checkout page.
306
-			$create_account = ! empty( $_POST['createaccount'] ) ? true : false;
306
+			$create_account = ! empty($_POST['createaccount']) ? true : false;
307 307
 
308
-			if ( $create_account ) {
308
+			if ($create_account) {
309 309
 				$new_customer_id     = WC_Stripe_Helper::is_pre_30() ? $order->customer_user : $order->get_customer_id();
310
-				$new_stripe_customer = new WC_Stripe_Customer( $new_customer_id );
310
+				$new_stripe_customer = new WC_Stripe_Customer($new_customer_id);
311 311
 				$new_stripe_customer->create_customer();
312 312
 			}
313 313
 
314
-			$prepared_source = $this->prepare_source( get_current_user_id(), $force_save_source );
314
+			$prepared_source = $this->prepare_source(get_current_user_id(), $force_save_source);
315 315
 
316
-			$this->save_source_to_order( $order, $prepared_source );
316
+			$this->save_source_to_order($order, $prepared_source);
317 317
 
318 318
 			// Result from Stripe API request.
319 319
 			$response = null;
320 320
 
321
-			if ( $order->get_total() > 0 ) {
321
+			if ($order->get_total() > 0) {
322 322
 				// This will throw exception if not valid.
323
-				$this->validate_minimum_order_amount( $order );
323
+				$this->validate_minimum_order_amount($order);
324 324
 
325
-				WC_Stripe_Logger::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" );
325
+				WC_Stripe_Logger::log("Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}");
326 326
 
327 327
 				// Make the request.
328
-				$response = WC_Stripe_API::request( $this->generate_payment_request( $order, $prepared_source ) );
328
+				$response = WC_Stripe_API::request($this->generate_payment_request($order, $prepared_source));
329 329
 
330
-				if ( ! empty( $response->error ) ) {
330
+				if ( ! empty($response->error)) {
331 331
 					// Customer param wrong? The user may have been deleted on stripe's end. Remove customer_id. Can be retried without.
332
-					if ( $this->is_no_such_customer_error( $response->error ) ) {
333
-						if ( WC_Stripe_Helper::is_pre_30() ) {
334
-							delete_user_meta( $order->customer_user, '_stripe_customer_id' );
335
-							delete_post_meta( $order_id, '_stripe_customer_id' );
332
+					if ($this->is_no_such_customer_error($response->error)) {
333
+						if (WC_Stripe_Helper::is_pre_30()) {
334
+							delete_user_meta($order->customer_user, '_stripe_customer_id');
335
+							delete_post_meta($order_id, '_stripe_customer_id');
336 336
 						} else {
337
-							delete_user_meta( $order->get_customer_id(), '_stripe_customer_id' );
338
-							$order->delete_meta_data( '_stripe_customer_id' );
337
+							delete_user_meta($order->get_customer_id(), '_stripe_customer_id');
338
+							$order->delete_meta_data('_stripe_customer_id');
339 339
 							$order->save();
340 340
 						}
341 341
 					}
342 342
 
343
-					if ( $this->is_no_such_token_error( $response->error ) && $prepared_source->token_id ) {
343
+					if ($this->is_no_such_token_error($response->error) && $prepared_source->token_id) {
344 344
 						// Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message.
345
-						$wc_token = WC_Payment_Tokens::get( $prepared_source->token_id );
345
+						$wc_token = WC_Payment_Tokens::get($prepared_source->token_id);
346 346
 						$wc_token->delete();
347
-						$localized_message = __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' );
348
-						$order->add_order_note( $localized_message );
349
-						throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message );
347
+						$localized_message = __('This card is no longer available and has been removed.', 'woocommerce-gateway-stripe');
348
+						$order->add_order_note($localized_message);
349
+						throw new WC_Stripe_Exception(print_r($response, true), $localized_message);
350 350
 					}
351 351
 
352 352
 					// We want to retry.
353
-					if ( $this->is_retryable_error( $response->error ) ) {
354
-						if ( $retry ) {
353
+					if ($this->is_retryable_error($response->error)) {
354
+						if ($retry) {
355 355
 							// Don't do anymore retries after this.
356
-							if ( 5 <= $this->retry_interval ) {
356
+							if (5 <= $this->retry_interval) {
357 357
 
358
-								return $this->process_payment( $order_id, false, $force_save_source );
358
+								return $this->process_payment($order_id, false, $force_save_source);
359 359
 							}
360 360
 
361
-							sleep( $this->retry_interval );
361
+							sleep($this->retry_interval);
362 362
 
363 363
 							$this->retry_interval++;
364 364
 
365
-							return $this->process_payment( $order_id, true, $force_save_source );
365
+							return $this->process_payment($order_id, true, $force_save_source);
366 366
 						} else {
367
-							$localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' );
368
-							$order->add_order_note( $localized_message );
369
-							throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message );
367
+							$localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe');
368
+							$order->add_order_note($localized_message);
369
+							throw new WC_Stripe_Exception(print_r($response, true), $localized_message);
370 370
 						}
371 371
 					}
372 372
 
373 373
 					$localized_messages = WC_Stripe_Helper::get_localized_messages();
374 374
 
375
-					if ( 'card_error' === $response->error->type ) {
376
-						$localized_message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message;
375
+					if ('card_error' === $response->error->type) {
376
+						$localized_message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message;
377 377
 					} else {
378
-						$localized_message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message;
378
+						$localized_message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message;
379 379
 					}
380 380
 
381
-					$order->add_order_note( $localized_message );
381
+					$order->add_order_note($localized_message);
382 382
 
383
-					throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message );
383
+					throw new WC_Stripe_Exception(print_r($response, true), $localized_message);
384 384
 				}
385 385
 
386
-				do_action( 'wc_gateway_stripe_process_payment', $response, $order );
386
+				do_action('wc_gateway_stripe_process_payment', $response, $order);
387 387
 
388 388
 				// Process valid response.
389
-				$this->process_response( $response, $order );
389
+				$this->process_response($response, $order);
390 390
 			} else {
391 391
 				$order->payment_complete();
392 392
 			}
@@ -397,17 +397,17 @@  discard block
 block discarded – undo
397 397
 			// Return thank you page redirect.
398 398
 			return array(
399 399
 				'result'   => 'success',
400
-				'redirect' => $this->get_return_url( $order ),
400
+				'redirect' => $this->get_return_url($order),
401 401
 			);
402 402
 
403
-		} catch ( WC_Stripe_Exception $e ) {
404
-			wc_add_notice( $e->getLocalizedMessage(), 'error' );
405
-			WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() );
403
+		} catch (WC_Stripe_Exception $e) {
404
+			wc_add_notice($e->getLocalizedMessage(), 'error');
405
+			WC_Stripe_Logger::log('Error: ' . $e->getMessage());
406 406
 
407
-			do_action( 'wc_gateway_stripe_process_payment_error', $e, $order );
407
+			do_action('wc_gateway_stripe_process_payment_error', $e, $order);
408 408
 
409
-			if ( $order->has_status( array( 'pending', 'failed' ) ) ) {
410
-				$this->send_failed_order_email( $order_id );
409
+			if ($order->has_status(array('pending', 'failed'))) {
410
+				$this->send_failed_order_email($order_id);
411 411
 			}
412 412
 
413 413
 			return array(
Please login to merge, or discard this patch.