@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -39,12 +39,12 @@ discard block |
||
39 | 39 | */ |
40 | 40 | public function __construct() { |
41 | 41 | $this->retry_interval = 2; |
42 | - $stripe_settings = get_option( 'woocommerce_stripe_settings', array() ); |
|
43 | - $this->testmode = ( ! empty( $stripe_settings['testmode'] ) && 'yes' === $stripe_settings['testmode'] ) ? true : false; |
|
44 | - $secret_key = ( $this->testmode ? 'test_' : '' ) . 'webhook_secret'; |
|
45 | - $this->secret = ! empty( $stripe_settings[ $secret_key ] ) ? $stripe_settings[ $secret_key ] : false; |
|
42 | + $stripe_settings = get_option('woocommerce_stripe_settings', array()); |
|
43 | + $this->testmode = ( ! empty($stripe_settings['testmode']) && 'yes' === $stripe_settings['testmode']) ? true : false; |
|
44 | + $secret_key = ($this->testmode ? 'test_' : '') . 'webhook_secret'; |
|
45 | + $this->secret = ! empty($stripe_settings[$secret_key]) ? $stripe_settings[$secret_key] : false; |
|
46 | 46 | |
47 | - add_action( 'woocommerce_api_wc_stripe', array( $this, 'check_for_webhook' ) ); |
|
47 | + add_action('woocommerce_api_wc_stripe', array($this, 'check_for_webhook')); |
|
48 | 48 | } |
49 | 49 | |
50 | 50 | /** |
@@ -54,24 +54,24 @@ discard block |
||
54 | 54 | * @version 4.0.0 |
55 | 55 | */ |
56 | 56 | public function check_for_webhook() { |
57 | - if ( ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) |
|
58 | - || ! isset( $_GET['wc-api'] ) |
|
59 | - || ( 'wc_stripe' !== $_GET['wc-api'] ) |
|
57 | + if (('POST' !== $_SERVER['REQUEST_METHOD']) |
|
58 | + || ! isset($_GET['wc-api']) |
|
59 | + || ('wc_stripe' !== $_GET['wc-api']) |
|
60 | 60 | ) { |
61 | 61 | return; |
62 | 62 | } |
63 | 63 | |
64 | - $request_body = file_get_contents( 'php://input' ); |
|
65 | - $request_headers = array_change_key_case( $this->get_request_headers(), CASE_UPPER ); |
|
64 | + $request_body = file_get_contents('php://input'); |
|
65 | + $request_headers = array_change_key_case($this->get_request_headers(), CASE_UPPER); |
|
66 | 66 | |
67 | 67 | // Validate it to make sure it is legit. |
68 | - if ( $this->is_valid_request( $request_headers, $request_body ) ) { |
|
69 | - $this->process_webhook( $request_body ); |
|
70 | - status_header( 200 ); |
|
68 | + if ($this->is_valid_request($request_headers, $request_body)) { |
|
69 | + $this->process_webhook($request_body); |
|
70 | + status_header(200); |
|
71 | 71 | exit; |
72 | 72 | } else { |
73 | - WC_Stripe_Logger::log( 'Incoming webhook failed validation: ' . print_r( $request_body, true ) ); |
|
74 | - status_header( 400 ); |
|
73 | + WC_Stripe_Logger::log('Incoming webhook failed validation: ' . print_r($request_body, true)); |
|
74 | + status_header(400); |
|
75 | 75 | exit; |
76 | 76 | } |
77 | 77 | } |
@@ -85,34 +85,34 @@ discard block |
||
85 | 85 | * @param string $request_body The request body from Stripe. |
86 | 86 | * @return bool |
87 | 87 | */ |
88 | - public function is_valid_request( $request_headers = null, $request_body = null ) { |
|
89 | - if ( null === $request_headers || null === $request_body ) { |
|
88 | + public function is_valid_request($request_headers = null, $request_body = null) { |
|
89 | + if (null === $request_headers || null === $request_body) { |
|
90 | 90 | return false; |
91 | 91 | } |
92 | 92 | |
93 | - if ( ! empty( $request_headers['USER-AGENT'] ) && ! preg_match( '/Stripe/', $request_headers['USER-AGENT'] ) ) { |
|
93 | + if ( ! empty($request_headers['USER-AGENT']) && ! preg_match('/Stripe/', $request_headers['USER-AGENT'])) { |
|
94 | 94 | return false; |
95 | 95 | } |
96 | 96 | |
97 | - if ( ! empty( $this->secret ) ) { |
|
97 | + if ( ! empty($this->secret)) { |
|
98 | 98 | // Check for a valid signature. |
99 | 99 | $signature_format = '/^t=(?P<timestamp>\d+)(?P<signatures>(,v\d+=[a-z0-9]+){1,2})$/'; |
100 | - if ( empty( $request_headers['STRIPE-SIGNATURE'] ) || ! preg_match( $signature_format, $request_headers['STRIPE-SIGNATURE'], $matches ) ) { |
|
100 | + if (empty($request_headers['STRIPE-SIGNATURE']) || ! preg_match($signature_format, $request_headers['STRIPE-SIGNATURE'], $matches)) { |
|
101 | 101 | return false; |
102 | 102 | } |
103 | 103 | |
104 | 104 | // Verify the timestamp. |
105 | - $timestamp = intval( $matches['timestamp'] ); |
|
106 | - if ( abs( $timestamp - time() ) > 5 * MINUTE_IN_SECONDS ) { |
|
105 | + $timestamp = intval($matches['timestamp']); |
|
106 | + if (abs($timestamp - time()) > 5 * MINUTE_IN_SECONDS) { |
|
107 | 107 | return; |
108 | 108 | } |
109 | 109 | |
110 | 110 | // Generate the expected signature. |
111 | 111 | $signed_payload = $timestamp . '.' . $request_body; |
112 | - $expected_signature = hash_hmac( 'sha256', $signed_payload, $this->secret ); |
|
112 | + $expected_signature = hash_hmac('sha256', $signed_payload, $this->secret); |
|
113 | 113 | |
114 | 114 | // Check if the expected signature is present. |
115 | - if ( ! preg_match( '/,v\d+=' . preg_quote( $expected_signature, '/' ) . '/', $matches['signatures'] ) ) { |
|
115 | + if ( ! preg_match('/,v\d+=' . preg_quote($expected_signature, '/') . '/', $matches['signatures'])) { |
|
116 | 116 | return false; |
117 | 117 | } |
118 | 118 | } |
@@ -129,12 +129,12 @@ discard block |
||
129 | 129 | * @version 4.0.0 |
130 | 130 | */ |
131 | 131 | public function get_request_headers() { |
132 | - if ( ! function_exists( 'getallheaders' ) ) { |
|
132 | + if ( ! function_exists('getallheaders')) { |
|
133 | 133 | $headers = array(); |
134 | 134 | |
135 | - foreach ( $_SERVER as $name => $value ) { |
|
136 | - if ( 'HTTP_' === substr( $name, 0, 5 ) ) { |
|
137 | - $headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value; |
|
135 | + foreach ($_SERVER as $name => $value) { |
|
136 | + if ('HTTP_' === substr($name, 0, 5)) { |
|
137 | + $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; |
|
138 | 138 | } |
139 | 139 | } |
140 | 140 | |
@@ -153,30 +153,30 @@ discard block |
||
153 | 153 | * @param object $notification |
154 | 154 | * @param bool $retry |
155 | 155 | */ |
156 | - public function process_webhook_payment( $notification, $retry = true ) { |
|
156 | + public function process_webhook_payment($notification, $retry = true) { |
|
157 | 157 | // The following 3 payment methods are synchronous so does not need to be handle via webhook. |
158 | - if ( 'card' === $notification->data->object->type || 'sepa_debit' === $notification->data->object->type || 'three_d_secure' === $notification->data->object->type ) { |
|
158 | + if ('card' === $notification->data->object->type || 'sepa_debit' === $notification->data->object->type || 'three_d_secure' === $notification->data->object->type) { |
|
159 | 159 | return; |
160 | 160 | } |
161 | 161 | |
162 | - $order = WC_Stripe_Helper::get_order_by_source_id( $notification->data->object->id ); |
|
162 | + $order = WC_Stripe_Helper::get_order_by_source_id($notification->data->object->id); |
|
163 | 163 | |
164 | - if ( ! $order ) { |
|
165 | - WC_Stripe_Logger::log( 'Could not find order via source ID: ' . $notification->data->object->id ); |
|
164 | + if ( ! $order) { |
|
165 | + WC_Stripe_Logger::log('Could not find order via source ID: ' . $notification->data->object->id); |
|
166 | 166 | return; |
167 | 167 | } |
168 | 168 | |
169 | 169 | $order_id = $order->get_id(); |
170 | 170 | $source_id = $notification->data->object->id; |
171 | 171 | |
172 | - $is_pending_receiver = ( 'receiver' === $notification->data->object->flow ); |
|
172 | + $is_pending_receiver = ('receiver' === $notification->data->object->flow); |
|
173 | 173 | |
174 | 174 | try { |
175 | - if ( $order->has_status( array( 'processing', 'completed' ) ) ) { |
|
175 | + if ($order->has_status(array('processing', 'completed'))) { |
|
176 | 176 | return; |
177 | 177 | } |
178 | 178 | |
179 | - if ( $order->has_status( 'on-hold' ) && ! $is_pending_receiver ) { |
|
179 | + if ($order->has_status('on-hold') && ! $is_pending_receiver) { |
|
180 | 180 | return; |
181 | 181 | } |
182 | 182 | |
@@ -184,89 +184,89 @@ discard block |
||
184 | 184 | $response = null; |
185 | 185 | |
186 | 186 | // This will throw exception if not valid. |
187 | - $this->validate_minimum_order_amount( $order ); |
|
187 | + $this->validate_minimum_order_amount($order); |
|
188 | 188 | |
189 | - WC_Stripe_Logger::log( "Info: (Webhook) Begin processing payment for order $order_id for the amount of {$order->get_total()}" ); |
|
189 | + WC_Stripe_Logger::log("Info: (Webhook) Begin processing payment for order $order_id for the amount of {$order->get_total()}"); |
|
190 | 190 | |
191 | 191 | // Prep source object. |
192 | 192 | $source_object = new stdClass(); |
193 | 193 | $source_object->token_id = ''; |
194 | - $source_object->customer = $this->get_stripe_customer_id( $order ); |
|
194 | + $source_object->customer = $this->get_stripe_customer_id($order); |
|
195 | 195 | $source_object->source = $source_id; |
196 | 196 | |
197 | 197 | // Make the request. |
198 | - $response = WC_Stripe_API::request( $this->generate_payment_request( $order, $source_object ), 'charges', 'POST', true ); |
|
198 | + $response = WC_Stripe_API::request($this->generate_payment_request($order, $source_object), 'charges', 'POST', true); |
|
199 | 199 | $headers = $response['headers']; |
200 | 200 | $response = $response['body']; |
201 | 201 | |
202 | - if ( ! empty( $response->error ) ) { |
|
202 | + if ( ! empty($response->error)) { |
|
203 | 203 | // Customer param wrong? The user may have been deleted on stripe's end. Remove customer_id. Can be retried without. |
204 | - if ( $this->is_no_such_customer_error( $response->error ) ) { |
|
205 | - delete_user_option( $order->get_customer_id(), '_stripe_customer_id' ); |
|
206 | - $order->delete_meta_data( '_stripe_customer_id' ); |
|
204 | + if ($this->is_no_such_customer_error($response->error)) { |
|
205 | + delete_user_option($order->get_customer_id(), '_stripe_customer_id'); |
|
206 | + $order->delete_meta_data('_stripe_customer_id'); |
|
207 | 207 | $order->save(); |
208 | 208 | } |
209 | 209 | |
210 | - if ( $this->is_no_such_token_error( $response->error ) && $prepared_source->token_id ) { |
|
210 | + if ($this->is_no_such_token_error($response->error) && $prepared_source->token_id) { |
|
211 | 211 | // Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message. |
212 | - $wc_token = WC_Payment_Tokens::get( $prepared_source->token_id ); |
|
212 | + $wc_token = WC_Payment_Tokens::get($prepared_source->token_id); |
|
213 | 213 | $wc_token->delete(); |
214 | - $localized_message = __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' ); |
|
215 | - $order->add_order_note( $localized_message ); |
|
216 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
214 | + $localized_message = __('This card is no longer available and has been removed.', 'woocommerce-gateway-stripe'); |
|
215 | + $order->add_order_note($localized_message); |
|
216 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
217 | 217 | } |
218 | 218 | |
219 | 219 | // We want to retry. |
220 | - if ( $this->is_retryable_error( $response->error ) ) { |
|
221 | - if ( $retry ) { |
|
220 | + if ($this->is_retryable_error($response->error)) { |
|
221 | + if ($retry) { |
|
222 | 222 | // Don't do anymore retries after this. |
223 | - if ( 5 <= $this->retry_interval ) { |
|
223 | + if (5 <= $this->retry_interval) { |
|
224 | 224 | |
225 | - return $this->process_webhook_payment( $notification, false ); |
|
225 | + return $this->process_webhook_payment($notification, false); |
|
226 | 226 | } |
227 | 227 | |
228 | - sleep( $this->retry_interval ); |
|
228 | + sleep($this->retry_interval); |
|
229 | 229 | |
230 | 230 | $this->retry_interval++; |
231 | - return $this->process_webhook_payment( $notification, true ); |
|
231 | + return $this->process_webhook_payment($notification, true); |
|
232 | 232 | } else { |
233 | - $localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' ); |
|
234 | - $order->add_order_note( $localized_message ); |
|
235 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
233 | + $localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe'); |
|
234 | + $order->add_order_note($localized_message); |
|
235 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
236 | 236 | } |
237 | 237 | } |
238 | 238 | |
239 | 239 | $localized_messages = WC_Stripe_Helper::get_localized_messages(); |
240 | 240 | |
241 | - if ( 'card_error' === $response->error->type ) { |
|
242 | - $localized_message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message; |
|
241 | + if ('card_error' === $response->error->type) { |
|
242 | + $localized_message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message; |
|
243 | 243 | } else { |
244 | - $localized_message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message; |
|
244 | + $localized_message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message; |
|
245 | 245 | } |
246 | 246 | |
247 | - $order->add_order_note( $localized_message ); |
|
247 | + $order->add_order_note($localized_message); |
|
248 | 248 | |
249 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
249 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
250 | 250 | } |
251 | 251 | |
252 | 252 | // To prevent double processing the order on WC side. |
253 | - if ( ! $this->is_original_request( $headers ) ) { |
|
253 | + if ( ! $this->is_original_request($headers)) { |
|
254 | 254 | return; |
255 | 255 | } |
256 | 256 | |
257 | - do_action( 'wc_gateway_stripe_process_webhook_payment', $response, $order ); |
|
257 | + do_action('wc_gateway_stripe_process_webhook_payment', $response, $order); |
|
258 | 258 | |
259 | - $this->process_response( $response, $order ); |
|
259 | + $this->process_response($response, $order); |
|
260 | 260 | |
261 | - } catch ( WC_Stripe_Exception $e ) { |
|
262 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
261 | + } catch (WC_Stripe_Exception $e) { |
|
262 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
263 | 263 | |
264 | - do_action( 'wc_gateway_stripe_process_webhook_payment_error', $order, $notification, $e ); |
|
264 | + do_action('wc_gateway_stripe_process_webhook_payment_error', $order, $notification, $e); |
|
265 | 265 | |
266 | - $statuses = array( 'pending', 'failed' ); |
|
266 | + $statuses = array('pending', 'failed'); |
|
267 | 267 | |
268 | - if ( $order->has_status( $statuses ) ) { |
|
269 | - $this->send_failed_order_email( $order_id ); |
|
268 | + if ($order->has_status($statuses)) { |
|
269 | + $this->send_failed_order_email($order_id); |
|
270 | 270 | } |
271 | 271 | } |
272 | 272 | } |
@@ -279,21 +279,21 @@ discard block |
||
279 | 279 | * @since 4.0.0 |
280 | 280 | * @param object $notification |
281 | 281 | */ |
282 | - public function process_webhook_dispute( $notification ) { |
|
283 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->charge ); |
|
282 | + public function process_webhook_dispute($notification) { |
|
283 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->charge); |
|
284 | 284 | |
285 | - if ( ! $order ) { |
|
286 | - WC_Stripe_Logger::log( 'Could not find order via charge ID: ' . $notification->data->object->charge ); |
|
285 | + if ( ! $order) { |
|
286 | + WC_Stripe_Logger::log('Could not find order via charge ID: ' . $notification->data->object->charge); |
|
287 | 287 | return; |
288 | 288 | } |
289 | 289 | |
290 | 290 | /* translators: 1) The URL to the order. */ |
291 | - $order->update_status( 'on-hold', sprintf( __( 'A dispute was created for this order. Response is needed. Please go to your <a href="%s" title="Stripe Dashboard" target="_blank">Stripe Dashboard</a> to review this dispute.', 'woocommerce-gateway-stripe' ), $this->get_transaction_url( $order ) ) ); |
|
291 | + $order->update_status('on-hold', sprintf(__('A dispute was created for this order. Response is needed. Please go to your <a href="%s" title="Stripe Dashboard" target="_blank">Stripe Dashboard</a> to review this dispute.', 'woocommerce-gateway-stripe'), $this->get_transaction_url($order))); |
|
292 | 292 | |
293 | - do_action( 'wc_gateway_stripe_process_webhook_payment_error', $order, $notification ); |
|
293 | + do_action('wc_gateway_stripe_process_webhook_payment_error', $order, $notification); |
|
294 | 294 | |
295 | 295 | $order_id = $order->get_id(); |
296 | - $this->send_failed_order_email( $order_id ); |
|
296 | + $this->send_failed_order_email($order_id); |
|
297 | 297 | } |
298 | 298 | |
299 | 299 | /** |
@@ -304,43 +304,43 @@ discard block |
||
304 | 304 | * @version 4.0.0 |
305 | 305 | * @param object $notification |
306 | 306 | */ |
307 | - public function process_webhook_capture( $notification ) { |
|
308 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->id ); |
|
307 | + public function process_webhook_capture($notification) { |
|
308 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->id); |
|
309 | 309 | |
310 | - if ( ! $order ) { |
|
311 | - WC_Stripe_Logger::log( 'Could not find order via charge ID: ' . $notification->data->object->id ); |
|
310 | + if ( ! $order) { |
|
311 | + WC_Stripe_Logger::log('Could not find order via charge ID: ' . $notification->data->object->id); |
|
312 | 312 | return; |
313 | 313 | } |
314 | 314 | |
315 | - if ( 'stripe' === $order->get_payment_method() ) { |
|
315 | + if ('stripe' === $order->get_payment_method()) { |
|
316 | 316 | $charge = $order->get_transaction_id(); |
317 | - $captured = $order->get_meta( '_stripe_charge_captured', true ); |
|
317 | + $captured = $order->get_meta('_stripe_charge_captured', true); |
|
318 | 318 | |
319 | - if ( $charge && 'no' === $captured ) { |
|
320 | - $order->update_meta_data( '_stripe_charge_captured', 'yes' ); |
|
319 | + if ($charge && 'no' === $captured) { |
|
320 | + $order->update_meta_data('_stripe_charge_captured', 'yes'); |
|
321 | 321 | |
322 | 322 | // Store other data such as fees |
323 | - $order->set_transaction_id( $notification->data->object->id ); |
|
323 | + $order->set_transaction_id($notification->data->object->id); |
|
324 | 324 | |
325 | - if ( isset( $notification->data->object->balance_transaction ) ) { |
|
326 | - $this->update_fees( $order, $notification->data->object->balance_transaction ); |
|
325 | + if (isset($notification->data->object->balance_transaction)) { |
|
326 | + $this->update_fees($order, $notification->data->object->balance_transaction); |
|
327 | 327 | } |
328 | 328 | |
329 | 329 | // Check and see if capture is partial. |
330 | - if ( $this->is_partial_capture( $notification ) ) { |
|
331 | - $partial_amount = $this->get_partial_amount_to_charge( $notification ); |
|
332 | - $order->set_total( $partial_amount ); |
|
333 | - $this->update_fees( $order, $notification->data->object->refunds->data[0]->balance_transaction ); |
|
330 | + if ($this->is_partial_capture($notification)) { |
|
331 | + $partial_amount = $this->get_partial_amount_to_charge($notification); |
|
332 | + $order->set_total($partial_amount); |
|
333 | + $this->update_fees($order, $notification->data->object->refunds->data[0]->balance_transaction); |
|
334 | 334 | /* translators: partial captured amount */ |
335 | - $order->add_order_note( sprintf( __( 'This charge was partially captured via Stripe Dashboard in the amount of: %s', 'woocommerce-gateway-stripe' ), $partial_amount ) ); |
|
335 | + $order->add_order_note(sprintf(__('This charge was partially captured via Stripe Dashboard in the amount of: %s', 'woocommerce-gateway-stripe'), $partial_amount)); |
|
336 | 336 | } else { |
337 | - $order->payment_complete( $notification->data->object->id ); |
|
337 | + $order->payment_complete($notification->data->object->id); |
|
338 | 338 | |
339 | 339 | /* translators: transaction id */ |
340 | - $order->add_order_note( sprintf( __( 'Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe' ), $notification->data->object->id ) ); |
|
340 | + $order->add_order_note(sprintf(__('Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe'), $notification->data->object->id)); |
|
341 | 341 | } |
342 | 342 | |
343 | - if ( is_callable( array( $order, 'save' ) ) ) { |
|
343 | + if (is_callable(array($order, 'save'))) { |
|
344 | 344 | $order->save(); |
345 | 345 | } |
346 | 346 | } |
@@ -355,41 +355,41 @@ discard block |
||
355 | 355 | * @version 4.0.0 |
356 | 356 | * @param object $notification |
357 | 357 | */ |
358 | - public function process_webhook_charge_succeeded( $notification ) { |
|
358 | + public function process_webhook_charge_succeeded($notification) { |
|
359 | 359 | // Ignore the notification for charges, created through PaymentIntents. |
360 | - if ( isset( $notification->data->object->payment_intent ) && $notification->data->object->payment_intent ) { |
|
360 | + if (isset($notification->data->object->payment_intent) && $notification->data->object->payment_intent) { |
|
361 | 361 | return; |
362 | 362 | } |
363 | 363 | |
364 | 364 | // The following payment methods are synchronous so does not need to be handle via webhook. |
365 | - if ( ( isset( $notification->data->object->source->type ) && 'card' === $notification->data->object->source->type ) || ( isset( $notification->data->object->source->type ) && 'three_d_secure' === $notification->data->object->source->type ) ) { |
|
365 | + if ((isset($notification->data->object->source->type) && 'card' === $notification->data->object->source->type) || (isset($notification->data->object->source->type) && 'three_d_secure' === $notification->data->object->source->type)) { |
|
366 | 366 | return; |
367 | 367 | } |
368 | 368 | |
369 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->id ); |
|
369 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->id); |
|
370 | 370 | |
371 | - if ( ! $order ) { |
|
372 | - WC_Stripe_Logger::log( 'Could not find order via charge ID: ' . $notification->data->object->id ); |
|
371 | + if ( ! $order) { |
|
372 | + WC_Stripe_Logger::log('Could not find order via charge ID: ' . $notification->data->object->id); |
|
373 | 373 | return; |
374 | 374 | } |
375 | 375 | |
376 | - if ( ! $order->has_status( 'on-hold' ) ) { |
|
376 | + if ( ! $order->has_status('on-hold')) { |
|
377 | 377 | return; |
378 | 378 | } |
379 | 379 | |
380 | 380 | // Store other data such as fees |
381 | - $order->set_transaction_id( $notification->data->object->id ); |
|
381 | + $order->set_transaction_id($notification->data->object->id); |
|
382 | 382 | |
383 | - if ( isset( $notification->data->object->balance_transaction ) ) { |
|
384 | - $this->update_fees( $order, $notification->data->object->balance_transaction ); |
|
383 | + if (isset($notification->data->object->balance_transaction)) { |
|
384 | + $this->update_fees($order, $notification->data->object->balance_transaction); |
|
385 | 385 | } |
386 | 386 | |
387 | - $order->payment_complete( $notification->data->object->id ); |
|
387 | + $order->payment_complete($notification->data->object->id); |
|
388 | 388 | |
389 | 389 | /* translators: transaction id */ |
390 | - $order->add_order_note( sprintf( __( 'Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe' ), $notification->data->object->id ) ); |
|
390 | + $order->add_order_note(sprintf(__('Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe'), $notification->data->object->id)); |
|
391 | 391 | |
392 | - if ( is_callable( array( $order, 'save' ) ) ) { |
|
392 | + if (is_callable(array($order, 'save'))) { |
|
393 | 393 | $order->save(); |
394 | 394 | } |
395 | 395 | } |
@@ -401,22 +401,22 @@ discard block |
||
401 | 401 | * @since 4.1.5 Can handle any fail payments from any methods. |
402 | 402 | * @param object $notification |
403 | 403 | */ |
404 | - public function process_webhook_charge_failed( $notification ) { |
|
405 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->id ); |
|
404 | + public function process_webhook_charge_failed($notification) { |
|
405 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->id); |
|
406 | 406 | |
407 | - if ( ! $order ) { |
|
408 | - WC_Stripe_Logger::log( 'Could not find order via charge ID: ' . $notification->data->object->id ); |
|
407 | + if ( ! $order) { |
|
408 | + WC_Stripe_Logger::log('Could not find order via charge ID: ' . $notification->data->object->id); |
|
409 | 409 | return; |
410 | 410 | } |
411 | 411 | |
412 | 412 | // If order status is already in failed status don't continue. |
413 | - if ( $order->has_status( 'failed' ) ) { |
|
413 | + if ($order->has_status('failed')) { |
|
414 | 414 | return; |
415 | 415 | } |
416 | 416 | |
417 | - $order->update_status( 'failed', __( 'This payment failed to clear.', 'woocommerce-gateway-stripe' ) ); |
|
417 | + $order->update_status('failed', __('This payment failed to clear.', 'woocommerce-gateway-stripe')); |
|
418 | 418 | |
419 | - do_action( 'wc_gateway_stripe_process_webhook_payment_error', $order, $notification ); |
|
419 | + do_action('wc_gateway_stripe_process_webhook_payment_error', $order, $notification); |
|
420 | 420 | } |
421 | 421 | |
422 | 422 | /** |
@@ -427,30 +427,30 @@ discard block |
||
427 | 427 | * @since 4.1.15 Add check to make sure order is processed by Stripe. |
428 | 428 | * @param object $notification |
429 | 429 | */ |
430 | - public function process_webhook_source_canceled( $notification ) { |
|
431 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->id ); |
|
430 | + public function process_webhook_source_canceled($notification) { |
|
431 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->id); |
|
432 | 432 | |
433 | 433 | // If can't find order by charge ID, try source ID. |
434 | - if ( ! $order ) { |
|
435 | - $order = WC_Stripe_Helper::get_order_by_source_id( $notification->data->object->id ); |
|
434 | + if ( ! $order) { |
|
435 | + $order = WC_Stripe_Helper::get_order_by_source_id($notification->data->object->id); |
|
436 | 436 | |
437 | - if ( ! $order ) { |
|
438 | - WC_Stripe_Logger::log( 'Could not find order via charge/source ID: ' . $notification->data->object->id ); |
|
437 | + if ( ! $order) { |
|
438 | + WC_Stripe_Logger::log('Could not find order via charge/source ID: ' . $notification->data->object->id); |
|
439 | 439 | return; |
440 | 440 | } |
441 | 441 | } |
442 | 442 | |
443 | 443 | // Don't proceed if payment method isn't Stripe. |
444 | - if ( 'stripe' !== $order->get_payment_method() ) { |
|
445 | - WC_Stripe_Logger::log( 'Canceled webhook abort: Order was not processed by Stripe: ' . $order->get_id() ); |
|
444 | + if ('stripe' !== $order->get_payment_method()) { |
|
445 | + WC_Stripe_Logger::log('Canceled webhook abort: Order was not processed by Stripe: ' . $order->get_id()); |
|
446 | 446 | return; |
447 | 447 | } |
448 | 448 | |
449 | - if ( ! $order->has_status( 'cancelled' ) ) { |
|
450 | - $order->update_status( 'cancelled', __( 'This payment has cancelled.', 'woocommerce-gateway-stripe' ) ); |
|
449 | + if ( ! $order->has_status('cancelled')) { |
|
450 | + $order->update_status('cancelled', __('This payment has cancelled.', 'woocommerce-gateway-stripe')); |
|
451 | 451 | } |
452 | 452 | |
453 | - do_action( 'wc_gateway_stripe_process_webhook_payment_error', $order, $notification ); |
|
453 | + do_action('wc_gateway_stripe_process_webhook_payment_error', $order, $notification); |
|
454 | 454 | } |
455 | 455 | |
456 | 456 | /** |
@@ -460,59 +460,59 @@ discard block |
||
460 | 460 | * @version 4.0.0 |
461 | 461 | * @param object $notification |
462 | 462 | */ |
463 | - public function process_webhook_refund( $notification ) { |
|
464 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->id ); |
|
463 | + public function process_webhook_refund($notification) { |
|
464 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->id); |
|
465 | 465 | |
466 | - if ( ! $order ) { |
|
467 | - WC_Stripe_Logger::log( 'Could not find order via charge ID: ' . $notification->data->object->id ); |
|
466 | + if ( ! $order) { |
|
467 | + WC_Stripe_Logger::log('Could not find order via charge ID: ' . $notification->data->object->id); |
|
468 | 468 | return; |
469 | 469 | } |
470 | 470 | |
471 | 471 | $order_id = $order->get_id(); |
472 | 472 | |
473 | - if ( 'stripe' === $order->get_payment_method() ) { |
|
473 | + if ('stripe' === $order->get_payment_method()) { |
|
474 | 474 | $charge = $order->get_transaction_id(); |
475 | - $captured = $order->get_meta( '_stripe_charge_captured', true ); |
|
476 | - $refund_id = $order->get_meta( '_stripe_refund_id', true ); |
|
475 | + $captured = $order->get_meta('_stripe_charge_captured', true); |
|
476 | + $refund_id = $order->get_meta('_stripe_refund_id', true); |
|
477 | 477 | |
478 | 478 | // If the refund ID matches, don't continue to prevent double refunding. |
479 | - if ( $notification->data->object->refunds->data[0]->id === $refund_id ) { |
|
479 | + if ($notification->data->object->refunds->data[0]->id === $refund_id) { |
|
480 | 480 | return; |
481 | 481 | } |
482 | 482 | |
483 | 483 | // Only refund captured charge. |
484 | - if ( $charge ) { |
|
485 | - $reason = ( isset( $captured ) && 'yes' === $captured ) ? __( 'Refunded via Stripe Dashboard', 'woocommerce-gateway-stripe' ) : __( 'Pre-Authorization Released via Stripe Dashboard', 'woocommerce-gateway-stripe' ); |
|
484 | + if ($charge) { |
|
485 | + $reason = (isset($captured) && 'yes' === $captured) ? __('Refunded via Stripe Dashboard', 'woocommerce-gateway-stripe') : __('Pre-Authorization Released via Stripe Dashboard', 'woocommerce-gateway-stripe'); |
|
486 | 486 | |
487 | 487 | // Create the refund. |
488 | 488 | $refund = wc_create_refund( |
489 | 489 | array( |
490 | 490 | 'order_id' => $order_id, |
491 | - 'amount' => $this->get_refund_amount( $notification ), |
|
491 | + 'amount' => $this->get_refund_amount($notification), |
|
492 | 492 | 'reason' => $reason, |
493 | 493 | ) |
494 | 494 | ); |
495 | 495 | |
496 | - if ( is_wp_error( $refund ) ) { |
|
497 | - WC_Stripe_Logger::log( $refund->get_error_message() ); |
|
496 | + if (is_wp_error($refund)) { |
|
497 | + WC_Stripe_Logger::log($refund->get_error_message()); |
|
498 | 498 | } |
499 | 499 | |
500 | - $order->update_meta_data( '_stripe_refund_id', $notification->data->object->refunds->data[0]->id ); |
|
500 | + $order->update_meta_data('_stripe_refund_id', $notification->data->object->refunds->data[0]->id); |
|
501 | 501 | |
502 | - $amount = wc_price( $notification->data->object->refunds->data[0]->amount / 100 ); |
|
502 | + $amount = wc_price($notification->data->object->refunds->data[0]->amount / 100); |
|
503 | 503 | |
504 | - if ( in_array( strtolower( $order->get_currency() ), WC_Stripe_Helper::no_decimal_currencies() ) ) { |
|
505 | - $amount = wc_price( $notification->data->object->refunds->data[0]->amount ); |
|
504 | + if (in_array(strtolower($order->get_currency()), WC_Stripe_Helper::no_decimal_currencies())) { |
|
505 | + $amount = wc_price($notification->data->object->refunds->data[0]->amount); |
|
506 | 506 | } |
507 | 507 | |
508 | - if ( isset( $notification->data->object->refunds->data[0]->balance_transaction ) ) { |
|
509 | - $this->update_fees( $order, $notification->data->object->refunds->data[0]->balance_transaction ); |
|
508 | + if (isset($notification->data->object->refunds->data[0]->balance_transaction)) { |
|
509 | + $this->update_fees($order, $notification->data->object->refunds->data[0]->balance_transaction); |
|
510 | 510 | } |
511 | 511 | |
512 | 512 | /* translators: 1) dollar amount 2) transaction id 3) refund message */ |
513 | - $refund_message = ( isset( $captured ) && 'yes' === $captured ) ? sprintf( __( 'Refunded %1$s - Refund ID: %2$s - %3$s', 'woocommerce-gateway-stripe' ), $amount, $notification->data->object->refunds->data[0]->id, $reason ) : __( 'Pre-Authorization Released via Stripe Dashboard', 'woocommerce-gateway-stripe' ); |
|
513 | + $refund_message = (isset($captured) && 'yes' === $captured) ? sprintf(__('Refunded %1$s - Refund ID: %2$s - %3$s', 'woocommerce-gateway-stripe'), $amount, $notification->data->object->refunds->data[0]->id, $reason) : __('Pre-Authorization Released via Stripe Dashboard', 'woocommerce-gateway-stripe'); |
|
514 | 514 | |
515 | - $order->add_order_note( $refund_message ); |
|
515 | + $order->add_order_note($refund_message); |
|
516 | 516 | } |
517 | 517 | } |
518 | 518 | } |
@@ -523,30 +523,30 @@ discard block |
||
523 | 523 | * @since 4.0.6 |
524 | 524 | * @param object $notification |
525 | 525 | */ |
526 | - public function process_review_opened( $notification ) { |
|
527 | - if ( isset( $notification->data->object->payment_intent ) ) { |
|
528 | - $order = WC_Stripe_Helper::get_order_by_intent_id( $notification->data->object->payment_intent ); |
|
526 | + public function process_review_opened($notification) { |
|
527 | + if (isset($notification->data->object->payment_intent)) { |
|
528 | + $order = WC_Stripe_Helper::get_order_by_intent_id($notification->data->object->payment_intent); |
|
529 | 529 | |
530 | - if ( ! $order ) { |
|
531 | - WC_Stripe_Logger::log( '[Review Opened] Could not find order via intent ID: ' . $notification->data->object->payment_intent ); |
|
530 | + if ( ! $order) { |
|
531 | + WC_Stripe_Logger::log('[Review Opened] Could not find order via intent ID: ' . $notification->data->object->payment_intent); |
|
532 | 532 | return; |
533 | 533 | } |
534 | 534 | } else { |
535 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->charge ); |
|
535 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->charge); |
|
536 | 536 | |
537 | - if ( ! $order ) { |
|
538 | - WC_Stripe_Logger::log( '[Review Opened] Could not find order via charge ID: ' . $notification->data->object->charge ); |
|
537 | + if ( ! $order) { |
|
538 | + WC_Stripe_Logger::log('[Review Opened] Could not find order via charge ID: ' . $notification->data->object->charge); |
|
539 | 539 | return; |
540 | 540 | } |
541 | 541 | } |
542 | 542 | |
543 | 543 | /* translators: 1) The URL to the order. 2) The reason type. */ |
544 | - $message = sprintf( __( 'A review has been opened for this order. Action is needed. Please go to your <a href="%1$s" title="Stripe Dashboard" target="_blank">Stripe Dashboard</a> to review the issue. Reason: (%2$s)', 'woocommerce-gateway-stripe' ), $this->get_transaction_url( $order ), $notification->data->object->reason ); |
|
544 | + $message = sprintf(__('A review has been opened for this order. Action is needed. Please go to your <a href="%1$s" title="Stripe Dashboard" target="_blank">Stripe Dashboard</a> to review the issue. Reason: (%2$s)', 'woocommerce-gateway-stripe'), $this->get_transaction_url($order), $notification->data->object->reason); |
|
545 | 545 | |
546 | - if ( apply_filters( 'wc_stripe_webhook_review_change_order_status', true, $order, $notification ) ) { |
|
547 | - $order->update_status( 'on-hold', $message ); |
|
546 | + if (apply_filters('wc_stripe_webhook_review_change_order_status', true, $order, $notification)) { |
|
547 | + $order->update_status('on-hold', $message); |
|
548 | 548 | } else { |
549 | - $order->add_order_note( $message ); |
|
549 | + $order->add_order_note($message); |
|
550 | 550 | } |
551 | 551 | } |
552 | 552 | |
@@ -556,34 +556,34 @@ discard block |
||
556 | 556 | * @since 4.0.6 |
557 | 557 | * @param object $notification |
558 | 558 | */ |
559 | - public function process_review_closed( $notification ) { |
|
560 | - if ( isset( $notification->data->object->payment_intent ) ) { |
|
561 | - $order = WC_Stripe_Helper::get_order_by_intent_id( $notification->data->object->payment_intent ); |
|
559 | + public function process_review_closed($notification) { |
|
560 | + if (isset($notification->data->object->payment_intent)) { |
|
561 | + $order = WC_Stripe_Helper::get_order_by_intent_id($notification->data->object->payment_intent); |
|
562 | 562 | |
563 | - if ( ! $order ) { |
|
564 | - WC_Stripe_Logger::log( '[Review Closed] Could not find order via intent ID: ' . $notification->data->object->payment_intent ); |
|
563 | + if ( ! $order) { |
|
564 | + WC_Stripe_Logger::log('[Review Closed] Could not find order via intent ID: ' . $notification->data->object->payment_intent); |
|
565 | 565 | return; |
566 | 566 | } |
567 | 567 | } else { |
568 | - $order = WC_Stripe_Helper::get_order_by_charge_id( $notification->data->object->charge ); |
|
568 | + $order = WC_Stripe_Helper::get_order_by_charge_id($notification->data->object->charge); |
|
569 | 569 | |
570 | - if ( ! $order ) { |
|
571 | - WC_Stripe_Logger::log( '[Review Closed] Could not find order via charge ID: ' . $notification->data->object->charge ); |
|
570 | + if ( ! $order) { |
|
571 | + WC_Stripe_Logger::log('[Review Closed] Could not find order via charge ID: ' . $notification->data->object->charge); |
|
572 | 572 | return; |
573 | 573 | } |
574 | 574 | } |
575 | 575 | |
576 | 576 | /* translators: 1) The reason type. */ |
577 | - $message = sprintf( __( 'The opened review for this order is now closed. Reason: (%s)', 'woocommerce-gateway-stripe' ), $notification->data->object->reason ); |
|
577 | + $message = sprintf(__('The opened review for this order is now closed. Reason: (%s)', 'woocommerce-gateway-stripe'), $notification->data->object->reason); |
|
578 | 578 | |
579 | - if ( $order->has_status( 'on-hold' ) ) { |
|
580 | - if ( apply_filters( 'wc_stripe_webhook_review_change_order_status', true, $order, $notification ) ) { |
|
581 | - $order->update_status( 'processing', $message ); |
|
579 | + if ($order->has_status('on-hold')) { |
|
580 | + if (apply_filters('wc_stripe_webhook_review_change_order_status', true, $order, $notification)) { |
|
581 | + $order->update_status('processing', $message); |
|
582 | 582 | } else { |
583 | - $order->add_order_note( $message ); |
|
583 | + $order->add_order_note($message); |
|
584 | 584 | } |
585 | 585 | } else { |
586 | - $order->add_order_note( $message ); |
|
586 | + $order->add_order_note($message); |
|
587 | 587 | } |
588 | 588 | } |
589 | 589 | |
@@ -594,7 +594,7 @@ discard block |
||
594 | 594 | * @version 4.0.0 |
595 | 595 | * @param object $notification |
596 | 596 | */ |
597 | - public function is_partial_capture( $notification ) { |
|
597 | + public function is_partial_capture($notification) { |
|
598 | 598 | return 0 < $notification->data->object->amount_refunded; |
599 | 599 | } |
600 | 600 | |
@@ -605,11 +605,11 @@ discard block |
||
605 | 605 | * @version 4.0.0 |
606 | 606 | * @param object $notification |
607 | 607 | */ |
608 | - public function get_refund_amount( $notification ) { |
|
609 | - if ( $this->is_partial_capture( $notification ) ) { |
|
608 | + public function get_refund_amount($notification) { |
|
609 | + if ($this->is_partial_capture($notification)) { |
|
610 | 610 | $amount = $notification->data->object->refunds->data[0]->amount / 100; |
611 | 611 | |
612 | - if ( in_array( strtolower( $notification->data->object->currency ), WC_Stripe_Helper::no_decimal_currencies() ) ) { |
|
612 | + if (in_array(strtolower($notification->data->object->currency), WC_Stripe_Helper::no_decimal_currencies())) { |
|
613 | 613 | $amount = $notification->data->object->refunds->data[0]->amount; |
614 | 614 | } |
615 | 615 | |
@@ -626,12 +626,12 @@ discard block |
||
626 | 626 | * @version 4.0.0 |
627 | 627 | * @param object $notification |
628 | 628 | */ |
629 | - public function get_partial_amount_to_charge( $notification ) { |
|
630 | - if ( $this->is_partial_capture( $notification ) ) { |
|
631 | - $amount = ( $notification->data->object->amount - $notification->data->object->amount_refunded ) / 100; |
|
629 | + public function get_partial_amount_to_charge($notification) { |
|
630 | + if ($this->is_partial_capture($notification)) { |
|
631 | + $amount = ($notification->data->object->amount - $notification->data->object->amount_refunded) / 100; |
|
632 | 632 | |
633 | - if ( in_array( strtolower( $notification->data->object->currency ), WC_Stripe_Helper::no_decimal_currencies() ) ) { |
|
634 | - $amount = ( $notification->data->object->amount - $notification->data->object->amount_refunded ); |
|
633 | + if (in_array(strtolower($notification->data->object->currency), WC_Stripe_Helper::no_decimal_currencies())) { |
|
634 | + $amount = ($notification->data->object->amount - $notification->data->object->amount_refunded); |
|
635 | 635 | } |
636 | 636 | |
637 | 637 | return $amount; |
@@ -640,69 +640,69 @@ discard block |
||
640 | 640 | return false; |
641 | 641 | } |
642 | 642 | |
643 | - public function process_payment_intent_success( $notification ) { |
|
643 | + public function process_payment_intent_success($notification) { |
|
644 | 644 | $intent = $notification->data->object; |
645 | - $order = WC_Stripe_Helper::get_order_by_intent_id( $intent->id ); |
|
645 | + $order = WC_Stripe_Helper::get_order_by_intent_id($intent->id); |
|
646 | 646 | |
647 | - if ( ! $order ) { |
|
648 | - WC_Stripe_Logger::log( 'Could not find order via intent ID: ' . $intent->id ); |
|
647 | + if ( ! $order) { |
|
648 | + WC_Stripe_Logger::log('Could not find order via intent ID: ' . $intent->id); |
|
649 | 649 | return; |
650 | 650 | } |
651 | 651 | |
652 | - if ( ! $order->has_status( array( 'pending', 'failed' ) ) ) { |
|
652 | + if ( ! $order->has_status(array('pending', 'failed'))) { |
|
653 | 653 | return; |
654 | 654 | } |
655 | 655 | |
656 | - if ( $this->lock_order_payment( $order, $intent ) ) { |
|
656 | + if ($this->lock_order_payment($order, $intent)) { |
|
657 | 657 | return; |
658 | 658 | } |
659 | 659 | |
660 | 660 | $order_id = $order->get_id(); |
661 | - if ( 'payment_intent.succeeded' === $notification->type || 'payment_intent.amount_capturable_updated' === $notification->type ) { |
|
662 | - $charge = end( $intent->charges->data ); |
|
663 | - WC_Stripe_Logger::log( "Stripe PaymentIntent $intent->id succeeded for order $order_id" ); |
|
661 | + if ('payment_intent.succeeded' === $notification->type || 'payment_intent.amount_capturable_updated' === $notification->type) { |
|
662 | + $charge = end($intent->charges->data); |
|
663 | + WC_Stripe_Logger::log("Stripe PaymentIntent $intent->id succeeded for order $order_id"); |
|
664 | 664 | |
665 | - do_action( 'wc_gateway_stripe_process_payment', $charge, $order ); |
|
665 | + do_action('wc_gateway_stripe_process_payment', $charge, $order); |
|
666 | 666 | |
667 | 667 | // Process valid response. |
668 | - $this->process_response( $charge, $order ); |
|
668 | + $this->process_response($charge, $order); |
|
669 | 669 | |
670 | 670 | } else { |
671 | 671 | $error_message = $intent->last_payment_error ? $intent->last_payment_error->message : ""; |
672 | 672 | |
673 | 673 | /* translators: 1) The error message that was received from Stripe. */ |
674 | - $order->update_status( 'failed', sprintf( __( 'Stripe SCA authentication failed. Reason: %s', 'woocommerce-gateway-stripe' ), $error_message ) ); |
|
674 | + $order->update_status('failed', sprintf(__('Stripe SCA authentication failed. Reason: %s', 'woocommerce-gateway-stripe'), $error_message)); |
|
675 | 675 | |
676 | - do_action( 'wc_gateway_stripe_process_webhook_payment_error', $order, $notification ); |
|
676 | + do_action('wc_gateway_stripe_process_webhook_payment_error', $order, $notification); |
|
677 | 677 | |
678 | - $this->send_failed_order_email( $order_id ); |
|
678 | + $this->send_failed_order_email($order_id); |
|
679 | 679 | } |
680 | 680 | |
681 | - $this->unlock_order_payment( $order ); |
|
681 | + $this->unlock_order_payment($order); |
|
682 | 682 | } |
683 | 683 | |
684 | - public function process_setup_intent( $notification ) { |
|
684 | + public function process_setup_intent($notification) { |
|
685 | 685 | $intent = $notification->data->object; |
686 | - $order = WC_Stripe_Helper::get_order_by_setup_intent_id( $intent->id ); |
|
686 | + $order = WC_Stripe_Helper::get_order_by_setup_intent_id($intent->id); |
|
687 | 687 | |
688 | - if ( ! $order ) { |
|
689 | - WC_Stripe_Logger::log( 'Could not find order via setup intent ID: ' . $intent->id ); |
|
688 | + if ( ! $order) { |
|
689 | + WC_Stripe_Logger::log('Could not find order via setup intent ID: ' . $intent->id); |
|
690 | 690 | return; |
691 | 691 | } |
692 | 692 | |
693 | - if ( ! $order->has_status( array( 'pending', 'failed' ) ) ) { |
|
693 | + if ( ! $order->has_status(array('pending', 'failed'))) { |
|
694 | 694 | return; |
695 | 695 | } |
696 | 696 | |
697 | - if ( $this->lock_order_payment( $order, $intent ) ) { |
|
697 | + if ($this->lock_order_payment($order, $intent)) { |
|
698 | 698 | return; |
699 | 699 | } |
700 | 700 | |
701 | 701 | $order_id = $order->get_id(); |
702 | - if ( 'setup_intent.succeeded' === $notification->type ) { |
|
703 | - WC_Stripe_Logger::log( "Stripe SetupIntent $intent->id succeeded for order $order_id" ); |
|
704 | - if ( WC_Stripe_Helper::is_pre_orders_exists() && WC_Pre_Orders_Order::order_contains_pre_order( $order ) ) { |
|
705 | - WC_Pre_Orders_Order::mark_order_as_pre_ordered( $order ); |
|
702 | + if ('setup_intent.succeeded' === $notification->type) { |
|
703 | + WC_Stripe_Logger::log("Stripe SetupIntent $intent->id succeeded for order $order_id"); |
|
704 | + if (WC_Stripe_Helper::is_pre_orders_exists() && WC_Pre_Orders_Order::order_contains_pre_order($order)) { |
|
705 | + WC_Pre_Orders_Order::mark_order_as_pre_ordered($order); |
|
706 | 706 | } else { |
707 | 707 | $order->payment_complete(); |
708 | 708 | } |
@@ -710,12 +710,12 @@ discard block |
||
710 | 710 | $error_message = $intent->last_setup_error ? $intent->last_setup_error->message : ""; |
711 | 711 | |
712 | 712 | /* translators: 1) The error message that was received from Stripe. */ |
713 | - $order->update_status( 'failed', sprintf( __( 'Stripe SCA authentication failed. Reason: %s', 'woocommerce-gateway-stripe' ), $error_message ) ); |
|
713 | + $order->update_status('failed', sprintf(__('Stripe SCA authentication failed. Reason: %s', 'woocommerce-gateway-stripe'), $error_message)); |
|
714 | 714 | |
715 | - $this->send_failed_order_email( $order_id ); |
|
715 | + $this->send_failed_order_email($order_id); |
|
716 | 716 | } |
717 | 717 | |
718 | - $this->unlock_order_payment( $order ); |
|
718 | + $this->unlock_order_payment($order); |
|
719 | 719 | } |
720 | 720 | |
721 | 721 | /** |
@@ -725,55 +725,55 @@ discard block |
||
725 | 725 | * @version 4.0.0 |
726 | 726 | * @param string $request_body |
727 | 727 | */ |
728 | - public function process_webhook( $request_body ) { |
|
729 | - $notification = json_decode( $request_body ); |
|
728 | + public function process_webhook($request_body) { |
|
729 | + $notification = json_decode($request_body); |
|
730 | 730 | |
731 | - switch ( $notification->type ) { |
|
731 | + switch ($notification->type) { |
|
732 | 732 | case 'source.chargeable': |
733 | - $this->process_webhook_payment( $notification ); |
|
733 | + $this->process_webhook_payment($notification); |
|
734 | 734 | break; |
735 | 735 | |
736 | 736 | case 'source.canceled': |
737 | - $this->process_webhook_source_canceled( $notification ); |
|
737 | + $this->process_webhook_source_canceled($notification); |
|
738 | 738 | break; |
739 | 739 | |
740 | 740 | case 'charge.succeeded': |
741 | - $this->process_webhook_charge_succeeded( $notification ); |
|
741 | + $this->process_webhook_charge_succeeded($notification); |
|
742 | 742 | break; |
743 | 743 | |
744 | 744 | case 'charge.failed': |
745 | - $this->process_webhook_charge_failed( $notification ); |
|
745 | + $this->process_webhook_charge_failed($notification); |
|
746 | 746 | break; |
747 | 747 | |
748 | 748 | case 'charge.captured': |
749 | - $this->process_webhook_capture( $notification ); |
|
749 | + $this->process_webhook_capture($notification); |
|
750 | 750 | break; |
751 | 751 | |
752 | 752 | case 'charge.dispute.created': |
753 | - $this->process_webhook_dispute( $notification ); |
|
753 | + $this->process_webhook_dispute($notification); |
|
754 | 754 | break; |
755 | 755 | |
756 | 756 | case 'charge.refunded': |
757 | - $this->process_webhook_refund( $notification ); |
|
757 | + $this->process_webhook_refund($notification); |
|
758 | 758 | break; |
759 | 759 | |
760 | 760 | case 'review.opened': |
761 | - $this->process_review_opened( $notification ); |
|
761 | + $this->process_review_opened($notification); |
|
762 | 762 | break; |
763 | 763 | |
764 | 764 | case 'review.closed': |
765 | - $this->process_review_closed( $notification ); |
|
765 | + $this->process_review_closed($notification); |
|
766 | 766 | break; |
767 | 767 | |
768 | 768 | case 'payment_intent.succeeded': |
769 | 769 | case 'payment_intent.payment_failed': |
770 | 770 | case 'payment_intent.amount_capturable_updated': |
771 | - $this->process_payment_intent_success( $notification ); |
|
771 | + $this->process_payment_intent_success($notification); |
|
772 | 772 | break; |
773 | 773 | |
774 | 774 | case 'setup_intent.succeeded': |
775 | 775 | case 'setup_intent.setup_failed': |
776 | - $this->process_setup_intent( $notification ); |
|
776 | + $this->process_setup_intent($notification); |
|
777 | 777 | |
778 | 778 | } |
779 | 779 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -15,21 +15,21 @@ discard block |
||
15 | 15 | public function __construct() { |
16 | 16 | parent::__construct(); |
17 | 17 | |
18 | - if ( class_exists( 'WC_Subscriptions_Order' ) ) { |
|
19 | - add_action( 'woocommerce_scheduled_subscription_payment_' . $this->id, array( $this, 'scheduled_subscription_payment' ), 10, 2 ); |
|
20 | - add_action( 'wcs_resubscribe_order_created', array( $this, 'delete_resubscribe_meta' ), 10 ); |
|
21 | - add_action( 'wcs_renewal_order_created', array( $this, 'delete_renewal_meta' ), 10 ); |
|
22 | - add_action( 'woocommerce_subscription_failing_payment_method_updated_stripe', array( $this, 'update_failing_payment_method' ), 10, 2 ); |
|
23 | - add_action( 'wc_stripe_cards_payment_fields', array( $this, 'display_update_subs_payment_checkout' ) ); |
|
24 | - add_action( 'wc_stripe_add_payment_method_' . $this->id . '_success', array( $this, 'handle_add_payment_method_success' ), 10, 2 ); |
|
18 | + if (class_exists('WC_Subscriptions_Order')) { |
|
19 | + add_action('woocommerce_scheduled_subscription_payment_' . $this->id, array($this, 'scheduled_subscription_payment'), 10, 2); |
|
20 | + add_action('wcs_resubscribe_order_created', array($this, 'delete_resubscribe_meta'), 10); |
|
21 | + add_action('wcs_renewal_order_created', array($this, 'delete_renewal_meta'), 10); |
|
22 | + add_action('woocommerce_subscription_failing_payment_method_updated_stripe', array($this, 'update_failing_payment_method'), 10, 2); |
|
23 | + add_action('wc_stripe_cards_payment_fields', array($this, 'display_update_subs_payment_checkout')); |
|
24 | + add_action('wc_stripe_add_payment_method_' . $this->id . '_success', array($this, 'handle_add_payment_method_success'), 10, 2); |
|
25 | 25 | |
26 | 26 | // display the credit card used for a subscription in the "My Subscriptions" table |
27 | - add_filter( 'woocommerce_my_subscriptions_payment_method', array( $this, 'maybe_render_subscription_payment_method' ), 10, 2 ); |
|
27 | + add_filter('woocommerce_my_subscriptions_payment_method', array($this, 'maybe_render_subscription_payment_method'), 10, 2); |
|
28 | 28 | |
29 | 29 | // allow store managers to manually set Stripe as the payment method on a subscription |
30 | - add_filter( 'woocommerce_subscription_payment_meta', array( $this, 'add_subscription_payment_meta' ), 10, 2 ); |
|
31 | - add_filter( 'woocommerce_subscription_validate_payment_meta', array( $this, 'validate_subscription_payment_meta' ), 10, 2 ); |
|
32 | - add_filter( 'wc_stripe_display_save_payment_method_checkbox', array( $this, 'maybe_hide_save_checkbox' ) ); |
|
30 | + add_filter('woocommerce_subscription_payment_meta', array($this, 'add_subscription_payment_meta'), 10, 2); |
|
31 | + add_filter('woocommerce_subscription_validate_payment_meta', array($this, 'validate_subscription_payment_meta'), 10, 2); |
|
32 | + add_filter('wc_stripe_display_save_payment_method_checkbox', array($this, 'maybe_hide_save_checkbox')); |
|
33 | 33 | |
34 | 34 | /* |
35 | 35 | * WC subscriptions hooks into the "template_redirect" hook with priority 100. |
@@ -37,8 +37,8 @@ discard block |
||
37 | 37 | * See: https://github.com/woocommerce/woocommerce-subscriptions/blob/99a75687e109b64cbc07af6e5518458a6305f366/includes/class-wcs-cart-renewal.php#L165 |
38 | 38 | * If we are in the "You just need to authorize SCA" flow, we don't want that redirection to happen. |
39 | 39 | */ |
40 | - add_action( 'template_redirect', array( $this, 'remove_order_pay_var' ), 99 ); |
|
41 | - add_action( 'template_redirect', array( $this, 'restore_order_pay_var' ), 101 ); |
|
40 | + add_action('template_redirect', array($this, 'remove_order_pay_var'), 99); |
|
41 | + add_action('template_redirect', array($this, 'restore_order_pay_var'), 101); |
|
42 | 42 | } |
43 | 43 | } |
44 | 44 | |
@@ -49,8 +49,8 @@ discard block |
||
49 | 49 | * @since 4.0.0 |
50 | 50 | * @version 4.0.0 |
51 | 51 | */ |
52 | - public function maybe_hide_save_checkbox( $display_tokenization ) { |
|
53 | - if ( WC_Subscriptions_Cart::cart_contains_subscription() ) { |
|
52 | + public function maybe_hide_save_checkbox($display_tokenization) { |
|
53 | + if (WC_Subscriptions_Cart::cart_contains_subscription()) { |
|
54 | 54 | return false; |
55 | 55 | } |
56 | 56 | |
@@ -62,8 +62,8 @@ discard block |
||
62 | 62 | * @param int $order_id |
63 | 63 | * @return boolean |
64 | 64 | */ |
65 | - public function has_subscription( $order_id ) { |
|
66 | - return ( function_exists( 'wcs_order_contains_subscription' ) && ( wcs_order_contains_subscription( $order_id ) || wcs_is_subscription( $order_id ) || wcs_order_contains_renewal( $order_id ) ) ); |
|
65 | + public function has_subscription($order_id) { |
|
66 | + return (function_exists('wcs_order_contains_subscription') && (wcs_order_contains_subscription($order_id) || wcs_is_subscription($order_id) || wcs_order_contains_renewal($order_id))); |
|
67 | 67 | } |
68 | 68 | |
69 | 69 | /** |
@@ -73,7 +73,7 @@ discard block |
||
73 | 73 | * @return bool |
74 | 74 | */ |
75 | 75 | public function is_subs_change_payment() { |
76 | - return ( isset( $_GET['pay_for_order'] ) && isset( $_GET['change_payment_method'] ) ); |
|
76 | + return (isset($_GET['pay_for_order']) && isset($_GET['change_payment_method'])); |
|
77 | 77 | } |
78 | 78 | |
79 | 79 | /** |
@@ -83,20 +83,20 @@ discard block |
||
83 | 83 | * @since 4.1.11 |
84 | 84 | */ |
85 | 85 | public function display_update_subs_payment_checkout() { |
86 | - $subs_statuses = apply_filters( 'wc_stripe_update_subs_payment_method_card_statuses', array( 'active' ) ); |
|
86 | + $subs_statuses = apply_filters('wc_stripe_update_subs_payment_method_card_statuses', array('active')); |
|
87 | 87 | if ( |
88 | - apply_filters( 'wc_stripe_display_update_subs_payment_method_card_checkbox', true ) && |
|
89 | - wcs_user_has_subscription( get_current_user_id(), '', $subs_statuses ) && |
|
88 | + apply_filters('wc_stripe_display_update_subs_payment_method_card_checkbox', true) && |
|
89 | + wcs_user_has_subscription(get_current_user_id(), '', $subs_statuses) && |
|
90 | 90 | is_add_payment_method_page() |
91 | 91 | ) { |
92 | - $label = esc_html( apply_filters( 'wc_stripe_save_to_subs_text', __( 'Update the Payment Method used for all of my active subscriptions.', 'woocommerce-gateway-stripe' ) ) ); |
|
93 | - $id = sprintf( 'wc-%1$s-update-subs-payment-method-card', $this->id ); |
|
92 | + $label = esc_html(apply_filters('wc_stripe_save_to_subs_text', __('Update the Payment Method used for all of my active subscriptions.', 'woocommerce-gateway-stripe'))); |
|
93 | + $id = sprintf('wc-%1$s-update-subs-payment-method-card', $this->id); |
|
94 | 94 | woocommerce_form_field( |
95 | 95 | $id, |
96 | 96 | array( |
97 | 97 | 'type' => 'checkbox', |
98 | 98 | 'label' => $label, |
99 | - 'default' => apply_filters( 'wc_stripe_save_to_subs_checked', false ), |
|
99 | + 'default' => apply_filters('wc_stripe_save_to_subs_checked', false), |
|
100 | 100 | ) |
101 | 101 | ); |
102 | 102 | } |
@@ -109,19 +109,19 @@ discard block |
||
109 | 109 | * @param string $source_id |
110 | 110 | * @param object $source_object |
111 | 111 | */ |
112 | - public function handle_add_payment_method_success( $source_id, $source_object ) { |
|
113 | - if ( isset( $_POST[ 'wc-' . $this->id . '-update-subs-payment-method-card' ] ) ) { |
|
112 | + public function handle_add_payment_method_success($source_id, $source_object) { |
|
113 | + if (isset($_POST['wc-' . $this->id . '-update-subs-payment-method-card'])) { |
|
114 | 114 | $all_subs = wcs_get_users_subscriptions(); |
115 | - $subs_statuses = apply_filters( 'wc_stripe_update_subs_payment_method_card_statuses', array( 'active' ) ); |
|
116 | - $stripe_customer = new WC_Stripe_Customer( get_current_user_id() ); |
|
117 | - |
|
118 | - if ( ! empty( $all_subs ) ) { |
|
119 | - foreach ( $all_subs as $sub ) { |
|
120 | - if ( $sub->has_status( $subs_statuses ) ) { |
|
121 | - update_post_meta( $sub->get_id(), '_stripe_source_id', $source_id ); |
|
122 | - update_post_meta( $sub->get_id(), '_stripe_customer_id', $stripe_customer->get_id() ); |
|
123 | - update_post_meta( $sub->get_id(), '_payment_method', $this->id ); |
|
124 | - update_post_meta( $sub->get_id(), '_payment_method_title', $this->method_title ); |
|
115 | + $subs_statuses = apply_filters('wc_stripe_update_subs_payment_method_card_statuses', array('active')); |
|
116 | + $stripe_customer = new WC_Stripe_Customer(get_current_user_id()); |
|
117 | + |
|
118 | + if ( ! empty($all_subs)) { |
|
119 | + foreach ($all_subs as $sub) { |
|
120 | + if ($sub->has_status($subs_statuses)) { |
|
121 | + update_post_meta($sub->get_id(), '_stripe_source_id', $source_id); |
|
122 | + update_post_meta($sub->get_id(), '_stripe_customer_id', $stripe_customer->get_id()); |
|
123 | + update_post_meta($sub->get_id(), '_payment_method', $this->id); |
|
124 | + update_post_meta($sub->get_id(), '_payment_method_title', $this->method_title); |
|
125 | 125 | } |
126 | 126 | } |
127 | 127 | } |
@@ -135,24 +135,24 @@ discard block |
||
135 | 135 | * @since 4.1.11 Remove 3DS check as it is not needed. |
136 | 136 | * @param int $order_id |
137 | 137 | */ |
138 | - public function change_subs_payment_method( $order_id ) { |
|
138 | + public function change_subs_payment_method($order_id) { |
|
139 | 139 | try { |
140 | - $subscription = wc_get_order( $order_id ); |
|
141 | - $prepared_source = $this->prepare_source( get_current_user_id(), true ); |
|
140 | + $subscription = wc_get_order($order_id); |
|
141 | + $prepared_source = $this->prepare_source(get_current_user_id(), true); |
|
142 | 142 | |
143 | - $this->maybe_disallow_prepaid_card( $prepared_source ); |
|
144 | - $this->check_source( $prepared_source ); |
|
145 | - $this->save_source_to_order( $subscription, $prepared_source ); |
|
143 | + $this->maybe_disallow_prepaid_card($prepared_source); |
|
144 | + $this->check_source($prepared_source); |
|
145 | + $this->save_source_to_order($subscription, $prepared_source); |
|
146 | 146 | |
147 | - do_action( 'wc_stripe_change_subs_payment_method_success', $prepared_source->source, $prepared_source ); |
|
147 | + do_action('wc_stripe_change_subs_payment_method_success', $prepared_source->source, $prepared_source); |
|
148 | 148 | |
149 | 149 | return array( |
150 | 150 | 'result' => 'success', |
151 | - 'redirect' => $this->get_return_url( $subscription ), |
|
151 | + 'redirect' => $this->get_return_url($subscription), |
|
152 | 152 | ); |
153 | - } catch ( WC_Stripe_Exception $e ) { |
|
154 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
155 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
153 | + } catch (WC_Stripe_Exception $e) { |
|
154 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
155 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
156 | 156 | } |
157 | 157 | } |
158 | 158 | |
@@ -161,16 +161,16 @@ discard block |
||
161 | 161 | * @param int $order_id |
162 | 162 | * @return array |
163 | 163 | */ |
164 | - public function process_payment( $order_id, $retry = true, $force_save_source = false, $previous_error = false, $use_order_source = false ) { |
|
165 | - if ( $this->has_subscription( $order_id ) ) { |
|
166 | - if ( $this->is_subs_change_payment() ) { |
|
167 | - return $this->change_subs_payment_method( $order_id ); |
|
164 | + public function process_payment($order_id, $retry = true, $force_save_source = false, $previous_error = false, $use_order_source = false) { |
|
165 | + if ($this->has_subscription($order_id)) { |
|
166 | + if ($this->is_subs_change_payment()) { |
|
167 | + return $this->change_subs_payment_method($order_id); |
|
168 | 168 | } |
169 | 169 | |
170 | 170 | // Regular payment with force customer enabled |
171 | - return parent::process_payment( $order_id, $retry, true, $previous_error, $use_order_source ); |
|
171 | + return parent::process_payment($order_id, $retry, true, $previous_error, $use_order_source); |
|
172 | 172 | } else { |
173 | - return parent::process_payment( $order_id, $retry, $force_save_source, $previous_error, $use_order_source ); |
|
173 | + return parent::process_payment($order_id, $retry, $force_save_source, $previous_error, $use_order_source); |
|
174 | 174 | } |
175 | 175 | } |
176 | 176 | |
@@ -182,11 +182,11 @@ discard block |
||
182 | 182 | * @param object $prepared_source The source that is used for the payment. |
183 | 183 | * @return array The arguments for the request. |
184 | 184 | */ |
185 | - public function generate_create_intent_request( $order, $prepared_source ) { |
|
186 | - $request = parent::generate_create_intent_request( $order, $prepared_source ); |
|
185 | + public function generate_create_intent_request($order, $prepared_source) { |
|
186 | + $request = parent::generate_create_intent_request($order, $prepared_source); |
|
187 | 187 | |
188 | 188 | // Non-subscription orders do not need any additional parameters. |
189 | - if ( ! $this->has_subscription( $order ) ) { |
|
189 | + if ( ! $this->has_subscription($order)) { |
|
190 | 190 | return $request; |
191 | 191 | } |
192 | 192 | |
@@ -202,8 +202,8 @@ discard block |
||
202 | 202 | * @param $amount_to_charge float The amount to charge. |
203 | 203 | * @param $renewal_order WC_Order A WC_Order object created to record the renewal payment. |
204 | 204 | */ |
205 | - public function scheduled_subscription_payment( $amount_to_charge, $renewal_order ) { |
|
206 | - $this->process_subscription_payment( $amount_to_charge, $renewal_order, true, false ); |
|
205 | + public function scheduled_subscription_payment($amount_to_charge, $renewal_order) { |
|
206 | + $this->process_subscription_payment($amount_to_charge, $renewal_order, true, false); |
|
207 | 207 | } |
208 | 208 | |
209 | 209 | /** |
@@ -217,11 +217,11 @@ discard block |
||
217 | 217 | * @param bool $retry Should we retry the process? |
218 | 218 | * @param object $previous_error |
219 | 219 | */ |
220 | - public function process_subscription_payment( $amount = 0.0, $renewal_order, $retry = true, $previous_error ) { |
|
220 | + public function process_subscription_payment($amount = 0.0, $renewal_order, $retry = true, $previous_error) { |
|
221 | 221 | try { |
222 | - if ( $amount * 100 < WC_Stripe_Helper::get_minimum_amount() ) { |
|
222 | + if ($amount * 100 < WC_Stripe_Helper::get_minimum_amount()) { |
|
223 | 223 | /* translators: minimum amount */ |
224 | - $message = sprintf( __( 'Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( WC_Stripe_Helper::get_minimum_amount() / 100 ) ); |
|
224 | + $message = sprintf(__('Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe'), wc_price(WC_Stripe_Helper::get_minimum_amount() / 100)); |
|
225 | 225 | throw new WC_Stripe_Exception( |
226 | 226 | 'Error while processing renewal order ' . $renewal_order->get_id() . ' : ' . $message, |
227 | 227 | $message |
@@ -230,141 +230,141 @@ discard block |
||
230 | 230 | |
231 | 231 | $order_id = $renewal_order->get_id(); |
232 | 232 | |
233 | - $this->ensure_subscription_has_customer_id( $order_id ); |
|
233 | + $this->ensure_subscription_has_customer_id($order_id); |
|
234 | 234 | |
235 | 235 | // Unlike regular off-session subscription payments, early renewals are treated as on-session payments, involving the customer. |
236 | - if ( isset( $_REQUEST['process_early_renewal'] ) ) { // wpcs: csrf ok. |
|
237 | - $response = parent::process_payment( $order_id, true, false, $previous_error, true ); |
|
236 | + if (isset($_REQUEST['process_early_renewal'])) { // wpcs: csrf ok. |
|
237 | + $response = parent::process_payment($order_id, true, false, $previous_error, true); |
|
238 | 238 | |
239 | - if( 'success' === $response['result'] && isset( $response['payment_intent_secret'] ) ) { |
|
239 | + if ('success' === $response['result'] && isset($response['payment_intent_secret'])) { |
|
240 | 240 | $verification_url = add_query_arg( |
241 | 241 | array( |
242 | 242 | 'order' => $order_id, |
243 | - 'nonce' => wp_create_nonce( 'wc_stripe_confirm_pi' ), |
|
244 | - 'redirect_to' => remove_query_arg( array( 'process_early_renewal', 'subscription_id', 'wcs_nonce' ) ), |
|
243 | + 'nonce' => wp_create_nonce('wc_stripe_confirm_pi'), |
|
244 | + 'redirect_to' => remove_query_arg(array('process_early_renewal', 'subscription_id', 'wcs_nonce')), |
|
245 | 245 | 'early_renewal' => true, |
246 | 246 | ), |
247 | - WC_AJAX::get_endpoint( 'wc_stripe_verify_intent' ) |
|
247 | + WC_AJAX::get_endpoint('wc_stripe_verify_intent') |
|
248 | 248 | ); |
249 | 249 | |
250 | - echo wp_json_encode( array( |
|
250 | + echo wp_json_encode(array( |
|
251 | 251 | 'stripe_sca_required' => true, |
252 | 252 | 'intent_secret' => $response['payment_intent_secret'], |
253 | 253 | 'redirect_url' => $verification_url, |
254 | - ) ); |
|
254 | + )); |
|
255 | 255 | |
256 | 256 | exit; |
257 | 257 | } |
258 | 258 | |
259 | 259 | // Hijack all other redirects in order to do the redirection in JavaScript. |
260 | - add_action( 'wp_redirect', array( $this, 'redirect_after_early_renewal' ), 100 ); |
|
260 | + add_action('wp_redirect', array($this, 'redirect_after_early_renewal'), 100); |
|
261 | 261 | |
262 | 262 | return; |
263 | 263 | } |
264 | 264 | |
265 | 265 | // Check for an existing intent, which is associated with the order. |
266 | - if ( $this->has_authentication_already_failed( $renewal_order ) ) { |
|
266 | + if ($this->has_authentication_already_failed($renewal_order)) { |
|
267 | 267 | return; |
268 | 268 | } |
269 | 269 | |
270 | 270 | // Get source from order |
271 | - $prepared_source = $this->prepare_order_source( $renewal_order ); |
|
271 | + $prepared_source = $this->prepare_order_source($renewal_order); |
|
272 | 272 | $source_object = $prepared_source->source_object; |
273 | 273 | |
274 | - if ( ! $prepared_source->customer ) { |
|
274 | + if ( ! $prepared_source->customer) { |
|
275 | 275 | throw new WC_Stripe_Exception( |
276 | 276 | 'Failed to process renewal for order ' . $renewal_order->get_id() . '. Stripe customer id is missing in the order', |
277 | - __( 'Customer not found', 'woocommerce-gateway-stripe' ) |
|
277 | + __('Customer not found', 'woocommerce-gateway-stripe') |
|
278 | 278 | ); |
279 | 279 | } |
280 | 280 | |
281 | - WC_Stripe_Logger::log( "Info: Begin processing subscription payment for order {$order_id} for the amount of {$amount}" ); |
|
281 | + WC_Stripe_Logger::log("Info: Begin processing subscription payment for order {$order_id} for the amount of {$amount}"); |
|
282 | 282 | |
283 | 283 | /* If we're doing a retry and source is chargeable, we need to pass |
284 | 284 | * a different idempotency key and retry for success. |
285 | 285 | */ |
286 | - if ( is_object( $source_object ) && empty( $source_object->error ) && $this->need_update_idempotency_key( $source_object, $previous_error ) ) { |
|
287 | - add_filter( 'wc_stripe_idempotency_key', array( $this, 'change_idempotency_key' ), 10, 2 ); |
|
286 | + if (is_object($source_object) && empty($source_object->error) && $this->need_update_idempotency_key($source_object, $previous_error)) { |
|
287 | + add_filter('wc_stripe_idempotency_key', array($this, 'change_idempotency_key'), 10, 2); |
|
288 | 288 | } |
289 | 289 | |
290 | - if ( ( $this->is_no_such_source_error( $previous_error ) || $this->is_no_linked_source_error( $previous_error ) ) && apply_filters( 'wc_stripe_use_default_customer_source', true ) ) { |
|
290 | + if (($this->is_no_such_source_error($previous_error) || $this->is_no_linked_source_error($previous_error)) && apply_filters('wc_stripe_use_default_customer_source', true)) { |
|
291 | 291 | // Passing empty source will charge customer default. |
292 | 292 | $prepared_source->source = ''; |
293 | 293 | } |
294 | 294 | |
295 | - $this->lock_order_payment( $renewal_order ); |
|
295 | + $this->lock_order_payment($renewal_order); |
|
296 | 296 | |
297 | - $response = $this->create_and_confirm_intent_for_off_session( $renewal_order, $prepared_source, $amount ); |
|
298 | - $is_authentication_required = $this->is_authentication_required_for_payment( $response ); |
|
297 | + $response = $this->create_and_confirm_intent_for_off_session($renewal_order, $prepared_source, $amount); |
|
298 | + $is_authentication_required = $this->is_authentication_required_for_payment($response); |
|
299 | 299 | |
300 | 300 | // It's only a failed payment if it's an error and it's not of the type 'authentication_required'. |
301 | 301 | // If it's 'authentication_required', then we should email the user and ask them to authenticate. |
302 | - if ( ! empty( $response->error ) && ! $is_authentication_required ) { |
|
302 | + if ( ! empty($response->error) && ! $is_authentication_required) { |
|
303 | 303 | // We want to retry. |
304 | - if ( $this->is_retryable_error( $response->error ) ) { |
|
305 | - if ( $retry ) { |
|
304 | + if ($this->is_retryable_error($response->error)) { |
|
305 | + if ($retry) { |
|
306 | 306 | // Don't do anymore retries after this. |
307 | - if ( 5 <= $this->retry_interval ) { |
|
308 | - return $this->process_subscription_payment( $amount, $renewal_order, false, $response->error ); |
|
307 | + if (5 <= $this->retry_interval) { |
|
308 | + return $this->process_subscription_payment($amount, $renewal_order, false, $response->error); |
|
309 | 309 | } |
310 | 310 | |
311 | - sleep( $this->retry_interval ); |
|
311 | + sleep($this->retry_interval); |
|
312 | 312 | |
313 | 313 | $this->retry_interval++; |
314 | 314 | |
315 | - return $this->process_subscription_payment( $amount, $renewal_order, true, $response->error ); |
|
315 | + return $this->process_subscription_payment($amount, $renewal_order, true, $response->error); |
|
316 | 316 | } else { |
317 | - $localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' ); |
|
318 | - $renewal_order->add_order_note( $localized_message ); |
|
319 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
317 | + $localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe'); |
|
318 | + $renewal_order->add_order_note($localized_message); |
|
319 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
320 | 320 | } |
321 | 321 | } |
322 | 322 | |
323 | 323 | $localized_messages = WC_Stripe_Helper::get_localized_messages(); |
324 | 324 | |
325 | - if ( 'card_error' === $response->error->type ) { |
|
326 | - $localized_message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message; |
|
325 | + if ('card_error' === $response->error->type) { |
|
326 | + $localized_message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message; |
|
327 | 327 | } else { |
328 | - $localized_message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message; |
|
328 | + $localized_message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message; |
|
329 | 329 | } |
330 | 330 | |
331 | - $renewal_order->add_order_note( $localized_message ); |
|
331 | + $renewal_order->add_order_note($localized_message); |
|
332 | 332 | |
333 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
333 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
334 | 334 | } |
335 | 335 | |
336 | 336 | // Either the charge was successfully captured, or it requires further authentication. |
337 | 337 | |
338 | - if ( $is_authentication_required ) { |
|
339 | - do_action( 'wc_gateway_stripe_process_payment_authentication_required', $renewal_order, $response ); |
|
338 | + if ($is_authentication_required) { |
|
339 | + do_action('wc_gateway_stripe_process_payment_authentication_required', $renewal_order, $response); |
|
340 | 340 | |
341 | - $error_message = __( 'This transaction requires authentication.', 'woocommerce-gateway-stripe' ); |
|
342 | - $renewal_order->add_order_note( $error_message ); |
|
341 | + $error_message = __('This transaction requires authentication.', 'woocommerce-gateway-stripe'); |
|
342 | + $renewal_order->add_order_note($error_message); |
|
343 | 343 | |
344 | - $charge = end( $response->error->payment_intent->charges->data ); |
|
344 | + $charge = end($response->error->payment_intent->charges->data); |
|
345 | 345 | $id = $charge->id; |
346 | 346 | $order_id = $renewal_order->get_id(); |
347 | 347 | |
348 | - $renewal_order->set_transaction_id( $id ); |
|
349 | - $renewal_order->update_status( 'failed', sprintf( __( 'Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe' ), $id ) ); |
|
350 | - if ( is_callable( array( $renewal_order, 'save' ) ) ) { |
|
348 | + $renewal_order->set_transaction_id($id); |
|
349 | + $renewal_order->update_status('failed', sprintf(__('Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe'), $id)); |
|
350 | + if (is_callable(array($renewal_order, 'save'))) { |
|
351 | 351 | $renewal_order->save(); |
352 | 352 | } |
353 | 353 | } else { |
354 | 354 | // The charge was successfully captured |
355 | - do_action( 'wc_gateway_stripe_process_payment', $response, $renewal_order ); |
|
355 | + do_action('wc_gateway_stripe_process_payment', $response, $renewal_order); |
|
356 | 356 | |
357 | - $this->process_response( end( $response->charges->data ), $renewal_order ); |
|
357 | + $this->process_response(end($response->charges->data), $renewal_order); |
|
358 | 358 | } |
359 | 359 | |
360 | - $this->unlock_order_payment( $renewal_order ); |
|
361 | - } catch ( WC_Stripe_Exception $e ) { |
|
362 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
360 | + $this->unlock_order_payment($renewal_order); |
|
361 | + } catch (WC_Stripe_Exception $e) { |
|
362 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
363 | 363 | |
364 | - do_action( 'wc_gateway_stripe_process_payment_error', $e, $renewal_order ); |
|
364 | + do_action('wc_gateway_stripe_process_payment_error', $e, $renewal_order); |
|
365 | 365 | |
366 | 366 | /* translators: error message */ |
367 | - $renewal_order->update_status( 'failed' ); |
|
367 | + $renewal_order->update_status('failed'); |
|
368 | 368 | } |
369 | 369 | } |
370 | 370 | |
@@ -374,24 +374,24 @@ discard block |
||
374 | 374 | * @since 3.1.0 |
375 | 375 | * @version 4.0.0 |
376 | 376 | */ |
377 | - public function save_source_to_order( $order, $source ) { |
|
378 | - parent::save_source_to_order( $order, $source ); |
|
377 | + public function save_source_to_order($order, $source) { |
|
378 | + parent::save_source_to_order($order, $source); |
|
379 | 379 | |
380 | 380 | $order_id = $order->get_id(); |
381 | 381 | |
382 | 382 | // Also store it on the subscriptions being purchased or paid for in the order |
383 | - if ( function_exists( 'wcs_order_contains_subscription' ) && wcs_order_contains_subscription( $order_id ) ) { |
|
384 | - $subscriptions = wcs_get_subscriptions_for_order( $order_id ); |
|
385 | - } elseif ( function_exists( 'wcs_order_contains_renewal' ) && wcs_order_contains_renewal( $order_id ) ) { |
|
386 | - $subscriptions = wcs_get_subscriptions_for_renewal_order( $order_id ); |
|
383 | + if (function_exists('wcs_order_contains_subscription') && wcs_order_contains_subscription($order_id)) { |
|
384 | + $subscriptions = wcs_get_subscriptions_for_order($order_id); |
|
385 | + } elseif (function_exists('wcs_order_contains_renewal') && wcs_order_contains_renewal($order_id)) { |
|
386 | + $subscriptions = wcs_get_subscriptions_for_renewal_order($order_id); |
|
387 | 387 | } else { |
388 | 388 | $subscriptions = array(); |
389 | 389 | } |
390 | 390 | |
391 | - foreach ( $subscriptions as $subscription ) { |
|
391 | + foreach ($subscriptions as $subscription) { |
|
392 | 392 | $subscription_id = $subscription->get_id(); |
393 | - update_post_meta( $subscription_id, '_stripe_customer_id', $source->customer ); |
|
394 | - update_post_meta( $subscription_id, '_stripe_source_id', $source->source ); |
|
393 | + update_post_meta($subscription_id, '_stripe_customer_id', $source->customer); |
|
394 | + update_post_meta($subscription_id, '_stripe_source_id', $source->source); |
|
395 | 395 | } |
396 | 396 | } |
397 | 397 | |
@@ -399,26 +399,26 @@ discard block |
||
399 | 399 | * Don't transfer Stripe customer/token meta to resubscribe orders. |
400 | 400 | * @param int $resubscribe_order The order created for the customer to resubscribe to the old expired/cancelled subscription |
401 | 401 | */ |
402 | - public function delete_resubscribe_meta( $resubscribe_order ) { |
|
403 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_customer_id' ); |
|
404 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_source_id' ); |
|
402 | + public function delete_resubscribe_meta($resubscribe_order) { |
|
403 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_customer_id'); |
|
404 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_source_id'); |
|
405 | 405 | // For BW compat will remove in future |
406 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_card_id' ); |
|
406 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_card_id'); |
|
407 | 407 | // delete payment intent ID |
408 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_intent_id' ); |
|
409 | - $this->delete_renewal_meta( $resubscribe_order ); |
|
408 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_intent_id'); |
|
409 | + $this->delete_renewal_meta($resubscribe_order); |
|
410 | 410 | } |
411 | 411 | |
412 | 412 | /** |
413 | 413 | * Don't transfer Stripe fee/ID meta to renewal orders. |
414 | 414 | * @param int $resubscribe_order The order created for the customer to resubscribe to the old expired/cancelled subscription |
415 | 415 | */ |
416 | - public function delete_renewal_meta( $renewal_order ) { |
|
417 | - WC_Stripe_Helper::delete_stripe_fee( $renewal_order ); |
|
418 | - WC_Stripe_Helper::delete_stripe_net( $renewal_order ); |
|
416 | + public function delete_renewal_meta($renewal_order) { |
|
417 | + WC_Stripe_Helper::delete_stripe_fee($renewal_order); |
|
418 | + WC_Stripe_Helper::delete_stripe_net($renewal_order); |
|
419 | 419 | |
420 | 420 | // delete payment intent ID |
421 | - delete_post_meta( $renewal_order->get_id(), '_stripe_intent_id' ); |
|
421 | + delete_post_meta($renewal_order->get_id(), '_stripe_intent_id'); |
|
422 | 422 | |
423 | 423 | return $renewal_order; |
424 | 424 | } |
@@ -432,9 +432,9 @@ discard block |
||
432 | 432 | * @param WC_Order $renewal_order The order which recorded the successful payment (to make up for the failed automatic payment). |
433 | 433 | * @return void |
434 | 434 | */ |
435 | - public function update_failing_payment_method( $subscription, $renewal_order ) { |
|
436 | - update_post_meta( $subscription->get_id(), '_stripe_customer_id', $renewal_order->get_meta( '_stripe_customer_id', true ) ); |
|
437 | - update_post_meta( $subscription->get_id(), '_stripe_source_id', $renewal_order->get_meta( '_stripe_source_id', true ) ); |
|
435 | + public function update_failing_payment_method($subscription, $renewal_order) { |
|
436 | + update_post_meta($subscription->get_id(), '_stripe_customer_id', $renewal_order->get_meta('_stripe_customer_id', true)); |
|
437 | + update_post_meta($subscription->get_id(), '_stripe_source_id', $renewal_order->get_meta('_stripe_source_id', true)); |
|
438 | 438 | } |
439 | 439 | |
440 | 440 | /** |
@@ -446,23 +446,23 @@ discard block |
||
446 | 446 | * @param WC_Subscription $subscription An instance of a subscription object |
447 | 447 | * @return array |
448 | 448 | */ |
449 | - public function add_subscription_payment_meta( $payment_meta, $subscription ) { |
|
449 | + public function add_subscription_payment_meta($payment_meta, $subscription) { |
|
450 | 450 | $subscription_id = $subscription->get_id(); |
451 | - $source_id = get_post_meta( $subscription_id, '_stripe_source_id', true ); |
|
451 | + $source_id = get_post_meta($subscription_id, '_stripe_source_id', true); |
|
452 | 452 | |
453 | 453 | // For BW compat will remove in future. |
454 | - if ( empty( $source_id ) ) { |
|
455 | - $source_id = get_post_meta( $subscription_id, '_stripe_card_id', true ); |
|
454 | + if (empty($source_id)) { |
|
455 | + $source_id = get_post_meta($subscription_id, '_stripe_card_id', true); |
|
456 | 456 | |
457 | 457 | // Take this opportunity to update the key name. |
458 | - update_post_meta( $subscription_id, '_stripe_source_id', $source_id ); |
|
459 | - delete_post_meta( $subscription_id, '_stripe_card_id', $source_id ); |
|
458 | + update_post_meta($subscription_id, '_stripe_source_id', $source_id); |
|
459 | + delete_post_meta($subscription_id, '_stripe_card_id', $source_id); |
|
460 | 460 | } |
461 | 461 | |
462 | - $payment_meta[ $this->id ] = array( |
|
462 | + $payment_meta[$this->id] = array( |
|
463 | 463 | 'post_meta' => array( |
464 | 464 | '_stripe_customer_id' => array( |
465 | - 'value' => get_post_meta( $subscription_id, '_stripe_customer_id', true ), |
|
465 | + 'value' => get_post_meta($subscription_id, '_stripe_customer_id', true), |
|
466 | 466 | 'label' => 'Stripe Customer ID', |
467 | 467 | ), |
468 | 468 | '_stripe_source_id' => array( |
@@ -485,26 +485,26 @@ discard block |
||
485 | 485 | * @param array $payment_meta associative array of meta data required for automatic payments |
486 | 486 | * @return array |
487 | 487 | */ |
488 | - public function validate_subscription_payment_meta( $payment_method_id, $payment_meta ) { |
|
489 | - if ( $this->id === $payment_method_id ) { |
|
488 | + public function validate_subscription_payment_meta($payment_method_id, $payment_meta) { |
|
489 | + if ($this->id === $payment_method_id) { |
|
490 | 490 | |
491 | - if ( ! isset( $payment_meta['post_meta']['_stripe_customer_id']['value'] ) || empty( $payment_meta['post_meta']['_stripe_customer_id']['value'] ) ) { |
|
491 | + if ( ! isset($payment_meta['post_meta']['_stripe_customer_id']['value']) || empty($payment_meta['post_meta']['_stripe_customer_id']['value'])) { |
|
492 | 492 | |
493 | 493 | // Allow empty stripe customer id during subscription renewal. It will be added when processing payment if required. |
494 | - if ( ! isset( $_POST['wc_order_action'] ) || 'wcs_process_renewal' !== $_POST['wc_order_action'] ) { |
|
495 | - throw new Exception( __( 'A "Stripe Customer ID" value is required.', 'woocommerce-gateway-stripe' ) ); |
|
494 | + if ( ! isset($_POST['wc_order_action']) || 'wcs_process_renewal' !== $_POST['wc_order_action']) { |
|
495 | + throw new Exception(__('A "Stripe Customer ID" value is required.', 'woocommerce-gateway-stripe')); |
|
496 | 496 | } |
497 | - } elseif ( 0 !== strpos( $payment_meta['post_meta']['_stripe_customer_id']['value'], 'cus_' ) ) { |
|
498 | - throw new Exception( __( 'Invalid customer ID. A valid "Stripe Customer ID" must begin with "cus_".', 'woocommerce-gateway-stripe' ) ); |
|
497 | + } elseif (0 !== strpos($payment_meta['post_meta']['_stripe_customer_id']['value'], 'cus_')) { |
|
498 | + throw new Exception(__('Invalid customer ID. A valid "Stripe Customer ID" must begin with "cus_".', 'woocommerce-gateway-stripe')); |
|
499 | 499 | } |
500 | 500 | |
501 | 501 | if ( |
502 | - ( ! empty( $payment_meta['post_meta']['_stripe_source_id']['value'] ) |
|
503 | - && 0 !== strpos( $payment_meta['post_meta']['_stripe_source_id']['value'], 'card_' ) ) |
|
504 | - && ( ! empty( $payment_meta['post_meta']['_stripe_source_id']['value'] ) |
|
505 | - && 0 !== strpos( $payment_meta['post_meta']['_stripe_source_id']['value'], 'src_' ) ) ) { |
|
502 | + ( ! empty($payment_meta['post_meta']['_stripe_source_id']['value']) |
|
503 | + && 0 !== strpos($payment_meta['post_meta']['_stripe_source_id']['value'], 'card_')) |
|
504 | + && ( ! empty($payment_meta['post_meta']['_stripe_source_id']['value']) |
|
505 | + && 0 !== strpos($payment_meta['post_meta']['_stripe_source_id']['value'], 'src_')) ) { |
|
506 | 506 | |
507 | - throw new Exception( __( 'Invalid source ID. A valid source "Stripe Source ID" must begin with "src_" or "card_".', 'woocommerce-gateway-stripe' ) ); |
|
507 | + throw new Exception(__('Invalid source ID. A valid source "Stripe Source ID" must begin with "src_" or "card_".', 'woocommerce-gateway-stripe')); |
|
508 | 508 | } |
509 | 509 | } |
510 | 510 | } |
@@ -517,75 +517,75 @@ discard block |
||
517 | 517 | * @param WC_Subscription $subscription the subscription details |
518 | 518 | * @return string the subscription payment method |
519 | 519 | */ |
520 | - public function maybe_render_subscription_payment_method( $payment_method_to_display, $subscription ) { |
|
520 | + public function maybe_render_subscription_payment_method($payment_method_to_display, $subscription) { |
|
521 | 521 | $customer_user = $subscription->get_customer_id(); |
522 | 522 | |
523 | 523 | // bail for other payment methods |
524 | - if ( $subscription->get_payment_method() !== $this->id || ! $customer_user ) { |
|
524 | + if ($subscription->get_payment_method() !== $this->id || ! $customer_user) { |
|
525 | 525 | return $payment_method_to_display; |
526 | 526 | } |
527 | 527 | |
528 | - $stripe_source_id = get_post_meta( $subscription->get_id(), '_stripe_source_id', true ); |
|
528 | + $stripe_source_id = get_post_meta($subscription->get_id(), '_stripe_source_id', true); |
|
529 | 529 | |
530 | 530 | // For BW compat will remove in future. |
531 | - if ( empty( $stripe_source_id ) ) { |
|
532 | - $stripe_source_id = get_post_meta( $subscription->get_id(), '_stripe_card_id', true ); |
|
531 | + if (empty($stripe_source_id)) { |
|
532 | + $stripe_source_id = get_post_meta($subscription->get_id(), '_stripe_card_id', true); |
|
533 | 533 | |
534 | 534 | // Take this opportunity to update the key name. |
535 | - update_post_meta( $subscription->get_id(), '_stripe_source_id', $stripe_source_id ); |
|
535 | + update_post_meta($subscription->get_id(), '_stripe_source_id', $stripe_source_id); |
|
536 | 536 | } |
537 | 537 | |
538 | 538 | $stripe_customer = new WC_Stripe_Customer(); |
539 | - $stripe_customer_id = get_post_meta( $subscription->get_id(), '_stripe_customer_id', true ); |
|
539 | + $stripe_customer_id = get_post_meta($subscription->get_id(), '_stripe_customer_id', true); |
|
540 | 540 | |
541 | 541 | // If we couldn't find a Stripe customer linked to the subscription, fallback to the user meta data. |
542 | - if ( ! $stripe_customer_id || ! is_string( $stripe_customer_id ) ) { |
|
542 | + if ( ! $stripe_customer_id || ! is_string($stripe_customer_id)) { |
|
543 | 543 | $user_id = $customer_user; |
544 | - $stripe_customer_id = get_user_option( '_stripe_customer_id', $user_id ); |
|
545 | - $stripe_source_id = get_user_option( '_stripe_source_id', $user_id ); |
|
544 | + $stripe_customer_id = get_user_option('_stripe_customer_id', $user_id); |
|
545 | + $stripe_source_id = get_user_option('_stripe_source_id', $user_id); |
|
546 | 546 | |
547 | 547 | // For BW compat will remove in future. |
548 | - if ( empty( $stripe_source_id ) ) { |
|
549 | - $stripe_source_id = get_user_option( '_stripe_card_id', $user_id ); |
|
548 | + if (empty($stripe_source_id)) { |
|
549 | + $stripe_source_id = get_user_option('_stripe_card_id', $user_id); |
|
550 | 550 | |
551 | 551 | // Take this opportunity to update the key name. |
552 | - update_user_option( $user_id, '_stripe_source_id', $stripe_source_id, false ); |
|
552 | + update_user_option($user_id, '_stripe_source_id', $stripe_source_id, false); |
|
553 | 553 | } |
554 | 554 | } |
555 | 555 | |
556 | 556 | // If we couldn't find a Stripe customer linked to the account, fallback to the order meta data. |
557 | - if ( ( ! $stripe_customer_id || ! is_string( $stripe_customer_id ) ) && false !== $subscription->order ) { |
|
558 | - $stripe_customer_id = get_post_meta( $subscription->get_parent_id(), '_stripe_customer_id', true ); |
|
559 | - $stripe_source_id = get_post_meta( $subscription->get_parent_id(), '_stripe_source_id', true ); |
|
557 | + if (( ! $stripe_customer_id || ! is_string($stripe_customer_id)) && false !== $subscription->order) { |
|
558 | + $stripe_customer_id = get_post_meta($subscription->get_parent_id(), '_stripe_customer_id', true); |
|
559 | + $stripe_source_id = get_post_meta($subscription->get_parent_id(), '_stripe_source_id', true); |
|
560 | 560 | |
561 | 561 | // For BW compat will remove in future. |
562 | - if ( empty( $stripe_source_id ) ) { |
|
563 | - $stripe_source_id = get_post_meta( $subscription->get_parent_id(), '_stripe_card_id', true ); |
|
562 | + if (empty($stripe_source_id)) { |
|
563 | + $stripe_source_id = get_post_meta($subscription->get_parent_id(), '_stripe_card_id', true); |
|
564 | 564 | |
565 | 565 | // Take this opportunity to update the key name. |
566 | - update_post_meta( $subscription->get_parent_id(), '_stripe_source_id', $stripe_source_id ); |
|
566 | + update_post_meta($subscription->get_parent_id(), '_stripe_source_id', $stripe_source_id); |
|
567 | 567 | } |
568 | 568 | } |
569 | 569 | |
570 | - $stripe_customer->set_id( $stripe_customer_id ); |
|
570 | + $stripe_customer->set_id($stripe_customer_id); |
|
571 | 571 | |
572 | 572 | $sources = $stripe_customer->get_sources(); |
573 | - $payment_method_to_display = __( 'N/A', 'woocommerce-gateway-stripe' ); |
|
573 | + $payment_method_to_display = __('N/A', 'woocommerce-gateway-stripe'); |
|
574 | 574 | |
575 | - if ( $sources ) { |
|
575 | + if ($sources) { |
|
576 | 576 | $card = false; |
577 | 577 | |
578 | - foreach ( $sources as $source ) { |
|
579 | - if ( isset( $source->type ) && 'card' === $source->type ) { |
|
578 | + foreach ($sources as $source) { |
|
579 | + if (isset($source->type) && 'card' === $source->type) { |
|
580 | 580 | $card = $source->card; |
581 | - } elseif ( isset( $source->object ) && 'card' === $source->object ) { |
|
581 | + } elseif (isset($source->object) && 'card' === $source->object) { |
|
582 | 582 | $card = $source; |
583 | 583 | } |
584 | 584 | |
585 | - if ( $source->id === $stripe_source_id ) { |
|
586 | - if ( $card ) { |
|
585 | + if ($source->id === $stripe_source_id) { |
|
586 | + if ($card) { |
|
587 | 587 | /* translators: 1) card brand 2) last 4 digits */ |
588 | - $payment_method_to_display = sprintf( __( 'Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe' ), ( isset( $card->brand ) ? $card->brand : __( 'N/A', 'woocommerce-gateway-stripe' ) ), $card->last4 ); |
|
588 | + $payment_method_to_display = sprintf(__('Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe'), (isset($card->brand) ? $card->brand : __('N/A', 'woocommerce-gateway-stripe')), $card->last4); |
|
589 | 589 | } |
590 | 590 | |
591 | 591 | break; |
@@ -602,7 +602,7 @@ discard block |
||
602 | 602 | */ |
603 | 603 | public function remove_order_pay_var() { |
604 | 604 | global $wp; |
605 | - if ( isset( $_GET['wc-stripe-confirmation'] ) ) { |
|
605 | + if (isset($_GET['wc-stripe-confirmation'])) { |
|
606 | 606 | $this->order_pay_var = $wp->query_vars['order-pay']; |
607 | 607 | $wp->query_vars['order-pay'] = null; |
608 | 608 | } |
@@ -613,7 +613,7 @@ discard block |
||
613 | 613 | */ |
614 | 614 | public function restore_order_pay_var() { |
615 | 615 | global $wp; |
616 | - if ( isset( $this->order_pay_var ) ) { |
|
616 | + if (isset($this->order_pay_var)) { |
|
617 | 617 | $wp->query_vars['order-pay'] = $this->order_pay_var; |
618 | 618 | } |
619 | 619 | } |
@@ -624,13 +624,13 @@ discard block |
||
624 | 624 | * @param WC_Order $renewal_order The renewal order. |
625 | 625 | * @return boolean |
626 | 626 | */ |
627 | - public function has_authentication_already_failed( $renewal_order ) { |
|
628 | - $existing_intent = $this->get_intent_from_order( $renewal_order ); |
|
627 | + public function has_authentication_already_failed($renewal_order) { |
|
628 | + $existing_intent = $this->get_intent_from_order($renewal_order); |
|
629 | 629 | |
630 | 630 | if ( |
631 | 631 | ! $existing_intent |
632 | 632 | || 'requires_payment_method' !== $existing_intent->status |
633 | - || empty( $existing_intent->last_payment_error ) |
|
633 | + || empty($existing_intent->last_payment_error) |
|
634 | 634 | || 'authentication_required' !== $existing_intent->last_payment_error->code |
635 | 635 | ) { |
636 | 636 | return false; |
@@ -644,12 +644,12 @@ discard block |
||
644 | 644 | * |
645 | 645 | * @param WC_Order $renewal_order The order that is being renewed. |
646 | 646 | */ |
647 | - do_action( 'wc_gateway_stripe_process_payment_authentication_required', $renewal_order ); |
|
647 | + do_action('wc_gateway_stripe_process_payment_authentication_required', $renewal_order); |
|
648 | 648 | |
649 | 649 | // Fail the payment attempt (order would be currently pending because of retry rules). |
650 | - $charge = end( $existing_intent->charges->data ); |
|
650 | + $charge = end($existing_intent->charges->data); |
|
651 | 651 | $charge_id = $charge->id; |
652 | - $renewal_order->update_status( 'failed', sprintf( __( 'Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe' ), $charge_id ) ); |
|
652 | + $renewal_order->update_status('failed', sprintf(__('Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe'), $charge_id)); |
|
653 | 653 | |
654 | 654 | return true; |
655 | 655 | } |
@@ -660,7 +660,7 @@ discard block |
||
660 | 660 | * @param string $url The URL that Subscriptions attempts a redirect to. |
661 | 661 | * @return void |
662 | 662 | */ |
663 | - public function redirect_after_early_renewal( $url ) { |
|
663 | + public function redirect_after_early_renewal($url) { |
|
664 | 664 | echo wp_json_encode( |
665 | 665 | array( |
666 | 666 | 'stripe_sca_required' => false, |
@@ -677,12 +677,12 @@ discard block |
||
677 | 677 | * @param WC_Order $order The renewal order. |
678 | 678 | * @param stdClass $intent The Payment Intent object. |
679 | 679 | */ |
680 | - protected function handle_intent_verification_success( $order, $intent ) { |
|
681 | - parent::handle_intent_verification_success( $order, $intent ); |
|
680 | + protected function handle_intent_verification_success($order, $intent) { |
|
681 | + parent::handle_intent_verification_success($order, $intent); |
|
682 | 682 | |
683 | - if ( isset( $_GET['early_renewal'] ) ) { // wpcs: csrf ok. |
|
684 | - wcs_update_dates_after_early_renewal( wcs_get_subscription( $order->get_meta( '_subscription_renewal' ) ), $order ); |
|
685 | - wc_add_notice( __( 'Your early renewal order was successful.', 'woocommerce-gateway-stripe' ), 'success' ); |
|
683 | + if (isset($_GET['early_renewal'])) { // wpcs: csrf ok. |
|
684 | + wcs_update_dates_after_early_renewal(wcs_get_subscription($order->get_meta('_subscription_renewal')), $order); |
|
685 | + wc_add_notice(__('Your early renewal order was successful.', 'woocommerce-gateway-stripe'), 'success'); |
|
686 | 686 | } |
687 | 687 | } |
688 | 688 | |
@@ -692,12 +692,12 @@ discard block |
||
692 | 692 | * @param WC_Order $order The renewal order. |
693 | 693 | * @param stdClass $intent The Payment Intent object (unused). |
694 | 694 | */ |
695 | - protected function handle_intent_verification_failure( $order, $intent ) { |
|
696 | - if ( isset( $_GET['early_renewal'] ) ) { |
|
697 | - $order->delete( true ); |
|
698 | - wc_add_notice( __( 'Payment authorization for the renewal order was unsuccessful, please try again.', 'woocommerce-gateway-stripe' ), 'error' ); |
|
699 | - $renewal_url = wcs_get_early_renewal_url( wcs_get_subscription( $order->get_meta( '_subscription_renewal' ) ) ); |
|
700 | - wp_redirect( $renewal_url ); exit; |
|
695 | + protected function handle_intent_verification_failure($order, $intent) { |
|
696 | + if (isset($_GET['early_renewal'])) { |
|
697 | + $order->delete(true); |
|
698 | + wc_add_notice(__('Payment authorization for the renewal order was unsuccessful, please try again.', 'woocommerce-gateway-stripe'), 'error'); |
|
699 | + $renewal_url = wcs_get_early_renewal_url(wcs_get_subscription($order->get_meta('_subscription_renewal'))); |
|
700 | + wp_redirect($renewal_url); exit; |
|
701 | 701 | } |
702 | 702 | } |
703 | 703 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -15,21 +15,21 @@ discard block |
||
15 | 15 | public function __construct() { |
16 | 16 | parent::__construct(); |
17 | 17 | |
18 | - if ( class_exists( 'WC_Subscriptions_Order' ) ) { |
|
19 | - add_action( 'woocommerce_scheduled_subscription_payment_' . $this->id, array( $this, 'scheduled_subscription_payment' ), 10, 2 ); |
|
20 | - add_action( 'wcs_resubscribe_order_created', array( $this, 'delete_resubscribe_meta' ), 10 ); |
|
21 | - add_action( 'wcs_renewal_order_created', array( $this, 'delete_renewal_meta' ), 10 ); |
|
22 | - add_action( 'woocommerce_subscription_failing_payment_method_updated_stripe', array( $this, 'update_failing_payment_method' ), 10, 2 ); |
|
23 | - add_action( 'wc_stripe_sepa_payment_fields', array( $this, 'display_update_subs_payment_checkout' ) ); |
|
24 | - add_action( 'wc_stripe_add_payment_method_' . $this->id . '_success', array( $this, 'handle_add_payment_method_success' ), 10, 2 ); |
|
18 | + if (class_exists('WC_Subscriptions_Order')) { |
|
19 | + add_action('woocommerce_scheduled_subscription_payment_' . $this->id, array($this, 'scheduled_subscription_payment'), 10, 2); |
|
20 | + add_action('wcs_resubscribe_order_created', array($this, 'delete_resubscribe_meta'), 10); |
|
21 | + add_action('wcs_renewal_order_created', array($this, 'delete_renewal_meta'), 10); |
|
22 | + add_action('woocommerce_subscription_failing_payment_method_updated_stripe', array($this, 'update_failing_payment_method'), 10, 2); |
|
23 | + add_action('wc_stripe_sepa_payment_fields', array($this, 'display_update_subs_payment_checkout')); |
|
24 | + add_action('wc_stripe_add_payment_method_' . $this->id . '_success', array($this, 'handle_add_payment_method_success'), 10, 2); |
|
25 | 25 | |
26 | 26 | // Display the credit card used for a subscription in the "My Subscriptions" table. |
27 | - add_filter( 'woocommerce_my_subscriptions_payment_method', array( $this, 'maybe_render_subscription_payment_method' ), 10, 2 ); |
|
27 | + add_filter('woocommerce_my_subscriptions_payment_method', array($this, 'maybe_render_subscription_payment_method'), 10, 2); |
|
28 | 28 | |
29 | 29 | // Allow store managers to manually set Stripe as the payment method on a subscription. |
30 | - add_filter( 'woocommerce_subscription_payment_meta', array( $this, 'add_subscription_payment_meta' ), 10, 2 ); |
|
31 | - add_filter( 'woocommerce_subscription_validate_payment_meta', array( $this, 'validate_subscription_payment_meta' ), 10, 2 ); |
|
32 | - add_filter( 'wc_stripe_display_save_payment_method_checkbox', array( $this, 'maybe_hide_save_checkbox' ) ); |
|
30 | + add_filter('woocommerce_subscription_payment_meta', array($this, 'add_subscription_payment_meta'), 10, 2); |
|
31 | + add_filter('woocommerce_subscription_validate_payment_meta', array($this, 'validate_subscription_payment_meta'), 10, 2); |
|
32 | + add_filter('wc_stripe_display_save_payment_method_checkbox', array($this, 'maybe_hide_save_checkbox')); |
|
33 | 33 | } |
34 | 34 | } |
35 | 35 | |
@@ -40,8 +40,8 @@ discard block |
||
40 | 40 | * @since 4.0.0 |
41 | 41 | * @version 4.0.0 |
42 | 42 | */ |
43 | - public function maybe_hide_save_checkbox( $display_tokenization ) { |
|
44 | - if ( WC_Subscriptions_Cart::cart_contains_subscription() ) { |
|
43 | + public function maybe_hide_save_checkbox($display_tokenization) { |
|
44 | + if (WC_Subscriptions_Cart::cart_contains_subscription()) { |
|
45 | 45 | return false; |
46 | 46 | } |
47 | 47 | |
@@ -53,8 +53,8 @@ discard block |
||
53 | 53 | * @param int $order_id |
54 | 54 | * @return boolean |
55 | 55 | */ |
56 | - public function has_subscription( $order_id ) { |
|
57 | - return ( function_exists( 'wcs_order_contains_subscription' ) && ( wcs_order_contains_subscription( $order_id ) || wcs_is_subscription( $order_id ) || wcs_order_contains_renewal( $order_id ) ) ); |
|
56 | + public function has_subscription($order_id) { |
|
57 | + return (function_exists('wcs_order_contains_subscription') && (wcs_order_contains_subscription($order_id) || wcs_is_subscription($order_id) || wcs_order_contains_renewal($order_id))); |
|
58 | 58 | } |
59 | 59 | |
60 | 60 | /** |
@@ -64,7 +64,7 @@ discard block |
||
64 | 64 | * @return bool |
65 | 65 | */ |
66 | 66 | public function is_subs_change_payment() { |
67 | - return ( isset( $_GET['pay_for_order'] ) && isset( $_GET['change_payment_method'] ) ); |
|
67 | + return (isset($_GET['pay_for_order']) && isset($_GET['change_payment_method'])); |
|
68 | 68 | } |
69 | 69 | |
70 | 70 | /** |
@@ -74,20 +74,20 @@ discard block |
||
74 | 74 | * @since 4.1.11 |
75 | 75 | */ |
76 | 76 | public function display_update_subs_payment_checkout() { |
77 | - $subs_statuses = apply_filters( 'wc_stripe_update_subs_payment_method_card_statuses', array( 'active' ) ); |
|
77 | + $subs_statuses = apply_filters('wc_stripe_update_subs_payment_method_card_statuses', array('active')); |
|
78 | 78 | if ( |
79 | - apply_filters( 'wc_stripe_display_update_subs_payment_method_card_checkbox', true ) && |
|
80 | - wcs_user_has_subscription( get_current_user_id(), '', $subs_statuses ) && |
|
79 | + apply_filters('wc_stripe_display_update_subs_payment_method_card_checkbox', true) && |
|
80 | + wcs_user_has_subscription(get_current_user_id(), '', $subs_statuses) && |
|
81 | 81 | is_add_payment_method_page() |
82 | 82 | ) { |
83 | - $label = esc_html( apply_filters( 'wc_stripe_save_to_subs_text', __( 'Update the Payment Method used for all of my active subscriptions.', 'woocommerce-gateway-stripe' ) ) ); |
|
84 | - $id = sprintf( 'wc-%1$s-update-subs-payment-method-card', $this->id ); |
|
83 | + $label = esc_html(apply_filters('wc_stripe_save_to_subs_text', __('Update the Payment Method used for all of my active subscriptions.', 'woocommerce-gateway-stripe'))); |
|
84 | + $id = sprintf('wc-%1$s-update-subs-payment-method-card', $this->id); |
|
85 | 85 | woocommerce_form_field( |
86 | 86 | $id, |
87 | 87 | array( |
88 | 88 | 'type' => 'checkbox', |
89 | 89 | 'label' => $label, |
90 | - 'default' => apply_filters( 'wc_stripe_save_to_subs_checked', false ), |
|
90 | + 'default' => apply_filters('wc_stripe_save_to_subs_checked', false), |
|
91 | 91 | ) |
92 | 92 | ); |
93 | 93 | } |
@@ -100,19 +100,19 @@ discard block |
||
100 | 100 | * @param string $source_id |
101 | 101 | * @param object $source_object |
102 | 102 | */ |
103 | - public function handle_add_payment_method_success( $source_id, $source_object ) { |
|
104 | - if ( isset( $_POST[ 'wc-' . $this->id . '-update-subs-payment-method-card' ] ) ) { |
|
103 | + public function handle_add_payment_method_success($source_id, $source_object) { |
|
104 | + if (isset($_POST['wc-' . $this->id . '-update-subs-payment-method-card'])) { |
|
105 | 105 | $all_subs = wcs_get_users_subscriptions(); |
106 | - $subs_statuses = apply_filters( 'wc_stripe_update_subs_payment_method_card_statuses', array( 'active' ) ); |
|
107 | - $stripe_customer = new WC_Stripe_Customer( get_current_user_id() ); |
|
108 | - |
|
109 | - if ( ! empty( $all_subs ) ) { |
|
110 | - foreach ( $all_subs as $sub ) { |
|
111 | - if ( $sub->has_status( $subs_statuses ) ) { |
|
112 | - update_post_meta( $sub->get_id(), '_stripe_source_id', $source_id ); |
|
113 | - update_post_meta( $sub->get_id(), '_stripe_customer_id', $stripe_customer->get_id() ); |
|
114 | - update_post_meta( $sub->get_id(), '_payment_method', $this->id ); |
|
115 | - update_post_meta( $sub->get_id(), '_payment_method_title', $this->method_title ); |
|
106 | + $subs_statuses = apply_filters('wc_stripe_update_subs_payment_method_card_statuses', array('active')); |
|
107 | + $stripe_customer = new WC_Stripe_Customer(get_current_user_id()); |
|
108 | + |
|
109 | + if ( ! empty($all_subs)) { |
|
110 | + foreach ($all_subs as $sub) { |
|
111 | + if ($sub->has_status($subs_statuses)) { |
|
112 | + update_post_meta($sub->get_id(), '_stripe_source_id', $source_id); |
|
113 | + update_post_meta($sub->get_id(), '_stripe_customer_id', $stripe_customer->get_id()); |
|
114 | + update_post_meta($sub->get_id(), '_payment_method', $this->id); |
|
115 | + update_post_meta($sub->get_id(), '_payment_method_title', $this->method_title); |
|
116 | 116 | } |
117 | 117 | } |
118 | 118 | } |
@@ -125,24 +125,24 @@ discard block |
||
125 | 125 | * @since 3.1.0 |
126 | 126 | * @version 4.0.0 |
127 | 127 | */ |
128 | - public function save_source_to_order( $order, $source ) { |
|
129 | - parent::save_source_to_order( $order, $source ); |
|
128 | + public function save_source_to_order($order, $source) { |
|
129 | + parent::save_source_to_order($order, $source); |
|
130 | 130 | |
131 | 131 | $order_id = $order->get_id(); |
132 | 132 | |
133 | 133 | // Also store it on the subscriptions being purchased or paid for in the order. |
134 | - if ( function_exists( 'wcs_order_contains_subscription' ) && wcs_order_contains_subscription( $order_id ) ) { |
|
135 | - $subscriptions = wcs_get_subscriptions_for_order( $order_id ); |
|
136 | - } elseif ( function_exists( 'wcs_order_contains_renewal' ) && wcs_order_contains_renewal( $order_id ) ) { |
|
137 | - $subscriptions = wcs_get_subscriptions_for_renewal_order( $order_id ); |
|
134 | + if (function_exists('wcs_order_contains_subscription') && wcs_order_contains_subscription($order_id)) { |
|
135 | + $subscriptions = wcs_get_subscriptions_for_order($order_id); |
|
136 | + } elseif (function_exists('wcs_order_contains_renewal') && wcs_order_contains_renewal($order_id)) { |
|
137 | + $subscriptions = wcs_get_subscriptions_for_renewal_order($order_id); |
|
138 | 138 | } else { |
139 | 139 | $subscriptions = array(); |
140 | 140 | } |
141 | 141 | |
142 | - foreach ( $subscriptions as $subscription ) { |
|
142 | + foreach ($subscriptions as $subscription) { |
|
143 | 143 | $subscription_id = $subscription->get_id(); |
144 | - update_post_meta( $subscription_id, '_stripe_customer_id', $source->customer ); |
|
145 | - update_post_meta( $subscription_id, '_stripe_source_id', $source->source ); |
|
144 | + update_post_meta($subscription_id, '_stripe_customer_id', $source->customer); |
|
145 | + update_post_meta($subscription_id, '_stripe_source_id', $source->source); |
|
146 | 146 | } |
147 | 147 | } |
148 | 148 | |
@@ -151,16 +151,16 @@ discard block |
||
151 | 151 | * @param int $order_id |
152 | 152 | * @return array |
153 | 153 | */ |
154 | - public function process_payment( $order_id, $retry = true, $force_save_source = false, $previous_error = false ) { |
|
155 | - if ( $this->has_subscription( $order_id ) ) { |
|
156 | - if ( $this->is_subs_change_payment() ) { |
|
157 | - return $this->change_subs_payment_method( $order_id ); |
|
154 | + public function process_payment($order_id, $retry = true, $force_save_source = false, $previous_error = false) { |
|
155 | + if ($this->has_subscription($order_id)) { |
|
156 | + if ($this->is_subs_change_payment()) { |
|
157 | + return $this->change_subs_payment_method($order_id); |
|
158 | 158 | } |
159 | 159 | |
160 | 160 | // Regular payment with force customer enabled |
161 | - return parent::process_payment( $order_id, $retry, true, $previous_error ); |
|
161 | + return parent::process_payment($order_id, $retry, true, $previous_error); |
|
162 | 162 | } else { |
163 | - return parent::process_payment( $order_id, $retry, $force_save_source, $previous_error ); |
|
163 | + return parent::process_payment($order_id, $retry, $force_save_source, $previous_error); |
|
164 | 164 | } |
165 | 165 | } |
166 | 166 | |
@@ -170,27 +170,27 @@ discard block |
||
170 | 170 | * @since 4.0.4 |
171 | 171 | * @param int $order_id |
172 | 172 | */ |
173 | - public function change_subs_payment_method( $order_id ) { |
|
173 | + public function change_subs_payment_method($order_id) { |
|
174 | 174 | try { |
175 | - $subscription = wc_get_order( $order_id ); |
|
176 | - $prepared_source = $this->prepare_source( get_current_user_id(), true ); |
|
175 | + $subscription = wc_get_order($order_id); |
|
176 | + $prepared_source = $this->prepare_source(get_current_user_id(), true); |
|
177 | 177 | |
178 | - if ( empty( $prepared_source->source ) ) { |
|
179 | - $localized_message = __( 'Payment processing failed. Please retry.', 'woocommerce-gateway-stripe' ); |
|
180 | - throw new WC_Stripe_Exception( print_r( $prepared_source, true ), $localized_message ); |
|
178 | + if (empty($prepared_source->source)) { |
|
179 | + $localized_message = __('Payment processing failed. Please retry.', 'woocommerce-gateway-stripe'); |
|
180 | + throw new WC_Stripe_Exception(print_r($prepared_source, true), $localized_message); |
|
181 | 181 | } |
182 | 182 | |
183 | - $this->save_source_to_order( $subscription, $prepared_source ); |
|
183 | + $this->save_source_to_order($subscription, $prepared_source); |
|
184 | 184 | |
185 | - do_action( 'wc_stripe_change_subs_payment_method_success', $prepared_source->source, $prepared_source ); |
|
185 | + do_action('wc_stripe_change_subs_payment_method_success', $prepared_source->source, $prepared_source); |
|
186 | 186 | |
187 | 187 | return array( |
188 | 188 | 'result' => 'success', |
189 | - 'redirect' => $this->get_return_url( $subscription ), |
|
189 | + 'redirect' => $this->get_return_url($subscription), |
|
190 | 190 | ); |
191 | - } catch ( WC_Stripe_Exception $e ) { |
|
192 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
193 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
191 | + } catch (WC_Stripe_Exception $e) { |
|
192 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
193 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
194 | 194 | } |
195 | 195 | } |
196 | 196 | |
@@ -200,8 +200,8 @@ discard block |
||
200 | 200 | * @param $amount_to_charge float The amount to charge. |
201 | 201 | * @param $renewal_order WC_Order A WC_Order object created to record the renewal payment. |
202 | 202 | */ |
203 | - public function scheduled_subscription_payment( $amount_to_charge, $renewal_order ) { |
|
204 | - $this->process_subscription_payment( $amount_to_charge, $renewal_order, true, false ); |
|
203 | + public function scheduled_subscription_payment($amount_to_charge, $renewal_order) { |
|
204 | + $this->process_subscription_payment($amount_to_charge, $renewal_order, true, false); |
|
205 | 205 | } |
206 | 206 | |
207 | 207 | /** |
@@ -215,11 +215,11 @@ discard block |
||
215 | 215 | * @param bool $retry Should we retry the process? |
216 | 216 | * @param object $previous_error |
217 | 217 | */ |
218 | - public function process_subscription_payment( $amount = 0.0, $renewal_order, $retry = true, $previous_error ) { |
|
218 | + public function process_subscription_payment($amount = 0.0, $renewal_order, $retry = true, $previous_error) { |
|
219 | 219 | try { |
220 | - if ( $amount * 100 < WC_Stripe_Helper::get_minimum_amount() ) { |
|
220 | + if ($amount * 100 < WC_Stripe_Helper::get_minimum_amount()) { |
|
221 | 221 | /* translators: minimum amount */ |
222 | - $message = sprintf( __( 'Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( WC_Stripe_Helper::get_minimum_amount() / 100 ) ); |
|
222 | + $message = sprintf(__('Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe'), wc_price(WC_Stripe_Helper::get_minimum_amount() / 100)); |
|
223 | 223 | throw new WC_Stripe_Exception( |
224 | 224 | 'Error while processing renewal order ' . $renewal_order->get_id() . ' : ' . $message, |
225 | 225 | $message |
@@ -228,82 +228,82 @@ discard block |
||
228 | 228 | |
229 | 229 | $order_id = $renewal_order->get_id(); |
230 | 230 | |
231 | - $this->ensure_subscription_has_customer_id( $order_id ); |
|
231 | + $this->ensure_subscription_has_customer_id($order_id); |
|
232 | 232 | |
233 | 233 | // Get source from order |
234 | - $prepared_source = $this->prepare_order_source( $renewal_order ); |
|
234 | + $prepared_source = $this->prepare_order_source($renewal_order); |
|
235 | 235 | $source_object = $prepared_source->source_object; |
236 | 236 | |
237 | - if ( ! $prepared_source->customer ) { |
|
237 | + if ( ! $prepared_source->customer) { |
|
238 | 238 | throw new WC_Stripe_Exception( |
239 | 239 | 'Failed to process renewal for order ' . $renewal_order->get_id() . '. Stripe customer id is missing in the order', |
240 | - __( 'Customer not found', 'woocommerce-gateway-stripe' ) |
|
240 | + __('Customer not found', 'woocommerce-gateway-stripe') |
|
241 | 241 | ); |
242 | 242 | } |
243 | 243 | |
244 | - WC_Stripe_Logger::log( "Info: Begin processing subscription payment for order {$order_id} for the amount of {$amount}" ); |
|
244 | + WC_Stripe_Logger::log("Info: Begin processing subscription payment for order {$order_id} for the amount of {$amount}"); |
|
245 | 245 | |
246 | 246 | /* If we're doing a retry and source is chargeable, we need to pass |
247 | 247 | * a different idempotency key and retry for success. |
248 | 248 | */ |
249 | - if ( is_object( $source_object ) && empty( $source_object->error ) && $this->need_update_idempotency_key( $source_object, $previous_error ) ) { |
|
250 | - add_filter( 'wc_stripe_idempotency_key', array( $this, 'change_idempotency_key' ), 10, 2 ); |
|
249 | + if (is_object($source_object) && empty($source_object->error) && $this->need_update_idempotency_key($source_object, $previous_error)) { |
|
250 | + add_filter('wc_stripe_idempotency_key', array($this, 'change_idempotency_key'), 10, 2); |
|
251 | 251 | } |
252 | 252 | |
253 | - if ( ( $this->is_no_such_source_error( $previous_error ) || $this->is_no_linked_source_error( $previous_error ) ) && apply_filters( 'wc_stripe_use_default_customer_source', true ) ) { |
|
253 | + if (($this->is_no_such_source_error($previous_error) || $this->is_no_linked_source_error($previous_error)) && apply_filters('wc_stripe_use_default_customer_source', true)) { |
|
254 | 254 | // Passing empty source will charge customer default. |
255 | 255 | $prepared_source->source = ''; |
256 | 256 | } |
257 | 257 | |
258 | - $request = $this->generate_payment_request( $renewal_order, $prepared_source ); |
|
258 | + $request = $this->generate_payment_request($renewal_order, $prepared_source); |
|
259 | 259 | $request['capture'] = 'true'; |
260 | - $request['amount'] = WC_Stripe_Helper::get_stripe_amount( $amount, $request['currency'] ); |
|
261 | - $response = WC_Stripe_API::request( $request ); |
|
260 | + $request['amount'] = WC_Stripe_Helper::get_stripe_amount($amount, $request['currency']); |
|
261 | + $response = WC_Stripe_API::request($request); |
|
262 | 262 | |
263 | - if ( ! empty( $response->error ) ) { |
|
263 | + if ( ! empty($response->error)) { |
|
264 | 264 | // We want to retry. |
265 | - if ( $this->is_retryable_error( $response->error ) ) { |
|
266 | - if ( $retry ) { |
|
265 | + if ($this->is_retryable_error($response->error)) { |
|
266 | + if ($retry) { |
|
267 | 267 | // Don't do anymore retries after this. |
268 | - if ( 5 <= $this->retry_interval ) { |
|
269 | - return $this->process_subscription_payment( $amount, $renewal_order, false, $response->error ); |
|
268 | + if (5 <= $this->retry_interval) { |
|
269 | + return $this->process_subscription_payment($amount, $renewal_order, false, $response->error); |
|
270 | 270 | } |
271 | 271 | |
272 | - sleep( $this->retry_interval ); |
|
272 | + sleep($this->retry_interval); |
|
273 | 273 | |
274 | 274 | $this->retry_interval++; |
275 | 275 | |
276 | - return $this->process_subscription_payment( $amount, $renewal_order, true, $response->error ); |
|
276 | + return $this->process_subscription_payment($amount, $renewal_order, true, $response->error); |
|
277 | 277 | } else { |
278 | - $localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' ); |
|
279 | - $renewal_order->add_order_note( $localized_message ); |
|
280 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
278 | + $localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe'); |
|
279 | + $renewal_order->add_order_note($localized_message); |
|
280 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
281 | 281 | } |
282 | 282 | } |
283 | 283 | |
284 | 284 | $localized_messages = WC_Stripe_Helper::get_localized_messages(); |
285 | 285 | |
286 | - if ( 'card_error' === $response->error->type ) { |
|
287 | - $localized_message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message; |
|
286 | + if ('card_error' === $response->error->type) { |
|
287 | + $localized_message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message; |
|
288 | 288 | } else { |
289 | - $localized_message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message; |
|
289 | + $localized_message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message; |
|
290 | 290 | } |
291 | 291 | |
292 | - $renewal_order->add_order_note( $localized_message ); |
|
292 | + $renewal_order->add_order_note($localized_message); |
|
293 | 293 | |
294 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
294 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
295 | 295 | } |
296 | 296 | |
297 | - do_action( 'wc_gateway_stripe_process_payment', $response, $renewal_order ); |
|
297 | + do_action('wc_gateway_stripe_process_payment', $response, $renewal_order); |
|
298 | 298 | |
299 | - $this->process_response( $response, $renewal_order ); |
|
300 | - } catch ( WC_Stripe_Exception $e ) { |
|
301 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
299 | + $this->process_response($response, $renewal_order); |
|
300 | + } catch (WC_Stripe_Exception $e) { |
|
301 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
302 | 302 | |
303 | - do_action( 'wc_gateway_stripe_process_payment_error', $e, $renewal_order ); |
|
303 | + do_action('wc_gateway_stripe_process_payment_error', $e, $renewal_order); |
|
304 | 304 | |
305 | 305 | /* translators: error message */ |
306 | - $renewal_order->update_status( 'failed' ); |
|
306 | + $renewal_order->update_status('failed'); |
|
307 | 307 | } |
308 | 308 | } |
309 | 309 | |
@@ -311,21 +311,21 @@ discard block |
||
311 | 311 | * Don't transfer Stripe customer/token meta to resubscribe orders. |
312 | 312 | * @param int $resubscribe_order The order created for the customer to resubscribe to the old expired/cancelled subscription |
313 | 313 | */ |
314 | - public function delete_resubscribe_meta( $resubscribe_order ) { |
|
315 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_customer_id' ); |
|
316 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_source_id' ); |
|
314 | + public function delete_resubscribe_meta($resubscribe_order) { |
|
315 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_customer_id'); |
|
316 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_source_id'); |
|
317 | 317 | // For BW compat will remove in future |
318 | - delete_post_meta( $resubscribe_order->get_id(), '_stripe_card_id' ); |
|
319 | - $this->delete_renewal_meta( $resubscribe_order ); |
|
318 | + delete_post_meta($resubscribe_order->get_id(), '_stripe_card_id'); |
|
319 | + $this->delete_renewal_meta($resubscribe_order); |
|
320 | 320 | } |
321 | 321 | |
322 | 322 | /** |
323 | 323 | * Don't transfer Stripe fee/ID meta to renewal orders. |
324 | 324 | * @param int $resubscribe_order The order created for the customer to resubscribe to the old expired/cancelled subscription |
325 | 325 | */ |
326 | - public function delete_renewal_meta( $renewal_order ) { |
|
327 | - WC_Stripe_Helper::delete_stripe_fee( $renewal_order ); |
|
328 | - WC_Stripe_Helper::delete_stripe_net( $renewal_order ); |
|
326 | + public function delete_renewal_meta($renewal_order) { |
|
327 | + WC_Stripe_Helper::delete_stripe_fee($renewal_order); |
|
328 | + WC_Stripe_Helper::delete_stripe_net($renewal_order); |
|
329 | 329 | |
330 | 330 | return $renewal_order; |
331 | 331 | } |
@@ -339,9 +339,9 @@ discard block |
||
339 | 339 | * @param WC_Order $renewal_order The order which recorded the successful payment (to make up for the failed automatic payment). |
340 | 340 | * @return void |
341 | 341 | */ |
342 | - public function update_failing_payment_method( $subscription, $renewal_order ) { |
|
343 | - update_post_meta( $subscription->get_id(), '_stripe_customer_id', $renewal_order->get_meta( '_stripe_customer_id', true ) ); |
|
344 | - update_post_meta( $subscription->get_id(), '_stripe_source_id', $renewal_order->get_meta( '_stripe_source_id', true ) ); |
|
342 | + public function update_failing_payment_method($subscription, $renewal_order) { |
|
343 | + update_post_meta($subscription->get_id(), '_stripe_customer_id', $renewal_order->get_meta('_stripe_customer_id', true)); |
|
344 | + update_post_meta($subscription->get_id(), '_stripe_source_id', $renewal_order->get_meta('_stripe_source_id', true)); |
|
345 | 345 | } |
346 | 346 | |
347 | 347 | /** |
@@ -353,21 +353,21 @@ discard block |
||
353 | 353 | * @param WC_Subscription $subscription An instance of a subscription object |
354 | 354 | * @return array |
355 | 355 | */ |
356 | - public function add_subscription_payment_meta( $payment_meta, $subscription ) { |
|
357 | - $source_id = get_post_meta( $subscription->get_id(), '_stripe_source_id', true ); |
|
356 | + public function add_subscription_payment_meta($payment_meta, $subscription) { |
|
357 | + $source_id = get_post_meta($subscription->get_id(), '_stripe_source_id', true); |
|
358 | 358 | |
359 | 359 | // For BW compat will remove in future. |
360 | - if ( empty( $source_id ) ) { |
|
361 | - $source_id = get_post_meta( $subscription->get_id(), '_stripe_card_id', true ); |
|
360 | + if (empty($source_id)) { |
|
361 | + $source_id = get_post_meta($subscription->get_id(), '_stripe_card_id', true); |
|
362 | 362 | |
363 | 363 | // Take this opportunity to update the key name. |
364 | - update_post_meta( $subscription->get_id(), '_stripe_source_id', $source_id ); |
|
364 | + update_post_meta($subscription->get_id(), '_stripe_source_id', $source_id); |
|
365 | 365 | } |
366 | 366 | |
367 | - $payment_meta[ $this->id ] = array( |
|
367 | + $payment_meta[$this->id] = array( |
|
368 | 368 | 'post_meta' => array( |
369 | 369 | '_stripe_customer_id' => array( |
370 | - 'value' => get_post_meta( $subscription->get_id(), '_stripe_customer_id', true ), |
|
370 | + 'value' => get_post_meta($subscription->get_id(), '_stripe_customer_id', true), |
|
371 | 371 | 'label' => 'Stripe Customer ID', |
372 | 372 | ), |
373 | 373 | '_stripe_source_id' => array( |
@@ -388,26 +388,26 @@ discard block |
||
388 | 388 | * @param array $payment_meta associative array of meta data required for automatic payments |
389 | 389 | * @return array |
390 | 390 | */ |
391 | - public function validate_subscription_payment_meta( $payment_method_id, $payment_meta ) { |
|
392 | - if ( $this->id === $payment_method_id ) { |
|
391 | + public function validate_subscription_payment_meta($payment_method_id, $payment_meta) { |
|
392 | + if ($this->id === $payment_method_id) { |
|
393 | 393 | |
394 | - if ( ! isset( $payment_meta['post_meta']['_stripe_customer_id']['value'] ) || empty( $payment_meta['post_meta']['_stripe_customer_id']['value'] ) ) { |
|
394 | + if ( ! isset($payment_meta['post_meta']['_stripe_customer_id']['value']) || empty($payment_meta['post_meta']['_stripe_customer_id']['value'])) { |
|
395 | 395 | |
396 | 396 | // Allow empty stripe customer id during subscription renewal. It will be added when processing payment if required. |
397 | - if ( ! isset( $_POST['wc_order_action'] ) || 'wcs_process_renewal' !== $_POST['wc_order_action'] ) { |
|
398 | - throw new Exception( __( 'A "Stripe Customer ID" value is required.', 'woocommerce-gateway-stripe' ) ); |
|
397 | + if ( ! isset($_POST['wc_order_action']) || 'wcs_process_renewal' !== $_POST['wc_order_action']) { |
|
398 | + throw new Exception(__('A "Stripe Customer ID" value is required.', 'woocommerce-gateway-stripe')); |
|
399 | 399 | } |
400 | - } elseif ( 0 !== strpos( $payment_meta['post_meta']['_stripe_customer_id']['value'], 'cus_' ) ) { |
|
401 | - throw new Exception( __( 'Invalid customer ID. A valid "Stripe Customer ID" must begin with "cus_".', 'woocommerce-gateway-stripe' ) ); |
|
400 | + } elseif (0 !== strpos($payment_meta['post_meta']['_stripe_customer_id']['value'], 'cus_')) { |
|
401 | + throw new Exception(__('Invalid customer ID. A valid "Stripe Customer ID" must begin with "cus_".', 'woocommerce-gateway-stripe')); |
|
402 | 402 | } |
403 | 403 | |
404 | 404 | if ( |
405 | - ( ! empty( $payment_meta['post_meta']['_stripe_source_id']['value'] ) |
|
406 | - && 0 !== strpos( $payment_meta['post_meta']['_stripe_source_id']['value'], 'card_' ) ) |
|
407 | - && ( ! empty( $payment_meta['post_meta']['_stripe_source_id']['value'] ) |
|
408 | - && 0 !== strpos( $payment_meta['post_meta']['_stripe_source_id']['value'], 'src_' ) ) ) { |
|
405 | + ( ! empty($payment_meta['post_meta']['_stripe_source_id']['value']) |
|
406 | + && 0 !== strpos($payment_meta['post_meta']['_stripe_source_id']['value'], 'card_')) |
|
407 | + && ( ! empty($payment_meta['post_meta']['_stripe_source_id']['value']) |
|
408 | + && 0 !== strpos($payment_meta['post_meta']['_stripe_source_id']['value'], 'src_')) ) { |
|
409 | 409 | |
410 | - throw new Exception( __( 'Invalid source ID. A valid source "Stripe Source ID" must begin with "src_" or "card_".', 'woocommerce-gateway-stripe' ) ); |
|
410 | + throw new Exception(__('Invalid source ID. A valid source "Stripe Source ID" must begin with "src_" or "card_".', 'woocommerce-gateway-stripe')); |
|
411 | 411 | } |
412 | 412 | } |
413 | 413 | } |
@@ -420,67 +420,67 @@ discard block |
||
420 | 420 | * @param WC_Subscription $subscription the subscription details |
421 | 421 | * @return string the subscription payment method |
422 | 422 | */ |
423 | - public function maybe_render_subscription_payment_method( $payment_method_to_display, $subscription ) { |
|
423 | + public function maybe_render_subscription_payment_method($payment_method_to_display, $subscription) { |
|
424 | 424 | $customer_user = $subscription->get_customer_id(); |
425 | 425 | |
426 | 426 | // bail for other payment methods |
427 | - if ( $subscription->get_payment_method() !== $this->id || ! $customer_user ) { |
|
427 | + if ($subscription->get_payment_method() !== $this->id || ! $customer_user) { |
|
428 | 428 | return $payment_method_to_display; |
429 | 429 | } |
430 | 430 | |
431 | - $stripe_source_id = get_post_meta( $subscription->get_id(), '_stripe_source_id', true ); |
|
431 | + $stripe_source_id = get_post_meta($subscription->get_id(), '_stripe_source_id', true); |
|
432 | 432 | |
433 | 433 | // For BW compat will remove in future. |
434 | - if ( empty( $stripe_source_id ) ) { |
|
435 | - $stripe_source_id = get_post_meta( $subscription->get_id(), '_stripe_card_id', true ); |
|
434 | + if (empty($stripe_source_id)) { |
|
435 | + $stripe_source_id = get_post_meta($subscription->get_id(), '_stripe_card_id', true); |
|
436 | 436 | |
437 | 437 | // Take this opportunity to update the key name. |
438 | - update_post_meta( $subscription->get_id(), '_stripe_source_id', $stripe_source_id ); |
|
438 | + update_post_meta($subscription->get_id(), '_stripe_source_id', $stripe_source_id); |
|
439 | 439 | } |
440 | 440 | |
441 | 441 | $stripe_customer = new WC_Stripe_Customer(); |
442 | - $stripe_customer_id = get_post_meta( $subscription->get_id(), '_stripe_customer_id', true ); |
|
442 | + $stripe_customer_id = get_post_meta($subscription->get_id(), '_stripe_customer_id', true); |
|
443 | 443 | |
444 | 444 | // If we couldn't find a Stripe customer linked to the subscription, fallback to the user meta data. |
445 | - if ( ! $stripe_customer_id || ! is_string( $stripe_customer_id ) ) { |
|
445 | + if ( ! $stripe_customer_id || ! is_string($stripe_customer_id)) { |
|
446 | 446 | $user_id = $customer_user; |
447 | - $stripe_customer_id = get_user_option( '_stripe_customer_id', $user_id ); |
|
448 | - $stripe_source_id = get_user_option( '_stripe_source_id', $user_id ); |
|
447 | + $stripe_customer_id = get_user_option('_stripe_customer_id', $user_id); |
|
448 | + $stripe_source_id = get_user_option('_stripe_source_id', $user_id); |
|
449 | 449 | |
450 | 450 | // For BW compat will remove in future. |
451 | - if ( empty( $stripe_source_id ) ) { |
|
452 | - $stripe_source_id = get_user_option( '_stripe_card_id', $user_id ); |
|
451 | + if (empty($stripe_source_id)) { |
|
452 | + $stripe_source_id = get_user_option('_stripe_card_id', $user_id); |
|
453 | 453 | |
454 | 454 | // Take this opportunity to update the key name. |
455 | - update_user_option( $user_id, '_stripe_source_id', $stripe_source_id, false ); |
|
455 | + update_user_option($user_id, '_stripe_source_id', $stripe_source_id, false); |
|
456 | 456 | } |
457 | 457 | } |
458 | 458 | |
459 | 459 | // If we couldn't find a Stripe customer linked to the account, fallback to the order meta data. |
460 | - if ( ( ! $stripe_customer_id || ! is_string( $stripe_customer_id ) ) && false !== $subscription->order ) { |
|
461 | - $stripe_customer_id = get_post_meta( $subscription->get_parent_id(), '_stripe_customer_id', true ); |
|
462 | - $stripe_source_id = get_post_meta( $subscription->get_parent_id(), '_stripe_source_id', true ); |
|
460 | + if (( ! $stripe_customer_id || ! is_string($stripe_customer_id)) && false !== $subscription->order) { |
|
461 | + $stripe_customer_id = get_post_meta($subscription->get_parent_id(), '_stripe_customer_id', true); |
|
462 | + $stripe_source_id = get_post_meta($subscription->get_parent_id(), '_stripe_source_id', true); |
|
463 | 463 | |
464 | 464 | // For BW compat will remove in future. |
465 | - if ( empty( $stripe_source_id ) ) { |
|
466 | - $stripe_source_id = get_post_meta( $subscription->get_parent_id(), '_stripe_card_id', true ); |
|
465 | + if (empty($stripe_source_id)) { |
|
466 | + $stripe_source_id = get_post_meta($subscription->get_parent_id(), '_stripe_card_id', true); |
|
467 | 467 | |
468 | 468 | // Take this opportunity to update the key name. |
469 | - update_post_meta( $subscription->get_parent_id(), '_stripe_source_id', $stripe_source_id ); |
|
469 | + update_post_meta($subscription->get_parent_id(), '_stripe_source_id', $stripe_source_id); |
|
470 | 470 | } |
471 | 471 | } |
472 | 472 | |
473 | - $stripe_customer->set_id( $stripe_customer_id ); |
|
473 | + $stripe_customer->set_id($stripe_customer_id); |
|
474 | 474 | |
475 | 475 | $sources = $stripe_customer->get_sources(); |
476 | - $payment_method_to_display = __( 'N/A', 'woocommerce-gateway-stripe' ); |
|
476 | + $payment_method_to_display = __('N/A', 'woocommerce-gateway-stripe'); |
|
477 | 477 | |
478 | - if ( $sources ) { |
|
479 | - foreach ( $sources as $source ) { |
|
480 | - if ( $source->id === $stripe_source_id ) { |
|
481 | - if ( $source->sepa_debit ) { |
|
478 | + if ($sources) { |
|
479 | + foreach ($sources as $source) { |
|
480 | + if ($source->id === $stripe_source_id) { |
|
481 | + if ($source->sepa_debit) { |
|
482 | 482 | /* translators: 1) last 4 digits of SEPA Direct Debit */ |
483 | - $payment_method_to_display = sprintf( __( 'Via SEPA Direct Debit ending in %1$s', 'woocommerce-gateway-stripe' ), $source->sepa_debit->last4 ); |
|
483 | + $payment_method_to_display = sprintf(__('Via SEPA Direct Debit ending in %1$s', 'woocommerce-gateway-stripe'), $source->sepa_debit->last4); |
|
484 | 484 | } |
485 | 485 | |
486 | 486 | break; |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -11,7 +11,7 @@ discard block |
||
11 | 11 | public $saved_cards; |
12 | 12 | |
13 | 13 | public function __construct() { |
14 | - $this->saved_cards = WC_Stripe_Helper::get_settings( 'stripe', 'saved_cards' ); |
|
14 | + $this->saved_cards = WC_Stripe_Helper::get_settings('stripe', 'saved_cards'); |
|
15 | 15 | } |
16 | 16 | |
17 | 17 | /** |
@@ -19,17 +19,17 @@ discard block |
||
19 | 19 | * @param int $order_id |
20 | 20 | * @return boolean |
21 | 21 | */ |
22 | - public function is_pre_order( $order_id ) { |
|
23 | - return WC_Pre_Orders_Order::order_contains_pre_order( $order_id ); |
|
22 | + public function is_pre_order($order_id) { |
|
23 | + return WC_Pre_Orders_Order::order_contains_pre_order($order_id); |
|
24 | 24 | } |
25 | 25 | |
26 | 26 | /** |
27 | 27 | * Remove order meta |
28 | 28 | * @param object $order |
29 | 29 | */ |
30 | - public function remove_order_source_before_retry( $order ) { |
|
31 | - $order->delete_meta_data( '_stripe_source_id' ); |
|
32 | - $order->delete_meta_data( '_stripe_card_id' ); |
|
30 | + public function remove_order_source_before_retry($order) { |
|
31 | + $order->delete_meta_data('_stripe_source_id'); |
|
32 | + $order->delete_meta_data('_stripe_card_id'); |
|
33 | 33 | $order->save(); |
34 | 34 | } |
35 | 35 | |
@@ -37,31 +37,31 @@ discard block |
||
37 | 37 | * Process the pre-order when pay upon release is used. |
38 | 38 | * @param int $order_id |
39 | 39 | */ |
40 | - public function process_pre_order( $order_id ) { |
|
40 | + public function process_pre_order($order_id) { |
|
41 | 41 | try { |
42 | - $order = wc_get_order( $order_id ); |
|
42 | + $order = wc_get_order($order_id); |
|
43 | 43 | |
44 | 44 | // This will throw exception if not valid. |
45 | - $this->validate_minimum_order_amount( $order ); |
|
45 | + $this->validate_minimum_order_amount($order); |
|
46 | 46 | |
47 | - $prepared_source = $this->prepare_source( get_current_user_id(), true ); |
|
47 | + $prepared_source = $this->prepare_source(get_current_user_id(), true); |
|
48 | 48 | |
49 | 49 | // We need a source on file to continue. |
50 | - if ( empty( $prepared_source->customer ) || empty( $prepared_source->source ) ) { |
|
51 | - throw new WC_Stripe_Exception( __( 'Unable to store payment details. Please try again.', 'woocommerce-gateway-stripe' ) ); |
|
50 | + if (empty($prepared_source->customer) || empty($prepared_source->source)) { |
|
51 | + throw new WC_Stripe_Exception(__('Unable to store payment details. Please try again.', 'woocommerce-gateway-stripe')); |
|
52 | 52 | } |
53 | 53 | |
54 | 54 | // Setup the response early to allow later modifications. |
55 | 55 | $response = array( |
56 | 56 | 'result' => 'success', |
57 | - 'redirect' => $this->get_return_url( $order ), |
|
57 | + 'redirect' => $this->get_return_url($order), |
|
58 | 58 | ); |
59 | 59 | |
60 | - $this->save_source_to_order( $order, $prepared_source ); |
|
60 | + $this->save_source_to_order($order, $prepared_source); |
|
61 | 61 | |
62 | 62 | // Try setting up a payment intent. |
63 | - $intent_secret = $this->setup_intent( $order, $prepared_source ); |
|
64 | - if ( ! empty( $intent_secret ) ) { |
|
63 | + $intent_secret = $this->setup_intent($order, $prepared_source); |
|
64 | + if ( ! empty($intent_secret)) { |
|
65 | 65 | $response['setup_intent_secret'] = $intent_secret; |
66 | 66 | return $response; |
67 | 67 | } |
@@ -70,17 +70,17 @@ discard block |
||
70 | 70 | WC()->cart->empty_cart(); |
71 | 71 | |
72 | 72 | // Is pre ordered! |
73 | - WC_Pre_Orders_Order::mark_order_as_pre_ordered( $order ); |
|
73 | + WC_Pre_Orders_Order::mark_order_as_pre_ordered($order); |
|
74 | 74 | |
75 | 75 | // Return thank you page redirect |
76 | 76 | return $response; |
77 | - } catch ( WC_Stripe_Exception $e ) { |
|
78 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
79 | - WC_Stripe_Logger::log( 'Pre Orders Error: ' . $e->getMessage() ); |
|
77 | + } catch (WC_Stripe_Exception $e) { |
|
78 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
79 | + WC_Stripe_Logger::log('Pre Orders Error: ' . $e->getMessage()); |
|
80 | 80 | |
81 | 81 | return array( |
82 | 82 | 'result' => 'success', |
83 | - 'redirect' => $order->get_checkout_payment_url( true ), |
|
83 | + 'redirect' => $order->get_checkout_payment_url(true), |
|
84 | 84 | ); |
85 | 85 | } |
86 | 86 | } |
@@ -93,49 +93,49 @@ discard block |
||
93 | 93 | * |
94 | 94 | * @return void |
95 | 95 | */ |
96 | - public function process_pre_order_release_payment( $order, $retry = true ) { |
|
96 | + public function process_pre_order_release_payment($order, $retry = true) { |
|
97 | 97 | try { |
98 | - $source = $this->prepare_order_source( $order ); |
|
99 | - $response = $this->create_and_confirm_intent_for_off_session( $order, $source ); |
|
98 | + $source = $this->prepare_order_source($order); |
|
99 | + $response = $this->create_and_confirm_intent_for_off_session($order, $source); |
|
100 | 100 | |
101 | - $is_authentication_required = $this->is_authentication_required_for_payment( $response ); |
|
101 | + $is_authentication_required = $this->is_authentication_required_for_payment($response); |
|
102 | 102 | |
103 | - if ( ! empty( $response->error ) && ! $is_authentication_required ) { |
|
104 | - if ( ! $retry ) { |
|
105 | - throw new Exception( $response->error->message ); |
|
103 | + if ( ! empty($response->error) && ! $is_authentication_required) { |
|
104 | + if ( ! $retry) { |
|
105 | + throw new Exception($response->error->message); |
|
106 | 106 | } |
107 | - $this->remove_order_source_before_retry( $order ); |
|
108 | - $this->process_pre_order_release_payment( $order, false ); |
|
109 | - } else if ( $is_authentication_required ) { |
|
110 | - $charge = end( $response->error->payment_intent->charges->data ); |
|
107 | + $this->remove_order_source_before_retry($order); |
|
108 | + $this->process_pre_order_release_payment($order, false); |
|
109 | + } else if ($is_authentication_required) { |
|
110 | + $charge = end($response->error->payment_intent->charges->data); |
|
111 | 111 | $id = $charge->id; |
112 | 112 | |
113 | - $order->set_transaction_id( $id ); |
|
114 | - $order->update_status( 'failed', sprintf( __( 'Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe' ), $id ) ); |
|
115 | - if ( is_callable( array( $order, 'save' ) ) ) { |
|
113 | + $order->set_transaction_id($id); |
|
114 | + $order->update_status('failed', sprintf(__('Stripe charge awaiting authentication by user: %s.', 'woocommerce-gateway-stripe'), $id)); |
|
115 | + if (is_callable(array($order, 'save'))) { |
|
116 | 116 | $order->save(); |
117 | 117 | } |
118 | 118 | |
119 | 119 | WC_Emails::instance(); |
120 | 120 | |
121 | - do_action( 'wc_gateway_stripe_process_payment_authentication_required', $order ); |
|
121 | + do_action('wc_gateway_stripe_process_payment_authentication_required', $order); |
|
122 | 122 | |
123 | - throw new WC_Stripe_Exception( print_r( $response, true ), $response->error->message ); |
|
123 | + throw new WC_Stripe_Exception(print_r($response, true), $response->error->message); |
|
124 | 124 | } else { |
125 | 125 | // Successful |
126 | - $this->process_response( end( $response->charges->data ), $order ); |
|
126 | + $this->process_response(end($response->charges->data), $order); |
|
127 | 127 | } |
128 | - } catch ( Exception $e ) { |
|
129 | - $error_message = is_callable( array( $e, 'getLocalizedMessage' ) ) ? $e->getLocalizedMessage() : $e->getMessage(); |
|
128 | + } catch (Exception $e) { |
|
129 | + $error_message = is_callable(array($e, 'getLocalizedMessage')) ? $e->getLocalizedMessage() : $e->getMessage(); |
|
130 | 130 | /* translators: error message */ |
131 | - $order_note = sprintf( __( 'Stripe Transaction Failed (%s)', 'woocommerce-gateway-stripe' ), $error_message ); |
|
131 | + $order_note = sprintf(__('Stripe Transaction Failed (%s)', 'woocommerce-gateway-stripe'), $error_message); |
|
132 | 132 | |
133 | 133 | // Mark order as failed if not already set, |
134 | 134 | // otherwise, make sure we add the order note so we can detect when someone fails to check out multiple times |
135 | - if ( ! $order->has_status( 'failed' ) ) { |
|
136 | - $order->update_status( 'failed', $order_note ); |
|
135 | + if ( ! $order->has_status('failed')) { |
|
136 | + $order->update_status('failed', $order_note); |
|
137 | 137 | } else { |
138 | - $order->add_order_note( $order_note ); |
|
138 | + $order->add_order_note($order_note); |
|
139 | 139 | } |
140 | 140 | } |
141 | 141 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -23,11 +23,11 @@ discard block |
||
23 | 23 | |
24 | 24 | $this->retry_interval = 1; |
25 | 25 | |
26 | - add_action( 'wp', array( $this, 'maybe_process_redirect_order' ) ); |
|
27 | - add_action( 'woocommerce_order_status_processing', array( $this, 'capture_payment' ) ); |
|
28 | - add_action( 'woocommerce_order_status_completed', array( $this, 'capture_payment' ) ); |
|
29 | - add_action( 'woocommerce_order_status_cancelled', array( $this, 'cancel_payment' ) ); |
|
30 | - add_action( 'woocommerce_order_status_refunded', array( $this, 'cancel_payment' ) ); |
|
26 | + add_action('wp', array($this, 'maybe_process_redirect_order')); |
|
27 | + add_action('woocommerce_order_status_processing', array($this, 'capture_payment')); |
|
28 | + add_action('woocommerce_order_status_completed', array($this, 'capture_payment')); |
|
29 | + add_action('woocommerce_order_status_cancelled', array($this, 'cancel_payment')); |
|
30 | + add_action('woocommerce_order_status_refunded', array($this, 'cancel_payment')); |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | /** |
@@ -51,25 +51,25 @@ discard block |
||
51 | 51 | * @param bool $retry |
52 | 52 | * @param mix $previous_error Any error message from previous request. |
53 | 53 | */ |
54 | - public function process_redirect_payment( $order_id, $retry = true, $previous_error = false ) { |
|
54 | + public function process_redirect_payment($order_id, $retry = true, $previous_error = false) { |
|
55 | 55 | try { |
56 | - $source = wc_clean( $_GET['source'] ); |
|
56 | + $source = wc_clean($_GET['source']); |
|
57 | 57 | |
58 | - if ( empty( $source ) ) { |
|
58 | + if (empty($source)) { |
|
59 | 59 | return; |
60 | 60 | } |
61 | 61 | |
62 | - if ( empty( $order_id ) ) { |
|
62 | + if (empty($order_id)) { |
|
63 | 63 | return; |
64 | 64 | } |
65 | 65 | |
66 | - $order = wc_get_order( $order_id ); |
|
66 | + $order = wc_get_order($order_id); |
|
67 | 67 | |
68 | - if ( ! is_object( $order ) ) { |
|
68 | + if ( ! is_object($order)) { |
|
69 | 69 | return; |
70 | 70 | } |
71 | 71 | |
72 | - if ( $order->has_status( array( 'processing', 'completed', 'on-hold' ) ) ) { |
|
72 | + if ($order->has_status(array('processing', 'completed', 'on-hold'))) { |
|
73 | 73 | return; |
74 | 74 | } |
75 | 75 | |
@@ -77,119 +77,119 @@ discard block |
||
77 | 77 | $response = null; |
78 | 78 | |
79 | 79 | // This will throw exception if not valid. |
80 | - $this->validate_minimum_order_amount( $order ); |
|
80 | + $this->validate_minimum_order_amount($order); |
|
81 | 81 | |
82 | - WC_Stripe_Logger::log( "Info: (Redirect) Begin processing payment for order $order_id for the amount of {$order->get_total()}" ); |
|
82 | + WC_Stripe_Logger::log("Info: (Redirect) Begin processing payment for order $order_id for the amount of {$order->get_total()}"); |
|
83 | 83 | |
84 | 84 | /** |
85 | 85 | * First check if the source is chargeable at this time. If not, |
86 | 86 | * webhook will take care of it later. |
87 | 87 | */ |
88 | - $source_info = WC_Stripe_API::retrieve( 'sources/' . $source ); |
|
88 | + $source_info = WC_Stripe_API::retrieve('sources/' . $source); |
|
89 | 89 | |
90 | - if ( ! empty( $source_info->error ) ) { |
|
91 | - throw new WC_Stripe_Exception( print_r( $source_info, true ), $source_info->error->message ); |
|
90 | + if ( ! empty($source_info->error)) { |
|
91 | + throw new WC_Stripe_Exception(print_r($source_info, true), $source_info->error->message); |
|
92 | 92 | } |
93 | 93 | |
94 | - if ( 'failed' === $source_info->status || 'canceled' === $source_info->status ) { |
|
95 | - throw new WC_Stripe_Exception( print_r( $source_info, true ), __( 'Unable to process this payment, please try again or use alternative method.', 'woocommerce-gateway-stripe' ) ); |
|
94 | + if ('failed' === $source_info->status || 'canceled' === $source_info->status) { |
|
95 | + throw new WC_Stripe_Exception(print_r($source_info, true), __('Unable to process this payment, please try again or use alternative method.', 'woocommerce-gateway-stripe')); |
|
96 | 96 | } |
97 | 97 | |
98 | 98 | // If already consumed, then ignore request. |
99 | - if ( 'consumed' === $source_info->status ) { |
|
99 | + if ('consumed' === $source_info->status) { |
|
100 | 100 | return; |
101 | 101 | } |
102 | 102 | |
103 | 103 | // If not chargeable, then ignore request. |
104 | - if ( 'chargeable' !== $source_info->status ) { |
|
104 | + if ('chargeable' !== $source_info->status) { |
|
105 | 105 | return; |
106 | 106 | } |
107 | 107 | |
108 | 108 | // Prep source object. |
109 | 109 | $source_object = new stdClass(); |
110 | 110 | $source_object->token_id = ''; |
111 | - $source_object->customer = $this->get_stripe_customer_id( $order ); |
|
111 | + $source_object->customer = $this->get_stripe_customer_id($order); |
|
112 | 112 | $source_object->source = $source_info->id; |
113 | 113 | $source_object->status = 'chargeable'; |
114 | 114 | |
115 | 115 | /* If we're doing a retry and source is chargeable, we need to pass |
116 | 116 | * a different idempotency key and retry for success. |
117 | 117 | */ |
118 | - if ( $this->need_update_idempotency_key( $source_object, $previous_error ) ) { |
|
119 | - add_filter( 'wc_stripe_idempotency_key', array( $this, 'change_idempotency_key' ), 10, 2 ); |
|
118 | + if ($this->need_update_idempotency_key($source_object, $previous_error)) { |
|
119 | + add_filter('wc_stripe_idempotency_key', array($this, 'change_idempotency_key'), 10, 2); |
|
120 | 120 | } |
121 | 121 | |
122 | 122 | // Make the request. |
123 | - $response = WC_Stripe_API::request( $this->generate_payment_request( $order, $source_object ), 'charges', 'POST', true ); |
|
123 | + $response = WC_Stripe_API::request($this->generate_payment_request($order, $source_object), 'charges', 'POST', true); |
|
124 | 124 | $headers = $response['headers']; |
125 | 125 | $response = $response['body']; |
126 | 126 | |
127 | - if ( ! empty( $response->error ) ) { |
|
127 | + if ( ! empty($response->error)) { |
|
128 | 128 | // Customer param wrong? The user may have been deleted on stripe's end. Remove customer_id. Can be retried without. |
129 | - if ( $this->is_no_such_customer_error( $response->error ) ) { |
|
130 | - delete_user_option( $order->get_customer_id(), '_stripe_customer_id' ); |
|
131 | - $order->delete_meta_data( '_stripe_customer_id' ); |
|
129 | + if ($this->is_no_such_customer_error($response->error)) { |
|
130 | + delete_user_option($order->get_customer_id(), '_stripe_customer_id'); |
|
131 | + $order->delete_meta_data('_stripe_customer_id'); |
|
132 | 132 | $order->save(); |
133 | 133 | } |
134 | 134 | |
135 | - if ( $this->is_no_such_token_error( $response->error ) && $prepared_source->token_id ) { |
|
135 | + if ($this->is_no_such_token_error($response->error) && $prepared_source->token_id) { |
|
136 | 136 | // Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message. |
137 | - $wc_token = WC_Payment_Tokens::get( $prepared_source->token_id ); |
|
137 | + $wc_token = WC_Payment_Tokens::get($prepared_source->token_id); |
|
138 | 138 | $wc_token->delete(); |
139 | - $localized_message = __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' ); |
|
140 | - $order->add_order_note( $localized_message ); |
|
141 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
139 | + $localized_message = __('This card is no longer available and has been removed.', 'woocommerce-gateway-stripe'); |
|
140 | + $order->add_order_note($localized_message); |
|
141 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
142 | 142 | } |
143 | 143 | |
144 | 144 | // We want to retry. |
145 | - if ( $this->is_retryable_error( $response->error ) ) { |
|
146 | - if ( $retry ) { |
|
145 | + if ($this->is_retryable_error($response->error)) { |
|
146 | + if ($retry) { |
|
147 | 147 | // Don't do anymore retries after this. |
148 | - if ( 5 <= $this->retry_interval ) { |
|
149 | - return $this->process_redirect_payment( $order_id, false, $response->error ); |
|
148 | + if (5 <= $this->retry_interval) { |
|
149 | + return $this->process_redirect_payment($order_id, false, $response->error); |
|
150 | 150 | } |
151 | 151 | |
152 | - sleep( $this->retry_interval ); |
|
152 | + sleep($this->retry_interval); |
|
153 | 153 | |
154 | 154 | $this->retry_interval++; |
155 | - return $this->process_redirect_payment( $order_id, true, $response->error ); |
|
155 | + return $this->process_redirect_payment($order_id, true, $response->error); |
|
156 | 156 | } else { |
157 | - $localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' ); |
|
158 | - $order->add_order_note( $localized_message ); |
|
159 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
157 | + $localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe'); |
|
158 | + $order->add_order_note($localized_message); |
|
159 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
160 | 160 | } |
161 | 161 | } |
162 | 162 | |
163 | 163 | $localized_messages = WC_Stripe_Helper::get_localized_messages(); |
164 | 164 | |
165 | - if ( 'card_error' === $response->error->type ) { |
|
166 | - $message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message; |
|
165 | + if ('card_error' === $response->error->type) { |
|
166 | + $message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message; |
|
167 | 167 | } else { |
168 | - $message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message; |
|
168 | + $message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message; |
|
169 | 169 | } |
170 | 170 | |
171 | - throw new WC_Stripe_Exception( print_r( $response, true ), $message ); |
|
171 | + throw new WC_Stripe_Exception(print_r($response, true), $message); |
|
172 | 172 | } |
173 | 173 | |
174 | 174 | // To prevent double processing the order on WC side. |
175 | - if ( ! $this->is_original_request( $headers ) ) { |
|
175 | + if ( ! $this->is_original_request($headers)) { |
|
176 | 176 | return; |
177 | 177 | } |
178 | 178 | |
179 | - do_action( 'wc_gateway_stripe_process_redirect_payment', $response, $order ); |
|
179 | + do_action('wc_gateway_stripe_process_redirect_payment', $response, $order); |
|
180 | 180 | |
181 | - $this->process_response( $response, $order ); |
|
181 | + $this->process_response($response, $order); |
|
182 | 182 | |
183 | - } catch ( WC_Stripe_Exception $e ) { |
|
184 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
183 | + } catch (WC_Stripe_Exception $e) { |
|
184 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
185 | 185 | |
186 | - do_action( 'wc_gateway_stripe_process_redirect_payment_error', $e, $order ); |
|
186 | + do_action('wc_gateway_stripe_process_redirect_payment_error', $e, $order); |
|
187 | 187 | |
188 | 188 | /* translators: error message */ |
189 | - $order->update_status( 'failed', sprintf( __( 'Stripe payment failed: %s', 'woocommerce-gateway-stripe' ), $e->getLocalizedMessage() ) ); |
|
189 | + $order->update_status('failed', sprintf(__('Stripe payment failed: %s', 'woocommerce-gateway-stripe'), $e->getLocalizedMessage())); |
|
190 | 190 | |
191 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
192 | - wp_safe_redirect( wc_get_checkout_url() ); |
|
191 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
192 | + wp_safe_redirect(wc_get_checkout_url()); |
|
193 | 193 | exit; |
194 | 194 | } |
195 | 195 | } |
@@ -201,13 +201,13 @@ discard block |
||
201 | 201 | * @version 4.0.0 |
202 | 202 | */ |
203 | 203 | public function maybe_process_redirect_order() { |
204 | - if ( ! is_order_received_page() || empty( $_GET['client_secret'] ) || empty( $_GET['source'] ) ) { |
|
204 | + if ( ! is_order_received_page() || empty($_GET['client_secret']) || empty($_GET['source'])) { |
|
205 | 205 | return; |
206 | 206 | } |
207 | 207 | |
208 | - $order_id = wc_clean( $_GET['order_id'] ); |
|
208 | + $order_id = wc_clean($_GET['order_id']); |
|
209 | 209 | |
210 | - $this->process_redirect_payment( $order_id ); |
|
210 | + $this->process_redirect_payment($order_id); |
|
211 | 211 | } |
212 | 212 | |
213 | 213 | /** |
@@ -217,32 +217,32 @@ discard block |
||
217 | 217 | * @version 4.0.0 |
218 | 218 | * @param int $order_id |
219 | 219 | */ |
220 | - public function capture_payment( $order_id ) { |
|
221 | - $order = wc_get_order( $order_id ); |
|
220 | + public function capture_payment($order_id) { |
|
221 | + $order = wc_get_order($order_id); |
|
222 | 222 | |
223 | - if ( 'stripe' === $order->get_payment_method() ) { |
|
223 | + if ('stripe' === $order->get_payment_method()) { |
|
224 | 224 | $charge = $order->get_transaction_id(); |
225 | - $captured = $order->get_meta( '_stripe_charge_captured', true ); |
|
225 | + $captured = $order->get_meta('_stripe_charge_captured', true); |
|
226 | 226 | $is_stripe_captured = false; |
227 | 227 | |
228 | - if ( $charge && 'no' === $captured ) { |
|
228 | + if ($charge && 'no' === $captured) { |
|
229 | 229 | $order_total = $order->get_total(); |
230 | 230 | |
231 | - if ( 0 < $order->get_total_refunded() ) { |
|
231 | + if (0 < $order->get_total_refunded()) { |
|
232 | 232 | $order_total = $order_total - $order->get_total_refunded(); |
233 | 233 | } |
234 | 234 | |
235 | - $intent = $this->get_intent_from_order( $order ); |
|
236 | - if ( $intent ) { |
|
235 | + $intent = $this->get_intent_from_order($order); |
|
236 | + if ($intent) { |
|
237 | 237 | // If the order has a Payment Intent, then the Intent itself must be captured, not the Charge |
238 | - if ( ! empty( $intent->error ) ) { |
|
238 | + if ( ! empty($intent->error)) { |
|
239 | 239 | /* translators: error message */ |
240 | - $order->add_order_note( sprintf( __( 'Unable to capture charge! %s', 'woocommerce-gateway-stripe' ), $intent->error->message ) ); |
|
241 | - } elseif ( 'requires_capture' === $intent->status ) { |
|
242 | - $level3_data = $this->get_level3_data_from_order( $order ); |
|
240 | + $order->add_order_note(sprintf(__('Unable to capture charge! %s', 'woocommerce-gateway-stripe'), $intent->error->message)); |
|
241 | + } elseif ('requires_capture' === $intent->status) { |
|
242 | + $level3_data = $this->get_level3_data_from_order($order); |
|
243 | 243 | $result = WC_Stripe_API::request_with_level3_data( |
244 | 244 | array( |
245 | - 'amount' => WC_Stripe_Helper::get_stripe_amount( $order_total ), |
|
245 | + 'amount' => WC_Stripe_Helper::get_stripe_amount($order_total), |
|
246 | 246 | 'expand[]' => 'charges.data.balance_transaction', |
247 | 247 | ), |
248 | 248 | 'payment_intents/' . $intent->id . '/capture', |
@@ -250,30 +250,30 @@ discard block |
||
250 | 250 | $order |
251 | 251 | ); |
252 | 252 | |
253 | - if ( ! empty( $result->error ) ) { |
|
253 | + if ( ! empty($result->error)) { |
|
254 | 254 | /* translators: error message */ |
255 | - $order->update_status( 'failed', sprintf( __( 'Unable to capture charge! %s', 'woocommerce-gateway-stripe' ), $result->error->message ) ); |
|
255 | + $order->update_status('failed', sprintf(__('Unable to capture charge! %s', 'woocommerce-gateway-stripe'), $result->error->message)); |
|
256 | 256 | } else { |
257 | 257 | $is_stripe_captured = true; |
258 | - $result = end( $result->charges->data ); |
|
258 | + $result = end($result->charges->data); |
|
259 | 259 | } |
260 | - } elseif ( 'succeeded' === $intent->status ) { |
|
260 | + } elseif ('succeeded' === $intent->status) { |
|
261 | 261 | $is_stripe_captured = true; |
262 | 262 | } |
263 | 263 | } else { |
264 | 264 | // The order doesn't have a Payment Intent, fall back to capturing the Charge directly |
265 | 265 | |
266 | 266 | // First retrieve charge to see if it has been captured. |
267 | - $result = WC_Stripe_API::retrieve( 'charges/' . $charge ); |
|
267 | + $result = WC_Stripe_API::retrieve('charges/' . $charge); |
|
268 | 268 | |
269 | - if ( ! empty( $result->error ) ) { |
|
269 | + if ( ! empty($result->error)) { |
|
270 | 270 | /* translators: error message */ |
271 | - $order->add_order_note( sprintf( __( 'Unable to capture charge! %s', 'woocommerce-gateway-stripe' ), $result->error->message ) ); |
|
272 | - } elseif ( false === $result->captured ) { |
|
273 | - $level3_data = $this->get_level3_data_from_order( $order ); |
|
271 | + $order->add_order_note(sprintf(__('Unable to capture charge! %s', 'woocommerce-gateway-stripe'), $result->error->message)); |
|
272 | + } elseif (false === $result->captured) { |
|
273 | + $level3_data = $this->get_level3_data_from_order($order); |
|
274 | 274 | $result = WC_Stripe_API::request_with_level3_data( |
275 | 275 | array( |
276 | - 'amount' => WC_Stripe_Helper::get_stripe_amount( $order_total ), |
|
276 | + 'amount' => WC_Stripe_Helper::get_stripe_amount($order_total), |
|
277 | 277 | 'expand[]' => 'balance_transaction', |
278 | 278 | ), |
279 | 279 | 'charges/' . $charge . '/capture', |
@@ -281,34 +281,34 @@ discard block |
||
281 | 281 | $order |
282 | 282 | ); |
283 | 283 | |
284 | - if ( ! empty( $result->error ) ) { |
|
284 | + if ( ! empty($result->error)) { |
|
285 | 285 | /* translators: error message */ |
286 | - $order->update_status( 'failed', sprintf( __( 'Unable to capture charge! %s', 'woocommerce-gateway-stripe' ), $result->error->message ) ); |
|
286 | + $order->update_status('failed', sprintf(__('Unable to capture charge! %s', 'woocommerce-gateway-stripe'), $result->error->message)); |
|
287 | 287 | } else { |
288 | 288 | $is_stripe_captured = true; |
289 | 289 | } |
290 | - } elseif ( true === $result->captured ) { |
|
290 | + } elseif (true === $result->captured) { |
|
291 | 291 | $is_stripe_captured = true; |
292 | 292 | } |
293 | 293 | } |
294 | 294 | |
295 | - if ( $is_stripe_captured ) { |
|
295 | + if ($is_stripe_captured) { |
|
296 | 296 | /* translators: transaction id */ |
297 | - $order->add_order_note( sprintf( __( 'Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe' ), $result->id ) ); |
|
298 | - $order->update_meta_data( '_stripe_charge_captured', 'yes' ); |
|
297 | + $order->add_order_note(sprintf(__('Stripe charge complete (Charge ID: %s)', 'woocommerce-gateway-stripe'), $result->id)); |
|
298 | + $order->update_meta_data('_stripe_charge_captured', 'yes'); |
|
299 | 299 | |
300 | 300 | // Store other data such as fees |
301 | - $order->set_transaction_id( $result->id ); |
|
301 | + $order->set_transaction_id($result->id); |
|
302 | 302 | |
303 | - if ( is_callable( array( $order, 'save' ) ) ) { |
|
303 | + if (is_callable(array($order, 'save'))) { |
|
304 | 304 | $order->save(); |
305 | 305 | } |
306 | 306 | |
307 | - $this->update_fees( $order, $result->balance_transaction->id ); |
|
307 | + $this->update_fees($order, $result->balance_transaction->id); |
|
308 | 308 | } |
309 | 309 | |
310 | 310 | // This hook fires when admin manually changes order status to processing or completed. |
311 | - do_action( 'woocommerce_stripe_process_manual_capture', $order, $result ); |
|
311 | + do_action('woocommerce_stripe_process_manual_capture', $order, $result); |
|
312 | 312 | } |
313 | 313 | } |
314 | 314 | } |
@@ -320,17 +320,17 @@ discard block |
||
320 | 320 | * @version 4.2.2 |
321 | 321 | * @param int $order_id |
322 | 322 | */ |
323 | - public function cancel_payment( $order_id ) { |
|
324 | - $order = wc_get_order( $order_id ); |
|
323 | + public function cancel_payment($order_id) { |
|
324 | + $order = wc_get_order($order_id); |
|
325 | 325 | |
326 | - if ( 'stripe' === $order->get_payment_method() ) { |
|
327 | - $captured = $order->get_meta( '_stripe_charge_captured', true ); |
|
328 | - if ( 'no' === $captured ) { |
|
329 | - $this->process_refund( $order_id ); |
|
326 | + if ('stripe' === $order->get_payment_method()) { |
|
327 | + $captured = $order->get_meta('_stripe_charge_captured', true); |
|
328 | + if ('no' === $captured) { |
|
329 | + $this->process_refund($order_id); |
|
330 | 330 | } |
331 | 331 | |
332 | 332 | // This hook fires when admin manually changes order status to cancel. |
333 | - do_action( 'woocommerce_stripe_process_manual_cancel', $order ); |
|
333 | + do_action('woocommerce_stripe_process_manual_cancel', $order); |
|
334 | 334 | } |
335 | 335 | } |
336 | 336 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -22,12 +22,12 @@ discard block |
||
22 | 22 | * @param object $order |
23 | 23 | * @return string $currency |
24 | 24 | */ |
25 | - public static function get_stripe_currency( $order = null ) { |
|
26 | - if ( is_null( $order ) ) { |
|
25 | + public static function get_stripe_currency($order = null) { |
|
26 | + if (is_null($order)) { |
|
27 | 27 | return false; |
28 | 28 | } |
29 | 29 | |
30 | - return $order->get_meta( self::META_NAME_STRIPE_CURRENCY, true ); |
|
30 | + return $order->get_meta(self::META_NAME_STRIPE_CURRENCY, true); |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | /** |
@@ -37,12 +37,12 @@ discard block |
||
37 | 37 | * @param object $order |
38 | 38 | * @param string $currency |
39 | 39 | */ |
40 | - public static function update_stripe_currency( $order = null, $currency ) { |
|
41 | - if ( is_null( $order ) ) { |
|
40 | + public static function update_stripe_currency($order = null, $currency) { |
|
41 | + if (is_null($order)) { |
|
42 | 42 | return false; |
43 | 43 | } |
44 | 44 | |
45 | - $order->update_meta_data( self::META_NAME_STRIPE_CURRENCY, $currency ); |
|
45 | + $order->update_meta_data(self::META_NAME_STRIPE_CURRENCY, $currency); |
|
46 | 46 | } |
47 | 47 | |
48 | 48 | /** |
@@ -52,20 +52,20 @@ discard block |
||
52 | 52 | * @param object $order |
53 | 53 | * @return string $amount |
54 | 54 | */ |
55 | - public static function get_stripe_fee( $order = null ) { |
|
56 | - if ( is_null( $order ) ) { |
|
55 | + public static function get_stripe_fee($order = null) { |
|
56 | + if (is_null($order)) { |
|
57 | 57 | return false; |
58 | 58 | } |
59 | 59 | |
60 | - $amount = $order->get_meta( self::META_NAME_FEE, true ); |
|
60 | + $amount = $order->get_meta(self::META_NAME_FEE, true); |
|
61 | 61 | |
62 | 62 | // If not found let's check for legacy name. |
63 | - if ( empty( $amount ) ) { |
|
64 | - $amount = $order->get_meta( self::LEGACY_META_NAME_FEE, true ); |
|
63 | + if (empty($amount)) { |
|
64 | + $amount = $order->get_meta(self::LEGACY_META_NAME_FEE, true); |
|
65 | 65 | |
66 | 66 | // If found update to new name. |
67 | - if ( $amount ) { |
|
68 | - self::update_stripe_fee( $order, $amount ); |
|
67 | + if ($amount) { |
|
68 | + self::update_stripe_fee($order, $amount); |
|
69 | 69 | } |
70 | 70 | } |
71 | 71 | |
@@ -79,12 +79,12 @@ discard block |
||
79 | 79 | * @param object $order |
80 | 80 | * @param float $amount |
81 | 81 | */ |
82 | - public static function update_stripe_fee( $order = null, $amount = 0.0 ) { |
|
83 | - if ( is_null( $order ) ) { |
|
82 | + public static function update_stripe_fee($order = null, $amount = 0.0) { |
|
83 | + if (is_null($order)) { |
|
84 | 84 | return false; |
85 | 85 | } |
86 | 86 | |
87 | - $order->update_meta_data( self::META_NAME_FEE, $amount ); |
|
87 | + $order->update_meta_data(self::META_NAME_FEE, $amount); |
|
88 | 88 | } |
89 | 89 | |
90 | 90 | /** |
@@ -93,15 +93,15 @@ discard block |
||
93 | 93 | * @since 4.1.0 |
94 | 94 | * @param object $order |
95 | 95 | */ |
96 | - public static function delete_stripe_fee( $order = null ) { |
|
97 | - if ( is_null( $order ) ) { |
|
96 | + public static function delete_stripe_fee($order = null) { |
|
97 | + if (is_null($order)) { |
|
98 | 98 | return false; |
99 | 99 | } |
100 | 100 | |
101 | 101 | $order_id = $order->get_id(); |
102 | 102 | |
103 | - delete_post_meta( $order_id, self::META_NAME_FEE ); |
|
104 | - delete_post_meta( $order_id, self::LEGACY_META_NAME_FEE ); |
|
103 | + delete_post_meta($order_id, self::META_NAME_FEE); |
|
104 | + delete_post_meta($order_id, self::LEGACY_META_NAME_FEE); |
|
105 | 105 | } |
106 | 106 | |
107 | 107 | /** |
@@ -111,20 +111,20 @@ discard block |
||
111 | 111 | * @param object $order |
112 | 112 | * @return string $amount |
113 | 113 | */ |
114 | - public static function get_stripe_net( $order = null ) { |
|
115 | - if ( is_null( $order ) ) { |
|
114 | + public static function get_stripe_net($order = null) { |
|
115 | + if (is_null($order)) { |
|
116 | 116 | return false; |
117 | 117 | } |
118 | 118 | |
119 | - $amount = $order->get_meta( self::META_NAME_NET, true ); |
|
119 | + $amount = $order->get_meta(self::META_NAME_NET, true); |
|
120 | 120 | |
121 | 121 | // If not found let's check for legacy name. |
122 | - if ( empty( $amount ) ) { |
|
123 | - $amount = $order->get_meta( self::LEGACY_META_NAME_NET, true ); |
|
122 | + if (empty($amount)) { |
|
123 | + $amount = $order->get_meta(self::LEGACY_META_NAME_NET, true); |
|
124 | 124 | |
125 | 125 | // If found update to new name. |
126 | - if ( $amount ) { |
|
127 | - self::update_stripe_net( $order, $amount ); |
|
126 | + if ($amount) { |
|
127 | + self::update_stripe_net($order, $amount); |
|
128 | 128 | } |
129 | 129 | } |
130 | 130 | |
@@ -138,12 +138,12 @@ discard block |
||
138 | 138 | * @param object $order |
139 | 139 | * @param float $amount |
140 | 140 | */ |
141 | - public static function update_stripe_net( $order = null, $amount = 0.0 ) { |
|
142 | - if ( is_null( $order ) ) { |
|
141 | + public static function update_stripe_net($order = null, $amount = 0.0) { |
|
142 | + if (is_null($order)) { |
|
143 | 143 | return false; |
144 | 144 | } |
145 | 145 | |
146 | - $order->update_meta_data( self::META_NAME_NET, $amount ); |
|
146 | + $order->update_meta_data(self::META_NAME_NET, $amount); |
|
147 | 147 | } |
148 | 148 | |
149 | 149 | /** |
@@ -152,15 +152,15 @@ discard block |
||
152 | 152 | * @since 4.1.0 |
153 | 153 | * @param object $order |
154 | 154 | */ |
155 | - public static function delete_stripe_net( $order = null ) { |
|
156 | - if ( is_null( $order ) ) { |
|
155 | + public static function delete_stripe_net($order = null) { |
|
156 | + if (is_null($order)) { |
|
157 | 157 | return false; |
158 | 158 | } |
159 | 159 | |
160 | 160 | $order_id = $order->get_id(); |
161 | 161 | |
162 | - delete_post_meta( $order_id, self::META_NAME_NET ); |
|
163 | - delete_post_meta( $order_id, self::LEGACY_META_NAME_NET ); |
|
162 | + delete_post_meta($order_id, self::META_NAME_NET); |
|
163 | + delete_post_meta($order_id, self::LEGACY_META_NAME_NET); |
|
164 | 164 | } |
165 | 165 | |
166 | 166 | /** |
@@ -171,15 +171,15 @@ discard block |
||
171 | 171 | * |
172 | 172 | * @return float|int |
173 | 173 | */ |
174 | - public static function get_stripe_amount( $total, $currency = '' ) { |
|
175 | - if ( ! $currency ) { |
|
174 | + public static function get_stripe_amount($total, $currency = '') { |
|
175 | + if ( ! $currency) { |
|
176 | 176 | $currency = get_woocommerce_currency(); |
177 | 177 | } |
178 | 178 | |
179 | - if ( in_array( strtolower( $currency ), self::no_decimal_currencies() ) ) { |
|
180 | - return absint( $total ); |
|
179 | + if (in_array(strtolower($currency), self::no_decimal_currencies())) { |
|
180 | + return absint($total); |
|
181 | 181 | } else { |
182 | - return absint( wc_format_decimal( ( (float) $total * 100 ), wc_get_price_decimals() ) ); // In cents. |
|
182 | + return absint(wc_format_decimal(((float) $total * 100), wc_get_price_decimals())); // In cents. |
|
183 | 183 | } |
184 | 184 | } |
185 | 185 | |
@@ -194,24 +194,24 @@ discard block |
||
194 | 194 | return apply_filters( |
195 | 195 | 'wc_stripe_localized_messages', |
196 | 196 | array( |
197 | - 'invalid_number' => __( 'The card number is not a valid credit card number.', 'woocommerce-gateway-stripe' ), |
|
198 | - 'invalid_expiry_month' => __( 'The card\'s expiration month is invalid.', 'woocommerce-gateway-stripe' ), |
|
199 | - 'invalid_expiry_year' => __( 'The card\'s expiration year is invalid.', 'woocommerce-gateway-stripe' ), |
|
200 | - 'invalid_cvc' => __( 'The card\'s security code is invalid.', 'woocommerce-gateway-stripe' ), |
|
201 | - 'incorrect_number' => __( 'The card number is incorrect.', 'woocommerce-gateway-stripe' ), |
|
202 | - 'incomplete_number' => __( 'The card number is incomplete.', 'woocommerce-gateway-stripe' ), |
|
203 | - 'incomplete_cvc' => __( 'The card\'s security code is incomplete.', 'woocommerce-gateway-stripe' ), |
|
204 | - 'incomplete_expiry' => __( 'The card\'s expiration date is incomplete.', 'woocommerce-gateway-stripe' ), |
|
205 | - 'expired_card' => __( 'The card has expired.', 'woocommerce-gateway-stripe' ), |
|
206 | - 'incorrect_cvc' => __( 'The card\'s security code is incorrect.', 'woocommerce-gateway-stripe' ), |
|
207 | - 'incorrect_zip' => __( 'The card\'s zip code failed validation.', 'woocommerce-gateway-stripe' ), |
|
208 | - 'invalid_expiry_year_past' => __( 'The card\'s expiration year is in the past', 'woocommerce-gateway-stripe' ), |
|
209 | - 'card_declined' => __( 'The card was declined.', 'woocommerce-gateway-stripe' ), |
|
210 | - 'missing' => __( 'There is no card on a customer that is being charged.', 'woocommerce-gateway-stripe' ), |
|
211 | - 'processing_error' => __( 'An error occurred while processing the card.', 'woocommerce-gateway-stripe' ), |
|
212 | - 'invalid_request_error' => __( 'Unable to process this payment, please try again or use alternative method.', 'woocommerce-gateway-stripe' ), |
|
213 | - 'invalid_sofort_country' => __( 'The billing country is not accepted by SOFORT. Please try another country.', 'woocommerce-gateway-stripe' ), |
|
214 | - 'email_invalid' => __( 'Invalid email address, please correct and try again.', 'woocommerce-gateway-stripe' ), |
|
197 | + 'invalid_number' => __('The card number is not a valid credit card number.', 'woocommerce-gateway-stripe'), |
|
198 | + 'invalid_expiry_month' => __('The card\'s expiration month is invalid.', 'woocommerce-gateway-stripe'), |
|
199 | + 'invalid_expiry_year' => __('The card\'s expiration year is invalid.', 'woocommerce-gateway-stripe'), |
|
200 | + 'invalid_cvc' => __('The card\'s security code is invalid.', 'woocommerce-gateway-stripe'), |
|
201 | + 'incorrect_number' => __('The card number is incorrect.', 'woocommerce-gateway-stripe'), |
|
202 | + 'incomplete_number' => __('The card number is incomplete.', 'woocommerce-gateway-stripe'), |
|
203 | + 'incomplete_cvc' => __('The card\'s security code is incomplete.', 'woocommerce-gateway-stripe'), |
|
204 | + 'incomplete_expiry' => __('The card\'s expiration date is incomplete.', 'woocommerce-gateway-stripe'), |
|
205 | + 'expired_card' => __('The card has expired.', 'woocommerce-gateway-stripe'), |
|
206 | + 'incorrect_cvc' => __('The card\'s security code is incorrect.', 'woocommerce-gateway-stripe'), |
|
207 | + 'incorrect_zip' => __('The card\'s zip code failed validation.', 'woocommerce-gateway-stripe'), |
|
208 | + 'invalid_expiry_year_past' => __('The card\'s expiration year is in the past', 'woocommerce-gateway-stripe'), |
|
209 | + 'card_declined' => __('The card was declined.', 'woocommerce-gateway-stripe'), |
|
210 | + 'missing' => __('There is no card on a customer that is being charged.', 'woocommerce-gateway-stripe'), |
|
211 | + 'processing_error' => __('An error occurred while processing the card.', 'woocommerce-gateway-stripe'), |
|
212 | + 'invalid_request_error' => __('Unable to process this payment, please try again or use alternative method.', 'woocommerce-gateway-stripe'), |
|
213 | + 'invalid_sofort_country' => __('The billing country is not accepted by SOFORT. Please try another country.', 'woocommerce-gateway-stripe'), |
|
214 | + 'email_invalid' => __('Invalid email address, please correct and try again.', 'woocommerce-gateway-stripe'), |
|
215 | 215 | ) |
216 | 216 | ); |
217 | 217 | } |
@@ -252,24 +252,24 @@ discard block |
||
252 | 252 | * @param string $type Type of number to format |
253 | 253 | * @return string |
254 | 254 | */ |
255 | - public static function format_balance_fee( $balance_transaction, $type = 'fee' ) { |
|
256 | - if ( ! is_object( $balance_transaction ) ) { |
|
255 | + public static function format_balance_fee($balance_transaction, $type = 'fee') { |
|
256 | + if ( ! is_object($balance_transaction)) { |
|
257 | 257 | return; |
258 | 258 | } |
259 | 259 | |
260 | - if ( in_array( strtolower( $balance_transaction->currency ), self::no_decimal_currencies() ) ) { |
|
261 | - if ( 'fee' === $type ) { |
|
260 | + if (in_array(strtolower($balance_transaction->currency), self::no_decimal_currencies())) { |
|
261 | + if ('fee' === $type) { |
|
262 | 262 | return $balance_transaction->fee; |
263 | 263 | } |
264 | 264 | |
265 | 265 | return $balance_transaction->net; |
266 | 266 | } |
267 | 267 | |
268 | - if ( 'fee' === $type ) { |
|
269 | - return number_format( $balance_transaction->fee / 100, 2, '.', '' ); |
|
268 | + if ('fee' === $type) { |
|
269 | + return number_format($balance_transaction->fee / 100, 2, '.', ''); |
|
270 | 270 | } |
271 | 271 | |
272 | - return number_format( $balance_transaction->net / 100, 2, '.', '' ); |
|
272 | + return number_format($balance_transaction->net / 100, 2, '.', ''); |
|
273 | 273 | } |
274 | 274 | |
275 | 275 | /** |
@@ -277,7 +277,7 @@ discard block |
||
277 | 277 | */ |
278 | 278 | public static function get_minimum_amount() { |
279 | 279 | // Check order amount |
280 | - switch ( get_woocommerce_currency() ) { |
|
280 | + switch (get_woocommerce_currency()) { |
|
281 | 281 | case 'USD': |
282 | 282 | case 'CAD': |
283 | 283 | case 'EUR': |
@@ -322,14 +322,14 @@ discard block |
||
322 | 322 | * @param string $method The payment method to get the settings from. |
323 | 323 | * @param string $setting The name of the setting to get. |
324 | 324 | */ |
325 | - public static function get_settings( $method = null, $setting = null ) { |
|
326 | - $all_settings = null === $method ? get_option( 'woocommerce_stripe_settings', array() ) : get_option( 'woocommerce_stripe_' . $method . '_settings', array() ); |
|
325 | + public static function get_settings($method = null, $setting = null) { |
|
326 | + $all_settings = null === $method ? get_option('woocommerce_stripe_settings', array()) : get_option('woocommerce_stripe_' . $method . '_settings', array()); |
|
327 | 327 | |
328 | - if ( null === $setting ) { |
|
328 | + if (null === $setting) { |
|
329 | 329 | return $all_settings; |
330 | 330 | } |
331 | 331 | |
332 | - return isset( $all_settings[ $setting ] ) ? $all_settings[ $setting ] : ''; |
|
332 | + return isset($all_settings[$setting]) ? $all_settings[$setting] : ''; |
|
333 | 333 | } |
334 | 334 | |
335 | 335 | /** |
@@ -339,7 +339,7 @@ discard block |
||
339 | 339 | * @return bool |
340 | 340 | */ |
341 | 341 | public static function is_pre_orders_exists() { |
342 | - return class_exists( 'WC_Pre_Orders_Order' ); |
|
342 | + return class_exists('WC_Pre_Orders_Order'); |
|
343 | 343 | } |
344 | 344 | |
345 | 345 | /** |
@@ -349,8 +349,8 @@ discard block |
||
349 | 349 | * @param string $version Version to check against. |
350 | 350 | * @return bool |
351 | 351 | */ |
352 | - public static function is_wc_lt( $version ) { |
|
353 | - return version_compare( WC_VERSION, $version, '<' ); |
|
352 | + public static function is_wc_lt($version) { |
|
353 | + return version_compare(WC_VERSION, $version, '<'); |
|
354 | 354 | } |
355 | 355 | |
356 | 356 | /** |
@@ -363,7 +363,7 @@ discard block |
||
363 | 363 | * @return string |
364 | 364 | */ |
365 | 365 | public static function get_webhook_url() { |
366 | - return add_query_arg( 'wc-api', 'wc_stripe', trailingslashit( get_home_url() ) ); |
|
366 | + return add_query_arg('wc-api', 'wc_stripe', trailingslashit(get_home_url())); |
|
367 | 367 | } |
368 | 368 | |
369 | 369 | /** |
@@ -373,13 +373,13 @@ discard block |
||
373 | 373 | * @version 4.0.0 |
374 | 374 | * @param string $source_id |
375 | 375 | */ |
376 | - public static function get_order_by_source_id( $source_id ) { |
|
376 | + public static function get_order_by_source_id($source_id) { |
|
377 | 377 | global $wpdb; |
378 | 378 | |
379 | - $order_id = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $source_id, '_stripe_source_id' ) ); |
|
379 | + $order_id = $wpdb->get_var($wpdb->prepare("SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $source_id, '_stripe_source_id')); |
|
380 | 380 | |
381 | - if ( ! empty( $order_id ) ) { |
|
382 | - return wc_get_order( $order_id ); |
|
381 | + if ( ! empty($order_id)) { |
|
382 | + return wc_get_order($order_id); |
|
383 | 383 | } |
384 | 384 | |
385 | 385 | return false; |
@@ -392,17 +392,17 @@ discard block |
||
392 | 392 | * @since 4.1.16 Return false if charge_id is empty. |
393 | 393 | * @param string $charge_id |
394 | 394 | */ |
395 | - public static function get_order_by_charge_id( $charge_id ) { |
|
395 | + public static function get_order_by_charge_id($charge_id) { |
|
396 | 396 | global $wpdb; |
397 | 397 | |
398 | - if ( empty( $charge_id ) ) { |
|
398 | + if (empty($charge_id)) { |
|
399 | 399 | return false; |
400 | 400 | } |
401 | 401 | |
402 | - $order_id = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $charge_id, '_transaction_id' ) ); |
|
402 | + $order_id = $wpdb->get_var($wpdb->prepare("SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $charge_id, '_transaction_id')); |
|
403 | 403 | |
404 | - if ( ! empty( $order_id ) ) { |
|
405 | - return wc_get_order( $order_id ); |
|
404 | + if ( ! empty($order_id)) { |
|
405 | + return wc_get_order($order_id); |
|
406 | 406 | } |
407 | 407 | |
408 | 408 | return false; |
@@ -415,13 +415,13 @@ discard block |
||
415 | 415 | * @param string $intent_id The ID of the intent. |
416 | 416 | * @return WC_Order|bool Either an order or false when not found. |
417 | 417 | */ |
418 | - public static function get_order_by_intent_id( $intent_id ) { |
|
418 | + public static function get_order_by_intent_id($intent_id) { |
|
419 | 419 | global $wpdb; |
420 | 420 | |
421 | - $order_id = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $intent_id, '_stripe_intent_id' ) ); |
|
421 | + $order_id = $wpdb->get_var($wpdb->prepare("SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $intent_id, '_stripe_intent_id')); |
|
422 | 422 | |
423 | - if ( ! empty( $order_id ) ) { |
|
424 | - return wc_get_order( $order_id ); |
|
423 | + if ( ! empty($order_id)) { |
|
424 | + return wc_get_order($order_id); |
|
425 | 425 | } |
426 | 426 | |
427 | 427 | return false; |
@@ -434,13 +434,13 @@ discard block |
||
434 | 434 | * @param string $intent_id The ID of the intent. |
435 | 435 | * @return WC_Order|bool Either an order or false when not found. |
436 | 436 | */ |
437 | - public static function get_order_by_setup_intent_id( $intent_id ) { |
|
437 | + public static function get_order_by_setup_intent_id($intent_id) { |
|
438 | 438 | global $wpdb; |
439 | 439 | |
440 | - $order_id = $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $intent_id, '_stripe_setup_intent' ) ); |
|
440 | + $order_id = $wpdb->get_var($wpdb->prepare("SELECT DISTINCT ID FROM $wpdb->posts as posts LEFT JOIN $wpdb->postmeta as meta ON posts.ID = meta.post_id WHERE meta.meta_value = %s AND meta.meta_key = %s", $intent_id, '_stripe_setup_intent')); |
|
441 | 441 | |
442 | - if ( ! empty( $order_id ) ) { |
|
443 | - return wc_get_order( $order_id ); |
|
442 | + if ( ! empty($order_id)) { |
|
443 | + return wc_get_order($order_id); |
|
444 | 444 | } |
445 | 445 | |
446 | 446 | return false; |
@@ -456,13 +456,13 @@ discard block |
||
456 | 456 | * @param string $statement_descriptor |
457 | 457 | * @return string $statement_descriptor Sanitized statement descriptor |
458 | 458 | */ |
459 | - public static function clean_statement_descriptor( $statement_descriptor = '' ) { |
|
460 | - $disallowed_characters = array( '<', '>', '"', "'" ); |
|
459 | + public static function clean_statement_descriptor($statement_descriptor = '') { |
|
460 | + $disallowed_characters = array('<', '>', '"', "'"); |
|
461 | 461 | |
462 | 462 | // Remove special characters. |
463 | - $statement_descriptor = str_replace( $disallowed_characters, '', $statement_descriptor ); |
|
463 | + $statement_descriptor = str_replace($disallowed_characters, '', $statement_descriptor); |
|
464 | 464 | |
465 | - $statement_descriptor = substr( trim( $statement_descriptor ), 0, 22 ); |
|
465 | + $statement_descriptor = substr(trim($statement_descriptor), 0, 22); |
|
466 | 466 | |
467 | 467 | return $statement_descriptor; |
468 | 468 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -23,7 +23,7 @@ discard block |
||
23 | 23 | * @since 4.2.0 |
24 | 24 | */ |
25 | 25 | public function __construct() { |
26 | - add_action( 'wc_ajax_wc_stripe_verify_intent', array( $this, 'verify_intent' ) ); |
|
26 | + add_action('wc_ajax_wc_stripe_verify_intent', array($this, 'verify_intent')); |
|
27 | 27 | } |
28 | 28 | |
29 | 29 | /** |
@@ -33,8 +33,8 @@ discard block |
||
33 | 33 | * @return WC_Gateway_Stripe |
34 | 34 | */ |
35 | 35 | protected function get_gateway() { |
36 | - if ( ! isset( $this->gateway ) ) { |
|
37 | - if ( class_exists( 'WC_Subscriptions_Order' ) && function_exists( 'wcs_create_renewal_order' ) ) { |
|
36 | + if ( ! isset($this->gateway)) { |
|
37 | + if (class_exists('WC_Subscriptions_Order') && function_exists('wcs_create_renewal_order')) { |
|
38 | 38 | $class_name = 'WC_Stripe_Subs_Compat'; |
39 | 39 | } else { |
40 | 40 | $class_name = 'WC_Gateway_Stripe'; |
@@ -54,21 +54,21 @@ discard block |
||
54 | 54 | * @return WC_Order |
55 | 55 | */ |
56 | 56 | protected function get_order_from_request() { |
57 | - if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['nonce'] ), 'wc_stripe_confirm_pi' ) ) { |
|
58 | - throw new WC_Stripe_Exception( 'missing-nonce', __( 'CSRF verification failed.', 'woocommerce-gateway-stripe' ) ); |
|
57 | + if ( ! isset($_GET['nonce']) || ! wp_verify_nonce(sanitize_key($_GET['nonce']), 'wc_stripe_confirm_pi')) { |
|
58 | + throw new WC_Stripe_Exception('missing-nonce', __('CSRF verification failed.', 'woocommerce-gateway-stripe')); |
|
59 | 59 | } |
60 | 60 | |
61 | 61 | // Load the order ID. |
62 | 62 | $order_id = null; |
63 | - if ( isset( $_GET['order'] ) && absint( $_GET['order'] ) ) { |
|
64 | - $order_id = absint( $_GET['order'] ); |
|
63 | + if (isset($_GET['order']) && absint($_GET['order'])) { |
|
64 | + $order_id = absint($_GET['order']); |
|
65 | 65 | } |
66 | 66 | |
67 | 67 | // Retrieve the order. |
68 | - $order = wc_get_order( $order_id ); |
|
68 | + $order = wc_get_order($order_id); |
|
69 | 69 | |
70 | - if ( ! $order ) { |
|
71 | - throw new WC_Stripe_Exception( 'missing-order', __( 'Missing order ID for payment confirmation', 'woocommerce-gateway-stripe' ) ); |
|
70 | + if ( ! $order) { |
|
71 | + throw new WC_Stripe_Exception('missing-order', __('Missing order ID for payment confirmation', 'woocommerce-gateway-stripe')); |
|
72 | 72 | } |
73 | 73 | |
74 | 74 | return $order; |
@@ -86,32 +86,32 @@ discard block |
||
86 | 86 | |
87 | 87 | try { |
88 | 88 | $order = $this->get_order_from_request(); |
89 | - } catch ( WC_Stripe_Exception $e ) { |
|
89 | + } catch (WC_Stripe_Exception $e) { |
|
90 | 90 | /* translators: Error message text */ |
91 | - $message = sprintf( __( 'Payment verification error: %s', 'woocommerce-gateway-stripe' ), $e->getLocalizedMessage() ); |
|
92 | - wc_add_notice( esc_html( $message ), 'error' ); |
|
91 | + $message = sprintf(__('Payment verification error: %s', 'woocommerce-gateway-stripe'), $e->getLocalizedMessage()); |
|
92 | + wc_add_notice(esc_html($message), 'error'); |
|
93 | 93 | |
94 | 94 | $redirect_url = $woocommerce->cart->is_empty() |
95 | - ? get_permalink( wc_get_page_id( 'shop' ) ) |
|
95 | + ? get_permalink(wc_get_page_id('shop')) |
|
96 | 96 | : wc_get_checkout_url(); |
97 | 97 | |
98 | - $this->handle_error( $e, $redirect_url ); |
|
98 | + $this->handle_error($e, $redirect_url); |
|
99 | 99 | } |
100 | 100 | |
101 | 101 | try { |
102 | - $gateway->verify_intent_after_checkout( $order ); |
|
102 | + $gateway->verify_intent_after_checkout($order); |
|
103 | 103 | |
104 | - if ( ! isset( $_GET['is_ajax'] ) ) { |
|
105 | - $redirect_url = isset( $_GET['redirect_to'] ) // wpcs: csrf ok. |
|
106 | - ? esc_url_raw( wp_unslash( $_GET['redirect_to'] ) ) // wpcs: csrf ok. |
|
107 | - : $gateway->get_return_url( $order ); |
|
104 | + if ( ! isset($_GET['is_ajax'])) { |
|
105 | + $redirect_url = isset($_GET['redirect_to']) // wpcs: csrf ok. |
|
106 | + ? esc_url_raw(wp_unslash($_GET['redirect_to'])) // wpcs: csrf ok. |
|
107 | + : $gateway->get_return_url($order); |
|
108 | 108 | |
109 | - wp_safe_redirect( $redirect_url ); |
|
109 | + wp_safe_redirect($redirect_url); |
|
110 | 110 | } |
111 | 111 | |
112 | 112 | exit; |
113 | - } catch ( WC_Stripe_Exception $e ) { |
|
114 | - $this->handle_error( $e, $gateway->get_return_url( $order ) ); |
|
113 | + } catch (WC_Stripe_Exception $e) { |
|
114 | + $this->handle_error($e, $gateway->get_return_url($order)); |
|
115 | 115 | } |
116 | 116 | } |
117 | 117 | |
@@ -122,17 +122,17 @@ discard block |
||
122 | 122 | * @param WC_Stripe_Exception $e The exception that was thrown. |
123 | 123 | * @param string $redirect_url An URL to use if a redirect is needed. |
124 | 124 | */ |
125 | - protected function handle_error( $e, $redirect_url ) { |
|
125 | + protected function handle_error($e, $redirect_url) { |
|
126 | 126 | // Log the exception before redirecting. |
127 | - $message = sprintf( 'PaymentIntent verification exception: %s', $e->getLocalizedMessage() ); |
|
128 | - WC_Stripe_Logger::log( $message ); |
|
127 | + $message = sprintf('PaymentIntent verification exception: %s', $e->getLocalizedMessage()); |
|
128 | + WC_Stripe_Logger::log($message); |
|
129 | 129 | |
130 | 130 | // `is_ajax` is only used for PI error reporting, a response is not expected. |
131 | - if ( isset( $_GET['is_ajax'] ) ) { |
|
131 | + if (isset($_GET['is_ajax'])) { |
|
132 | 132 | exit; |
133 | 133 | } |
134 | 134 | |
135 | - wp_safe_redirect( $redirect_url ); |
|
135 | + wp_safe_redirect($redirect_url); |
|
136 | 136 | exit; |
137 | 137 | } |
138 | 138 | } |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -57,9 +57,9 @@ discard block |
||
57 | 57 | */ |
58 | 58 | public function __construct() { |
59 | 59 | $this->id = 'stripe_ideal'; |
60 | - $this->method_title = __( 'Stripe iDeal', 'woocommerce-gateway-stripe' ); |
|
60 | + $this->method_title = __('Stripe iDeal', 'woocommerce-gateway-stripe'); |
|
61 | 61 | /* translators: link */ |
62 | - $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§ion=stripe' ) ); |
|
62 | + $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§ion=stripe')); |
|
63 | 63 | $this->supports = array( |
64 | 64 | 'products', |
65 | 65 | 'refunds', |
@@ -71,23 +71,23 @@ discard block |
||
71 | 71 | // Load the settings. |
72 | 72 | $this->init_settings(); |
73 | 73 | |
74 | - $main_settings = get_option( 'woocommerce_stripe_settings' ); |
|
75 | - $this->title = $this->get_option( 'title' ); |
|
76 | - $this->description = $this->get_option( 'description' ); |
|
77 | - $this->enabled = $this->get_option( 'enabled' ); |
|
78 | - $this->testmode = ( ! empty( $main_settings['testmode'] ) && 'yes' === $main_settings['testmode'] ) ? true : false; |
|
79 | - $this->saved_cards = ( ! empty( $main_settings['saved_cards'] ) && 'yes' === $main_settings['saved_cards'] ) ? true : false; |
|
80 | - $this->publishable_key = ! empty( $main_settings['publishable_key'] ) ? $main_settings['publishable_key'] : ''; |
|
81 | - $this->secret_key = ! empty( $main_settings['secret_key'] ) ? $main_settings['secret_key'] : ''; |
|
82 | - $this->statement_descriptor = ! empty( $main_settings['statement_descriptor'] ) ? $main_settings['statement_descriptor'] : ''; |
|
83 | - |
|
84 | - if ( $this->testmode ) { |
|
85 | - $this->publishable_key = ! empty( $main_settings['test_publishable_key'] ) ? $main_settings['test_publishable_key'] : ''; |
|
86 | - $this->secret_key = ! empty( $main_settings['test_secret_key'] ) ? $main_settings['test_secret_key'] : ''; |
|
74 | + $main_settings = get_option('woocommerce_stripe_settings'); |
|
75 | + $this->title = $this->get_option('title'); |
|
76 | + $this->description = $this->get_option('description'); |
|
77 | + $this->enabled = $this->get_option('enabled'); |
|
78 | + $this->testmode = ( ! empty($main_settings['testmode']) && 'yes' === $main_settings['testmode']) ? true : false; |
|
79 | + $this->saved_cards = ( ! empty($main_settings['saved_cards']) && 'yes' === $main_settings['saved_cards']) ? true : false; |
|
80 | + $this->publishable_key = ! empty($main_settings['publishable_key']) ? $main_settings['publishable_key'] : ''; |
|
81 | + $this->secret_key = ! empty($main_settings['secret_key']) ? $main_settings['secret_key'] : ''; |
|
82 | + $this->statement_descriptor = ! empty($main_settings['statement_descriptor']) ? $main_settings['statement_descriptor'] : ''; |
|
83 | + |
|
84 | + if ($this->testmode) { |
|
85 | + $this->publishable_key = ! empty($main_settings['test_publishable_key']) ? $main_settings['test_publishable_key'] : ''; |
|
86 | + $this->secret_key = ! empty($main_settings['test_secret_key']) ? $main_settings['test_secret_key'] : ''; |
|
87 | 87 | } |
88 | 88 | |
89 | - add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) ); |
|
90 | - add_action( 'wp_enqueue_scripts', array( $this, 'payment_scripts' ) ); |
|
89 | + add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options')); |
|
90 | + add_action('wp_enqueue_scripts', array($this, 'payment_scripts')); |
|
91 | 91 | } |
92 | 92 | |
93 | 93 | /** |
@@ -114,7 +114,7 @@ discard block |
||
114 | 114 | * @return bool |
115 | 115 | */ |
116 | 116 | public function is_available() { |
117 | - if ( ! in_array( get_woocommerce_currency(), $this->get_supported_currency() ) ) { |
|
117 | + if ( ! in_array(get_woocommerce_currency(), $this->get_supported_currency())) { |
|
118 | 118 | return false; |
119 | 119 | } |
120 | 120 | |
@@ -133,9 +133,9 @@ discard block |
||
133 | 133 | |
134 | 134 | $icons_str = ''; |
135 | 135 | |
136 | - $icons_str .= isset( $icons['ideal'] ) ? $icons['ideal'] : ''; |
|
136 | + $icons_str .= isset($icons['ideal']) ? $icons['ideal'] : ''; |
|
137 | 137 | |
138 | - return apply_filters( 'woocommerce_gateway_icon', $icons_str, $this->id ); |
|
138 | + return apply_filters('woocommerce_gateway_icon', $icons_str, $this->id); |
|
139 | 139 | } |
140 | 140 | |
141 | 141 | /** |
@@ -146,19 +146,19 @@ discard block |
||
146 | 146 | * @access public |
147 | 147 | */ |
148 | 148 | public function payment_scripts() { |
149 | - if ( ! is_cart() && ! is_checkout() && ! isset( $_GET['pay_for_order'] ) && ! is_add_payment_method_page() ) { |
|
149 | + if ( ! is_cart() && ! is_checkout() && ! isset($_GET['pay_for_order']) && ! is_add_payment_method_page()) { |
|
150 | 150 | return; |
151 | 151 | } |
152 | 152 | |
153 | - wp_enqueue_style( 'stripe_styles' ); |
|
154 | - wp_enqueue_script( 'woocommerce_stripe' ); |
|
153 | + wp_enqueue_style('stripe_styles'); |
|
154 | + wp_enqueue_script('woocommerce_stripe'); |
|
155 | 155 | } |
156 | 156 | |
157 | 157 | /** |
158 | 158 | * Initialize Gateway Settings Form Fields. |
159 | 159 | */ |
160 | 160 | public function init_form_fields() { |
161 | - $this->form_fields = require( WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-ideal-settings.php' ); |
|
161 | + $this->form_fields = require(WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-ideal-settings.php'); |
|
162 | 162 | } |
163 | 163 | |
164 | 164 | /** |
@@ -171,13 +171,13 @@ discard block |
||
171 | 171 | $description = $this->get_description(); |
172 | 172 | |
173 | 173 | // If paying from order, we need to get total from order not cart. |
174 | - if ( isset( $_GET['pay_for_order'] ) && ! empty( $_GET['key'] ) ) { |
|
175 | - $order = wc_get_order( wc_clean( $wp->query_vars['order-pay'] ) ); |
|
174 | + if (isset($_GET['pay_for_order']) && ! empty($_GET['key'])) { |
|
175 | + $order = wc_get_order(wc_clean($wp->query_vars['order-pay'])); |
|
176 | 176 | $total = $order->get_total(); |
177 | 177 | } |
178 | 178 | |
179 | - if ( is_add_payment_method_page() ) { |
|
180 | - $pay_button_text = __( 'Add Payment', 'woocommerce-gateway-stripe' ); |
|
179 | + if (is_add_payment_method_page()) { |
|
180 | + $pay_button_text = __('Add Payment', 'woocommerce-gateway-stripe'); |
|
181 | 181 | $total = ''; |
182 | 182 | } else { |
183 | 183 | $pay_button_text = ''; |
@@ -185,11 +185,11 @@ discard block |
||
185 | 185 | |
186 | 186 | echo '<div |
187 | 187 | id="stripe-ideal-payment-data" |
188 | - data-amount="' . esc_attr( WC_Stripe_Helper::get_stripe_amount( $total ) ) . '" |
|
189 | - data-currency="' . esc_attr( strtolower( get_woocommerce_currency() ) ) . '">'; |
|
188 | + data-amount="' . esc_attr(WC_Stripe_Helper::get_stripe_amount($total)) . '" |
|
189 | + data-currency="' . esc_attr(strtolower(get_woocommerce_currency())) . '">'; |
|
190 | 190 | |
191 | - if ( $description ) { |
|
192 | - echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $description ) ), $this->id ); |
|
191 | + if ($description) { |
|
192 | + echo apply_filters('wc_stripe_description', wpautop(wp_kses_post($description)), $this->id); |
|
193 | 193 | } |
194 | 194 | |
195 | 195 | echo '</div>'; |
@@ -203,23 +203,23 @@ discard block |
||
203 | 203 | * @param object $order |
204 | 204 | * @return mixed |
205 | 205 | */ |
206 | - public function create_source( $order ) { |
|
206 | + public function create_source($order) { |
|
207 | 207 | $currency = $order->get_currency(); |
208 | - $return_url = $this->get_stripe_return_url( $order ); |
|
208 | + $return_url = $this->get_stripe_return_url($order); |
|
209 | 209 | $post_data = array(); |
210 | - $post_data['amount'] = WC_Stripe_Helper::get_stripe_amount( $order->get_total(), $currency ); |
|
211 | - $post_data['currency'] = strtolower( $currency ); |
|
210 | + $post_data['amount'] = WC_Stripe_Helper::get_stripe_amount($order->get_total(), $currency); |
|
211 | + $post_data['currency'] = strtolower($currency); |
|
212 | 212 | $post_data['type'] = 'ideal'; |
213 | - $post_data['owner'] = $this->get_owner_details( $order ); |
|
214 | - $post_data['redirect'] = array( 'return_url' => $return_url ); |
|
213 | + $post_data['owner'] = $this->get_owner_details($order); |
|
214 | + $post_data['redirect'] = array('return_url' => $return_url); |
|
215 | 215 | |
216 | - if ( ! empty( $this->statement_descriptor ) ) { |
|
217 | - $post_data['statement_descriptor'] = WC_Stripe_Helper::clean_statement_descriptor( $this->statement_descriptor ); |
|
216 | + if ( ! empty($this->statement_descriptor)) { |
|
217 | + $post_data['statement_descriptor'] = WC_Stripe_Helper::clean_statement_descriptor($this->statement_descriptor); |
|
218 | 218 | } |
219 | 219 | |
220 | - WC_Stripe_Logger::log( 'Info: Begin creating iDeal source' ); |
|
220 | + WC_Stripe_Logger::log('Info: Begin creating iDeal source'); |
|
221 | 221 | |
222 | - return WC_Stripe_API::request( apply_filters( 'wc_stripe_ideal_source', $post_data, $order ), 'sources' ); |
|
222 | + return WC_Stripe_API::request(apply_filters('wc_stripe_ideal_source', $post_data, $order), 'sources'); |
|
223 | 223 | } |
224 | 224 | |
225 | 225 | /** |
@@ -233,47 +233,47 @@ discard block |
||
233 | 233 | * |
234 | 234 | * @return array|void |
235 | 235 | */ |
236 | - public function process_payment( $order_id, $retry = true, $force_save_source = false ) { |
|
236 | + public function process_payment($order_id, $retry = true, $force_save_source = false) { |
|
237 | 237 | try { |
238 | - $order = wc_get_order( $order_id ); |
|
238 | + $order = wc_get_order($order_id); |
|
239 | 239 | |
240 | 240 | // This will throw exception if not valid. |
241 | - $this->validate_minimum_order_amount( $order ); |
|
241 | + $this->validate_minimum_order_amount($order); |
|
242 | 242 | |
243 | 243 | // This comes from the create account checkbox in the checkout page. |
244 | - $create_account = ! empty( $_POST['createaccount'] ) ? true : false; |
|
244 | + $create_account = ! empty($_POST['createaccount']) ? true : false; |
|
245 | 245 | |
246 | - if ( $create_account ) { |
|
246 | + if ($create_account) { |
|
247 | 247 | $new_customer_id = $order->get_customer_id(); |
248 | - $new_stripe_customer = new WC_Stripe_Customer( $new_customer_id ); |
|
248 | + $new_stripe_customer = new WC_Stripe_Customer($new_customer_id); |
|
249 | 249 | $new_stripe_customer->create_customer(); |
250 | 250 | } |
251 | 251 | |
252 | - $response = $this->create_source( $order ); |
|
252 | + $response = $this->create_source($order); |
|
253 | 253 | |
254 | - if ( ! empty( $response->error ) ) { |
|
255 | - $order->add_order_note( $response->error->message ); |
|
254 | + if ( ! empty($response->error)) { |
|
255 | + $order->add_order_note($response->error->message); |
|
256 | 256 | |
257 | - throw new WC_Stripe_Exception( print_r( $response, true ), $response->error->message ); |
|
257 | + throw new WC_Stripe_Exception(print_r($response, true), $response->error->message); |
|
258 | 258 | } |
259 | 259 | |
260 | - $order->update_meta_data( '_stripe_source_id', $response->id ); |
|
260 | + $order->update_meta_data('_stripe_source_id', $response->id); |
|
261 | 261 | $order->save(); |
262 | 262 | |
263 | - WC_Stripe_Logger::log( 'Info: Redirecting to iDeal...' ); |
|
263 | + WC_Stripe_Logger::log('Info: Redirecting to iDeal...'); |
|
264 | 264 | |
265 | 265 | return array( |
266 | 266 | 'result' => 'success', |
267 | - 'redirect' => esc_url_raw( $response->redirect->url ), |
|
267 | + 'redirect' => esc_url_raw($response->redirect->url), |
|
268 | 268 | ); |
269 | - } catch ( WC_Stripe_Exception $e ) { |
|
270 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
271 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
269 | + } catch (WC_Stripe_Exception $e) { |
|
270 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
271 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
272 | 272 | |
273 | - do_action( 'wc_gateway_stripe_process_payment_error', $e, $order ); |
|
273 | + do_action('wc_gateway_stripe_process_payment_error', $e, $order); |
|
274 | 274 | |
275 | - if ( $order->has_status( array( 'pending', 'failed' ) ) ) { |
|
276 | - $this->send_failed_order_email( $order_id ); |
|
275 | + if ($order->has_status(array('pending', 'failed'))) { |
|
276 | + $this->send_failed_order_email($order_id); |
|
277 | 277 | } |
278 | 278 | |
279 | 279 | return array( |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if ( ! defined( 'ABSPATH' ) ) { |
|
2 | +if ( ! defined('ABSPATH')) { |
|
3 | 3 | exit; |
4 | 4 | } |
5 | 5 | |
@@ -72,9 +72,9 @@ discard block |
||
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§ion=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§ion=stripe')); |
|
78 | 78 | $this->has_fields = true; |
79 | 79 | $this->supports = array( |
80 | 80 | 'products', |
@@ -100,28 +100,28 @@ discard block |
||
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 | |
@@ -149,11 +149,11 @@ discard block |
||
149 | 149 | * @return bool |
150 | 150 | */ |
151 | 151 | public function is_available() { |
152 | - if ( ! in_array( get_woocommerce_currency(), $this->get_supported_currency() ) ) { |
|
152 | + if ( ! in_array(get_woocommerce_currency(), $this->get_supported_currency())) { |
|
153 | 153 | return false; |
154 | 154 | } |
155 | 155 | |
156 | - if ( is_add_payment_method_page() && ! $this->saved_cards ) { |
|
156 | + if (is_add_payment_method_page() && ! $this->saved_cards) { |
|
157 | 157 | return false; |
158 | 158 | } |
159 | 159 | |
@@ -172,9 +172,9 @@ discard block |
||
172 | 172 | |
173 | 173 | $icons_str = ''; |
174 | 174 | |
175 | - $icons_str .= isset( $icons['sepa'] ) ? $icons['sepa'] : ''; |
|
175 | + $icons_str .= isset($icons['sepa']) ? $icons['sepa'] : ''; |
|
176 | 176 | |
177 | - return apply_filters( 'woocommerce_gateway_icon', $icons_str, $this->id ); |
|
177 | + return apply_filters('woocommerce_gateway_icon', $icons_str, $this->id); |
|
178 | 178 | } |
179 | 179 | |
180 | 180 | /** |
@@ -185,19 +185,19 @@ discard block |
||
185 | 185 | * @access public |
186 | 186 | */ |
187 | 187 | public function payment_scripts() { |
188 | - if ( ! is_cart() && ! is_checkout() && ! isset( $_GET['pay_for_order'] ) && ! is_add_payment_method_page() ) { |
|
188 | + if ( ! is_cart() && ! is_checkout() && ! isset($_GET['pay_for_order']) && ! is_add_payment_method_page()) { |
|
189 | 189 | return; |
190 | 190 | } |
191 | 191 | |
192 | - wp_enqueue_style( 'stripe_styles' ); |
|
193 | - wp_enqueue_script( 'woocommerce_stripe' ); |
|
192 | + wp_enqueue_style('stripe_styles'); |
|
193 | + wp_enqueue_script('woocommerce_stripe'); |
|
194 | 194 | } |
195 | 195 | |
196 | 196 | /** |
197 | 197 | * Initialize Gateway Settings Form Fields. |
198 | 198 | */ |
199 | 199 | public function init_form_fields() { |
200 | - $this->form_fields = require( WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-sepa-settings.php' ); |
|
200 | + $this->form_fields = require(WC_STRIPE_PLUGIN_PATH . '/includes/admin/stripe-sepa-settings.php'); |
|
201 | 201 | } |
202 | 202 | |
203 | 203 | /** |
@@ -209,7 +209,7 @@ discard block |
||
209 | 209 | */ |
210 | 210 | public function mandate_display() { |
211 | 211 | /* translators: statement descriptor */ |
212 | - 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 ) ); |
|
212 | + 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)); |
|
213 | 213 | } |
214 | 214 | |
215 | 215 | /** |
@@ -220,12 +220,12 @@ discard block |
||
220 | 220 | */ |
221 | 221 | public function form() { |
222 | 222 | ?> |
223 | - <fieldset id="wc-<?php echo esc_attr( $this->id ); ?>-form" class="wc-payment-form"> |
|
224 | - <?php do_action( 'woocommerce_credit_card_form_start', $this->id ); ?> |
|
223 | + <fieldset id="wc-<?php echo esc_attr($this->id); ?>-form" class="wc-payment-form"> |
|
224 | + <?php do_action('woocommerce_credit_card_form_start', $this->id); ?> |
|
225 | 225 | <p class="wc-stripe-sepa-mandate" style="margin-bottom:40px;"><?php $this->mandate_display(); ?></p> |
226 | 226 | <p class="form-row form-row-wide"> |
227 | 227 | <label for="stripe-iban-element"> |
228 | - <?php esc_html_e( 'IBAN.', 'woocommerce-gateway-stripe' ); ?> <span class="required">*</span> |
|
228 | + <?php esc_html_e('IBAN.', 'woocommerce-gateway-stripe'); ?> <span class="required">*</span> |
|
229 | 229 | </label> |
230 | 230 | <div id="stripe-iban-element" class="wc-stripe-iban-element-field"> |
231 | 231 | <!-- A Stripe Element will be inserted here. --> |
@@ -235,7 +235,7 @@ discard block |
||
235 | 235 | <!-- Used to display form errors --> |
236 | 236 | <div class="stripe-source-errors" role="alert"></div> |
237 | 237 | <br /> |
238 | - <?php do_action( 'woocommerce_credit_card_form_end', $this->id ); ?> |
|
238 | + <?php do_action('woocommerce_credit_card_form_end', $this->id); ?> |
|
239 | 239 | <div class="clear"></div> |
240 | 240 | </fieldset> |
241 | 241 | <?php |
@@ -247,45 +247,45 @@ discard block |
||
247 | 247 | public function payment_fields() { |
248 | 248 | global $wp; |
249 | 249 | $total = WC()->cart->total; |
250 | - $display_tokenization = $this->supports( 'tokenization' ) && is_checkout() && $this->saved_cards; |
|
250 | + $display_tokenization = $this->supports('tokenization') && is_checkout() && $this->saved_cards; |
|
251 | 251 | $description = $this->get_description(); |
252 | - $description = ! empty( $description ) ? $description : ''; |
|
252 | + $description = ! empty($description) ? $description : ''; |
|
253 | 253 | |
254 | 254 | // If paying from order, we need to get total from order not cart. |
255 | - if ( isset( $_GET['pay_for_order'] ) && ! empty( $_GET['key'] ) ) { |
|
256 | - $order = wc_get_order( wc_clean( $wp->query_vars['order-pay'] ) ); |
|
255 | + if (isset($_GET['pay_for_order']) && ! empty($_GET['key'])) { |
|
256 | + $order = wc_get_order(wc_clean($wp->query_vars['order-pay'])); |
|
257 | 257 | $total = $order->get_total(); |
258 | 258 | } |
259 | 259 | |
260 | - if ( is_add_payment_method_page() ) { |
|
260 | + if (is_add_payment_method_page()) { |
|
261 | 261 | $total = ''; |
262 | 262 | } |
263 | 263 | |
264 | 264 | echo '<div |
265 | 265 | id="stripe-sepa_debit-payment-data" |
266 | - data-amount="' . esc_attr( WC_Stripe_Helper::get_stripe_amount( $total ) ) . '" |
|
267 | - data-currency="' . esc_attr( strtolower( get_woocommerce_currency() ) ) . '">'; |
|
266 | + data-amount="' . esc_attr(WC_Stripe_Helper::get_stripe_amount($total)) . '" |
|
267 | + data-currency="' . esc_attr(strtolower(get_woocommerce_currency())) . '">'; |
|
268 | 268 | |
269 | - if ( $this->testmode ) { |
|
270 | - $description .= ' ' . __( 'TEST MODE ENABLED. In test mode, you can use IBAN number DE89370400440532013000.', 'woocommerce-gateway-stripe' ); |
|
269 | + if ($this->testmode) { |
|
270 | + $description .= ' ' . __('TEST MODE ENABLED. In test mode, you can use IBAN number DE89370400440532013000.', 'woocommerce-gateway-stripe'); |
|
271 | 271 | } |
272 | 272 | |
273 | - $description = trim( $description ); |
|
273 | + $description = trim($description); |
|
274 | 274 | |
275 | - echo apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $description ) ), $this->id ); |
|
275 | + echo apply_filters('wc_stripe_description', wpautop(wp_kses_post($description)), $this->id); |
|
276 | 276 | |
277 | - if ( $display_tokenization ) { |
|
277 | + if ($display_tokenization) { |
|
278 | 278 | $this->tokenization_script(); |
279 | 279 | $this->saved_payment_methods(); |
280 | 280 | } |
281 | 281 | |
282 | 282 | $this->form(); |
283 | 283 | |
284 | - if ( apply_filters( 'wc_stripe_display_save_payment_method_checkbox', $display_tokenization ) && ! is_add_payment_method_page() && ! isset( $_GET['change_payment_method'] ) ) { |
|
284 | + if (apply_filters('wc_stripe_display_save_payment_method_checkbox', $display_tokenization) && ! is_add_payment_method_page() && ! isset($_GET['change_payment_method'])) { |
|
285 | 285 | $this->save_payment_method_checkbox(); |
286 | 286 | } |
287 | 287 | |
288 | - do_action( 'wc_stripe_sepa_payment_fields', $this->id ); |
|
288 | + do_action('wc_stripe_sepa_payment_fields', $this->id); |
|
289 | 289 | |
290 | 290 | echo '</div>'; |
291 | 291 | } |
@@ -301,94 +301,94 @@ discard block |
||
301 | 301 | * |
302 | 302 | * @return array|void |
303 | 303 | */ |
304 | - public function process_payment( $order_id, $retry = true, $force_save_source = false ) { |
|
304 | + public function process_payment($order_id, $retry = true, $force_save_source = false) { |
|
305 | 305 | try { |
306 | - $order = wc_get_order( $order_id ); |
|
306 | + $order = wc_get_order($order_id); |
|
307 | 307 | |
308 | - if ( $this->maybe_process_pre_orders( $order_id ) ) { |
|
309 | - return $this->pre_orders->process_pre_order( $order_id ); |
|
308 | + if ($this->maybe_process_pre_orders($order_id)) { |
|
309 | + return $this->pre_orders->process_pre_order($order_id); |
|
310 | 310 | } |
311 | 311 | |
312 | 312 | // This comes from the create account checkbox in the checkout page. |
313 | - $create_account = ! empty( $_POST['createaccount'] ) ? true : false; |
|
313 | + $create_account = ! empty($_POST['createaccount']) ? true : false; |
|
314 | 314 | |
315 | - if ( $create_account ) { |
|
315 | + if ($create_account) { |
|
316 | 316 | $new_customer_id = $order->get_customer_id(); |
317 | - $new_stripe_customer = new WC_Stripe_Customer( $new_customer_id ); |
|
317 | + $new_stripe_customer = new WC_Stripe_Customer($new_customer_id); |
|
318 | 318 | $new_stripe_customer->create_customer(); |
319 | 319 | } |
320 | 320 | |
321 | - $prepared_source = $this->prepare_source( get_current_user_id(), $force_save_source ); |
|
321 | + $prepared_source = $this->prepare_source(get_current_user_id(), $force_save_source); |
|
322 | 322 | |
323 | - $this->save_source_to_order( $order, $prepared_source ); |
|
323 | + $this->save_source_to_order($order, $prepared_source); |
|
324 | 324 | |
325 | 325 | // Result from Stripe API request. |
326 | 326 | $response = null; |
327 | 327 | |
328 | - if ( $order->get_total() > 0 ) { |
|
328 | + if ($order->get_total() > 0) { |
|
329 | 329 | // This will throw exception if not valid. |
330 | - $this->validate_minimum_order_amount( $order ); |
|
330 | + $this->validate_minimum_order_amount($order); |
|
331 | 331 | |
332 | - WC_Stripe_Logger::log( "Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}" ); |
|
332 | + WC_Stripe_Logger::log("Info: Begin processing payment for order $order_id for the amount of {$order->get_total()}"); |
|
333 | 333 | |
334 | 334 | // Make the request. |
335 | - $response = WC_Stripe_API::request( $this->generate_payment_request( $order, $prepared_source ) ); |
|
335 | + $response = WC_Stripe_API::request($this->generate_payment_request($order, $prepared_source)); |
|
336 | 336 | |
337 | - if ( ! empty( $response->error ) ) { |
|
337 | + if ( ! empty($response->error)) { |
|
338 | 338 | // Customer param wrong? The user may have been deleted on stripe's end. Remove customer_id. Can be retried without. |
339 | - if ( $this->is_no_such_customer_error( $response->error ) ) { |
|
340 | - delete_user_option( $order->get_customer_id(), '_stripe_customer_id' ); |
|
341 | - $order->delete_meta_data( '_stripe_customer_id' ); |
|
339 | + if ($this->is_no_such_customer_error($response->error)) { |
|
340 | + delete_user_option($order->get_customer_id(), '_stripe_customer_id'); |
|
341 | + $order->delete_meta_data('_stripe_customer_id'); |
|
342 | 342 | $order->save(); |
343 | 343 | } |
344 | 344 | |
345 | - if ( $this->is_no_such_token_error( $response->error ) && $prepared_source->token_id ) { |
|
345 | + if ($this->is_no_such_token_error($response->error) && $prepared_source->token_id) { |
|
346 | 346 | // Source param wrong? The CARD may have been deleted on stripe's end. Remove token and show message. |
347 | - $wc_token = WC_Payment_Tokens::get( $prepared_source->token_id ); |
|
347 | + $wc_token = WC_Payment_Tokens::get($prepared_source->token_id); |
|
348 | 348 | $wc_token->delete(); |
349 | - $localized_message = __( 'This card is no longer available and has been removed.', 'woocommerce-gateway-stripe' ); |
|
350 | - $order->add_order_note( $localized_message ); |
|
351 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
349 | + $localized_message = __('This card is no longer available and has been removed.', 'woocommerce-gateway-stripe'); |
|
350 | + $order->add_order_note($localized_message); |
|
351 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
352 | 352 | } |
353 | 353 | |
354 | 354 | // We want to retry. |
355 | - if ( $this->is_retryable_error( $response->error ) ) { |
|
356 | - if ( $retry ) { |
|
355 | + if ($this->is_retryable_error($response->error)) { |
|
356 | + if ($retry) { |
|
357 | 357 | // Don't do anymore retries after this. |
358 | - if ( 5 <= $this->retry_interval ) { |
|
358 | + if (5 <= $this->retry_interval) { |
|
359 | 359 | |
360 | - return $this->process_payment( $order_id, false, $force_save_source ); |
|
360 | + return $this->process_payment($order_id, false, $force_save_source); |
|
361 | 361 | } |
362 | 362 | |
363 | - sleep( $this->retry_interval ); |
|
363 | + sleep($this->retry_interval); |
|
364 | 364 | |
365 | 365 | $this->retry_interval++; |
366 | 366 | |
367 | - return $this->process_payment( $order_id, true, $force_save_source ); |
|
367 | + return $this->process_payment($order_id, true, $force_save_source); |
|
368 | 368 | } else { |
369 | - $localized_message = __( 'Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe' ); |
|
370 | - $order->add_order_note( $localized_message ); |
|
371 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
369 | + $localized_message = __('Sorry, we are unable to process your payment at this time. Please retry later.', 'woocommerce-gateway-stripe'); |
|
370 | + $order->add_order_note($localized_message); |
|
371 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
372 | 372 | } |
373 | 373 | } |
374 | 374 | |
375 | 375 | $localized_messages = WC_Stripe_Helper::get_localized_messages(); |
376 | 376 | |
377 | - if ( 'card_error' === $response->error->type ) { |
|
378 | - $localized_message = isset( $localized_messages[ $response->error->code ] ) ? $localized_messages[ $response->error->code ] : $response->error->message; |
|
377 | + if ('card_error' === $response->error->type) { |
|
378 | + $localized_message = isset($localized_messages[$response->error->code]) ? $localized_messages[$response->error->code] : $response->error->message; |
|
379 | 379 | } else { |
380 | - $localized_message = isset( $localized_messages[ $response->error->type ] ) ? $localized_messages[ $response->error->type ] : $response->error->message; |
|
380 | + $localized_message = isset($localized_messages[$response->error->type]) ? $localized_messages[$response->error->type] : $response->error->message; |
|
381 | 381 | } |
382 | 382 | |
383 | - $order->add_order_note( $localized_message ); |
|
383 | + $order->add_order_note($localized_message); |
|
384 | 384 | |
385 | - throw new WC_Stripe_Exception( print_r( $response, true ), $localized_message ); |
|
385 | + throw new WC_Stripe_Exception(print_r($response, true), $localized_message); |
|
386 | 386 | } |
387 | 387 | |
388 | - do_action( 'wc_gateway_stripe_process_payment', $response, $order ); |
|
388 | + do_action('wc_gateway_stripe_process_payment', $response, $order); |
|
389 | 389 | |
390 | 390 | // Process valid response. |
391 | - $this->process_response( $response, $order ); |
|
391 | + $this->process_response($response, $order); |
|
392 | 392 | } else { |
393 | 393 | $order->payment_complete(); |
394 | 394 | } |
@@ -399,17 +399,17 @@ discard block |
||
399 | 399 | // Return thank you page redirect. |
400 | 400 | return array( |
401 | 401 | 'result' => 'success', |
402 | - 'redirect' => $this->get_return_url( $order ), |
|
402 | + 'redirect' => $this->get_return_url($order), |
|
403 | 403 | ); |
404 | 404 | |
405 | - } catch ( WC_Stripe_Exception $e ) { |
|
406 | - wc_add_notice( $e->getLocalizedMessage(), 'error' ); |
|
407 | - WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); |
|
405 | + } catch (WC_Stripe_Exception $e) { |
|
406 | + wc_add_notice($e->getLocalizedMessage(), 'error'); |
|
407 | + WC_Stripe_Logger::log('Error: ' . $e->getMessage()); |
|
408 | 408 | |
409 | - do_action( 'wc_gateway_stripe_process_payment_error', $e, $order ); |
|
409 | + do_action('wc_gateway_stripe_process_payment_error', $e, $order); |
|
410 | 410 | |
411 | - if ( $order->has_status( array( 'pending', 'failed' ) ) ) { |
|
412 | - $this->send_failed_order_email( $order_id ); |
|
411 | + if ($order->has_status(array('pending', 'failed'))) { |
|
412 | + $this->send_failed_order_email($order_id); |
|
413 | 413 | } |
414 | 414 | |
415 | 415 | return array( |