Passed
Push — master ( c15536...e110bf )
by Brian
05:37
created
includes/gateways/class-getpaid-paypal-gateway.php 1 patch
Indentation   +366 added lines, -366 removed lines patch added patch discarded remove patch
@@ -13,97 +13,97 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Paypal_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'paypal';
21 21
 
22 22
     /**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27 27
     protected $supports = array( 'subscription', 'sandbox', 'single_subscription_group' );
28 28
 
29 29
     /**
30
-	 * Payment method order.
31
-	 *
32
-	 * @var int
33
-	 */
30
+     * Payment method order.
31
+     *
32
+     * @var int
33
+     */
34 34
     public $order = 1;
35 35
 
36 36
     /**
37
-	 * Stores line items to send to PayPal.
38
-	 *
39
-	 * @var array
40
-	 */
37
+     * Stores line items to send to PayPal.
38
+     *
39
+     * @var array
40
+     */
41 41
     protected $line_items = array();
42 42
 
43 43
     /**
44
-	 * Endpoint for requests from PayPal.
45
-	 *
46
-	 * @var string
47
-	 */
48
-	protected $notify_url;
49
-
50
-	/**
51
-	 * Endpoint for requests to PayPal.
52
-	 *
53
-	 * @var string
54
-	 */
44
+     * Endpoint for requests from PayPal.
45
+     *
46
+     * @var string
47
+     */
48
+    protected $notify_url;
49
+
50
+    /**
51
+     * Endpoint for requests to PayPal.
52
+     *
53
+     * @var string
54
+     */
55 55
     protected $endpoint;
56 56
 
57 57
     /**
58
-	 * Currencies this gateway is allowed for.
59
-	 *
60
-	 * @var array
61
-	 */
62
-	public $currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR' );
58
+     * Currencies this gateway is allowed for.
59
+     *
60
+     * @var array
61
+     */
62
+    public $currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB', 'INR' );
63 63
 
64 64
     /**
65
-	 * URL to view a transaction.
66
-	 *
67
-	 * @var string
68
-	 */
65
+     * URL to view a transaction.
66
+     *
67
+     * @var string
68
+     */
69 69
     public $view_transaction_url = 'https://www.{sandbox}paypal.com/activity/payment/%s';
70 70
 
71 71
     /**
72
-	 * URL to view a subscription.
73
-	 *
74
-	 * @var string
75
-	 */
76
-	public $view_subscription_url = 'https://www.{sandbox}paypal.com/cgi-bin/webscr?cmd=_profile-recurring-payments&encrypted_profile_id=%s';
72
+     * URL to view a subscription.
73
+     *
74
+     * @var string
75
+     */
76
+    public $view_subscription_url = 'https://www.{sandbox}paypal.com/cgi-bin/webscr?cmd=_profile-recurring-payments&encrypted_profile_id=%s';
77 77
 
78 78
     /**
79
-	 * Class constructor.
80
-	 */
81
-	public function __construct() {
79
+     * Class constructor.
80
+     */
81
+    public function __construct() {
82 82
 
83 83
         $this->title                = __( 'PayPal Standard', 'invoicing' );
84 84
         $this->method_title         = __( 'PayPal Standard', 'invoicing' );
85 85
         $this->checkout_button_text = __( 'Proceed to PayPal', 'invoicing' );
86 86
         $this->notify_url           = wpinv_get_ipn_url( $this->id );
87 87
 
88
-		add_filter( 'wpinv_subscription_cancel_url', array( $this, 'filter_cancel_subscription_url' ), 10, 2 );
89
-		add_filter( 'getpaid_paypal_args', array( $this, 'process_subscription' ), 10, 2 );
88
+        add_filter( 'wpinv_subscription_cancel_url', array( $this, 'filter_cancel_subscription_url' ), 10, 2 );
89
+        add_filter( 'getpaid_paypal_args', array( $this, 'process_subscription' ), 10, 2 );
90 90
         add_filter( 'getpaid_paypal_sandbox_notice', array( $this, 'sandbox_notice' ) );
91
-		add_filter( 'getpaid_get_paypal_connect_url', array( $this, 'maybe_get_connect_url' ), 10, 2 );
92
-		add_action( 'getpaid_authenticated_admin_action_connect_paypal', array( $this, 'connect_paypal' ) );
93
-		add_action( 'wpinv_paypal_connect', array( $this, 'display_connect_buttons' ) );
94
-		parent::__construct();
91
+        add_filter( 'getpaid_get_paypal_connect_url', array( $this, 'maybe_get_connect_url' ), 10, 2 );
92
+        add_action( 'getpaid_authenticated_admin_action_connect_paypal', array( $this, 'connect_paypal' ) );
93
+        add_action( 'wpinv_paypal_connect', array( $this, 'display_connect_buttons' ) );
94
+        parent::__construct();
95 95
     }
96 96
 
97 97
     /**
98
-	 * Process Payment.
99
-	 *
100
-	 *
101
-	 * @param WPInv_Invoice $invoice Invoice.
102
-	 * @param array $submission_data Posted checkout fields.
103
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
104
-	 * @return array
105
-	 */
106
-	public function process_payment( $invoice, $submission_data, $submission ) {
98
+     * Process Payment.
99
+     *
100
+     *
101
+     * @param WPInv_Invoice $invoice Invoice.
102
+     * @param array $submission_data Posted checkout fields.
103
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
104
+     * @return array
105
+     */
106
+    public function process_payment( $invoice, $submission_data, $submission ) {
107 107
 
108 108
         // Get redirect url.
109 109
         $paypal_redirect = $this->get_request_url( $invoice );
@@ -126,15 +126,15 @@  discard block
 block discarded – undo
126 126
     }
127 127
 
128 128
     /**
129
-	 * Get the PayPal request URL for an invoice.
130
-	 *
131
-	 * @param  WPInv_Invoice $invoice Invoice object.
132
-	 * @return string
133
-	 */
134
-	public function get_request_url( $invoice ) {
129
+     * Get the PayPal request URL for an invoice.
130
+     *
131
+     * @param  WPInv_Invoice $invoice Invoice object.
132
+     * @return string
133
+     */
134
+    public function get_request_url( $invoice ) {
135 135
 
136 136
         // Endpoint for this request
137
-		$this->endpoint    = $this->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
137
+        $this->endpoint    = $this->is_sandbox( $invoice ) ? 'https://www.sandbox.paypal.com/cgi-bin/webscr?test_ipn=1&' : 'https://www.paypal.com/cgi-bin/webscr?';
138 138
 
139 139
         // Retrieve paypal args.
140 140
         $paypal_args       = map_deep( $this->get_paypal_args( $invoice ), 'urlencode' );
@@ -147,45 +147,45 @@  discard block
 block discarded – undo
147 147
 
148 148
         return add_query_arg( $paypal_args, $this->endpoint );
149 149
 
150
-	}
150
+    }
151 151
 
152 152
     /**
153
-	 * Get PayPal Args for passing to PP.
154
-	 *
155
-	 * @param  WPInv_Invoice $invoice Invoice object.
156
-	 * @return array
157
-	 */
158
-	protected function get_paypal_args( $invoice ) {
153
+     * Get PayPal Args for passing to PP.
154
+     *
155
+     * @param  WPInv_Invoice $invoice Invoice object.
156
+     * @return array
157
+     */
158
+    protected function get_paypal_args( $invoice ) {
159 159
 
160 160
         // Whether or not to send the line items as one item.
161
-		$force_one_line_item = apply_filters( 'getpaid_paypal_force_one_line_item', true, $invoice );
162
-
163
-		if ( $invoice->is_recurring() || ( wpinv_use_taxes() && wpinv_prices_include_tax() ) ) {
164
-			$force_one_line_item = true;
165
-		}
166
-
167
-		$paypal_args = apply_filters(
168
-			'getpaid_paypal_args',
169
-			array_merge(
170
-				$this->get_transaction_args( $invoice ),
171
-				$this->get_line_item_args( $invoice, $force_one_line_item )
172
-			),
173
-			$invoice
174
-		);
175
-
176
-		return $this->fix_request_length( $invoice, $paypal_args );
161
+        $force_one_line_item = apply_filters( 'getpaid_paypal_force_one_line_item', true, $invoice );
162
+
163
+        if ( $invoice->is_recurring() || ( wpinv_use_taxes() && wpinv_prices_include_tax() ) ) {
164
+            $force_one_line_item = true;
165
+        }
166
+
167
+        $paypal_args = apply_filters(
168
+            'getpaid_paypal_args',
169
+            array_merge(
170
+                $this->get_transaction_args( $invoice ),
171
+                $this->get_line_item_args( $invoice, $force_one_line_item )
172
+            ),
173
+            $invoice
174
+        );
175
+
176
+        return $this->fix_request_length( $invoice, $paypal_args );
177 177
     }
178 178
 
179 179
     /**
180
-	 * Get transaction args for paypal request.
181
-	 *
182
-	 * @param WPInv_Invoice $invoice Invoice object.
183
-	 * @return array
184
-	 */
185
-	protected function get_transaction_args( $invoice ) {
186
-
187
-		$email = $this->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
188
-		return array(
180
+     * Get transaction args for paypal request.
181
+     *
182
+     * @param WPInv_Invoice $invoice Invoice object.
183
+     * @return array
184
+     */
185
+    protected function get_transaction_args( $invoice ) {
186
+
187
+        $email = $this->is_sandbox( $invoice ) ? wpinv_get_option( 'paypal_sandbox_email', wpinv_get_option( 'paypal_email', '' ) ) : wpinv_get_option( 'paypal_email', '' );
188
+        return array(
189 189
             'cmd'           => '_cart',
190 190
             'business'      => $email,
191 191
             'no_shipping'   => '1',
@@ -210,16 +210,16 @@  discard block
 block discarded – undo
210 210
     }
211 211
 
212 212
     /**
213
-	 * Get line item args for paypal request.
214
-	 *
215
-	 * @param  WPInv_Invoice $invoice Invoice object.
216
-	 * @param  bool     $force_one_line_item Create only one item for this invoice.
217
-	 * @return array
218
-	 */
219
-	protected function get_line_item_args( $invoice, $force_one_line_item = false ) {
213
+     * Get line item args for paypal request.
214
+     *
215
+     * @param  WPInv_Invoice $invoice Invoice object.
216
+     * @param  bool     $force_one_line_item Create only one item for this invoice.
217
+     * @return array
218
+     */
219
+    protected function get_line_item_args( $invoice, $force_one_line_item = false ) {
220 220
 
221 221
         // Maybe send invoice as a single item.
222
-		if ( $force_one_line_item ) {
222
+        if ( $force_one_line_item ) {
223 223
             return $this->get_line_item_args_single_item( $invoice );
224 224
         }
225 225
 
@@ -239,129 +239,129 @@  discard block
 block discarded – undo
239 239
             $line_item_args['discount_amount_cart'] = wpinv_sanitize_amount( (float) $invoice->get_total_discount(), 2 );
240 240
         }
241 241
 
242
-		return array_merge( $line_item_args, $this->get_line_items() );
242
+        return array_merge( $line_item_args, $this->get_line_items() );
243 243
 
244 244
     }
245 245
 
246 246
     /**
247
-	 * Get line item args for paypal request as a single line item.
248
-	 *
249
-	 * @param  WPInv_Invoice $invoice Invoice object.
250
-	 * @return array
251
-	 */
252
-	protected function get_line_item_args_single_item( $invoice ) {
253
-		$this->delete_line_items();
247
+     * Get line item args for paypal request as a single line item.
248
+     *
249
+     * @param  WPInv_Invoice $invoice Invoice object.
250
+     * @return array
251
+     */
252
+    protected function get_line_item_args_single_item( $invoice ) {
253
+        $this->delete_line_items();
254 254
 
255 255
         $item_name = sprintf( __( 'Invoice #%s', 'invoicing' ), $invoice->get_number() );
256
-		$this->add_line_item( $item_name, 1, wpinv_round_amount( (float) $invoice->get_total(), 2, true ), $invoice->get_id() );
256
+        $this->add_line_item( $item_name, 1, wpinv_round_amount( (float) $invoice->get_total(), 2, true ), $invoice->get_id() );
257 257
 
258
-		return $this->get_line_items();
258
+        return $this->get_line_items();
259 259
     }
260 260
 
261 261
     /**
262
-	 * Return all line items.
263
-	 */
264
-	protected function get_line_items() {
265
-		return $this->line_items;
266
-	}
262
+     * Return all line items.
263
+     */
264
+    protected function get_line_items() {
265
+        return $this->line_items;
266
+    }
267 267
 
268 268
     /**
269
-	 * Remove all line items.
270
-	 */
271
-	protected function delete_line_items() {
272
-		$this->line_items = array();
269
+     * Remove all line items.
270
+     */
271
+    protected function delete_line_items() {
272
+        $this->line_items = array();
273 273
     }
274 274
 
275 275
     /**
276
-	 * Prepare line items to send to paypal.
277
-	 *
278
-	 * @param  WPInv_Invoice $invoice Invoice object.
279
-	 */
280
-	protected function prepare_line_items( $invoice ) {
281
-		$this->delete_line_items();
282
-
283
-		// Items.
284
-		foreach ( $invoice->get_items() as $item ) {
285
-			$amount   = $item->get_price();
286
-			$quantity = $invoice->get_template() == 'amount' ? 1 : $item->get_quantity();
287
-			$this->add_line_item( $item->get_raw_name(), $quantity, $amount, $item->get_id() );
276
+     * Prepare line items to send to paypal.
277
+     *
278
+     * @param  WPInv_Invoice $invoice Invoice object.
279
+     */
280
+    protected function prepare_line_items( $invoice ) {
281
+        $this->delete_line_items();
282
+
283
+        // Items.
284
+        foreach ( $invoice->get_items() as $item ) {
285
+            $amount   = $item->get_price();
286
+            $quantity = $invoice->get_template() == 'amount' ? 1 : $item->get_quantity();
287
+            $this->add_line_item( $item->get_raw_name(), $quantity, $amount, $item->get_id() );
288 288
         }
289 289
 
290 290
         // Fees.
291
-		foreach ( $invoice->get_fees() as $fee => $data ) {
291
+        foreach ( $invoice->get_fees() as $fee => $data ) {
292 292
             $this->add_line_item( $fee, 1, wpinv_sanitize_amount( $data['initial_fee'] ) );
293 293
         }
294 294
 
295 295
     }
296 296
 
297 297
     /**
298
-	 * Add PayPal Line Item.
299
-	 *
300
-	 * @param  string $item_name Item name.
301
-	 * @param  float    $quantity Item quantity.
302
-	 * @param  float  $amount Amount.
303
-	 * @param  string $item_number Item number.
304
-	 */
305
-	protected function add_line_item( $item_name, $quantity = 1, $amount = 0.0, $item_number = '' ) {
306
-		$index = ( count( $this->line_items ) / 4 ) + 1;
307
-
308
-		$item = apply_filters(
309
-			'getpaid_paypal_line_item',
310
-			array(
311
-				'item_name'   => html_entity_decode( getpaid_limit_length( $item_name ? wp_strip_all_tags( $item_name ) : __( 'Item', 'invoicing' ), 127 ), ENT_NOQUOTES, 'UTF-8' ),
312
-				'quantity'    => (float) $quantity,
313
-				'amount'      => wpinv_sanitize_amount( (float) $amount, 2 ),
314
-				'item_number' => $item_number,
315
-			),
316
-			$item_name,
317
-			$quantity,
318
-			$amount,
319
-			$item_number
320
-		);
321
-
322
-		$this->line_items[ 'item_name_' . $index ]   = getpaid_limit_length( $item['item_name'], 127 );
298
+     * Add PayPal Line Item.
299
+     *
300
+     * @param  string $item_name Item name.
301
+     * @param  float    $quantity Item quantity.
302
+     * @param  float  $amount Amount.
303
+     * @param  string $item_number Item number.
304
+     */
305
+    protected function add_line_item( $item_name, $quantity = 1, $amount = 0.0, $item_number = '' ) {
306
+        $index = ( count( $this->line_items ) / 4 ) + 1;
307
+
308
+        $item = apply_filters(
309
+            'getpaid_paypal_line_item',
310
+            array(
311
+                'item_name'   => html_entity_decode( getpaid_limit_length( $item_name ? wp_strip_all_tags( $item_name ) : __( 'Item', 'invoicing' ), 127 ), ENT_NOQUOTES, 'UTF-8' ),
312
+                'quantity'    => (float) $quantity,
313
+                'amount'      => wpinv_sanitize_amount( (float) $amount, 2 ),
314
+                'item_number' => $item_number,
315
+            ),
316
+            $item_name,
317
+            $quantity,
318
+            $amount,
319
+            $item_number
320
+        );
321
+
322
+        $this->line_items[ 'item_name_' . $index ]   = getpaid_limit_length( $item['item_name'], 127 );
323 323
         $this->line_items[ 'quantity_' . $index ]    = $item['quantity'];
324 324
 
325 325
         // The price or amount of the product, service, or contribution, not including shipping, handling, or tax.
326
-		$this->line_items[ 'amount_' . $index ]      = $item['amount'] * $item['quantity'];
327
-		$this->line_items[ 'item_number_' . $index ] = getpaid_limit_length( $item['item_number'], 127 );
326
+        $this->line_items[ 'amount_' . $index ]      = $item['amount'] * $item['quantity'];
327
+        $this->line_items[ 'item_number_' . $index ] = getpaid_limit_length( $item['item_number'], 127 );
328 328
     }
329 329
 
330 330
     /**
331
-	 * If the default request with line items is too long, generate a new one with only one line item.
332
-	 *
333
-	 * https://support.microsoft.com/en-us/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer.
334
-	 *
335
-	 * @param WPInv_Invoice $invoice Invoice to be sent to Paypal.
336
-	 * @param array    $paypal_args Arguments sent to Paypal in the request.
337
-	 * @return array
338
-	 */
339
-	protected function fix_request_length( $invoice, $paypal_args ) {
340
-		$max_paypal_length = 2083;
341
-		$query_candidate   = http_build_query( $paypal_args, '', '&' );
342
-
343
-		if ( strlen( $this->endpoint . $query_candidate ) <= $max_paypal_length ) {
344
-			return $paypal_args;
345
-		}
346
-
347
-		return apply_filters(
348
-			'getpaid_paypal_args',
349
-			array_merge(
350
-				$this->get_transaction_args( $invoice ),
351
-				$this->get_line_item_args( $invoice, true )
352
-			),
353
-			$invoice
354
-		);
331
+     * If the default request with line items is too long, generate a new one with only one line item.
332
+     *
333
+     * https://support.microsoft.com/en-us/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer.
334
+     *
335
+     * @param WPInv_Invoice $invoice Invoice to be sent to Paypal.
336
+     * @param array    $paypal_args Arguments sent to Paypal in the request.
337
+     * @return array
338
+     */
339
+    protected function fix_request_length( $invoice, $paypal_args ) {
340
+        $max_paypal_length = 2083;
341
+        $query_candidate   = http_build_query( $paypal_args, '', '&' );
342
+
343
+        if ( strlen( $this->endpoint . $query_candidate ) <= $max_paypal_length ) {
344
+            return $paypal_args;
345
+        }
346
+
347
+        return apply_filters(
348
+            'getpaid_paypal_args',
349
+            array_merge(
350
+                $this->get_transaction_args( $invoice ),
351
+                $this->get_line_item_args( $invoice, true )
352
+            ),
353
+            $invoice
354
+        );
355 355
 
356 356
     }
357 357
 
358 358
     /**
359
-	 * Processes recurring invoices.
360
-	 *
361
-	 * @param  array $paypal_args PayPal args.
362
-	 * @param  WPInv_Invoice    $invoice Invoice object.
363
-	 */
364
-	public function process_subscription( $paypal_args, $invoice ) {
359
+     * Processes recurring invoices.
360
+     *
361
+     * @param  array $paypal_args PayPal args.
362
+     * @param  WPInv_Invoice    $invoice Invoice object.
363
+     */
364
+    public function process_subscription( $paypal_args, $invoice ) {
365 365
 
366 366
         // Make sure this is a subscription.
367 367
         if ( ! $invoice->is_recurring() || ! $subscription = getpaid_get_invoice_subscription( $invoice ) ) {
@@ -382,21 +382,21 @@  discard block
 block discarded – undo
382 382
         $recurring_amount       = (float) wpinv_sanitize_amount( $invoice->get_recurring_total(), 2 );
383 383
         $subscription_item      = $invoice->get_recurring( true );
384 384
 
385
-		// Convert 365 days to 1 year.
386
-		if ( 'D' == $period && 365 == $interval ) {
387
-			$period = 'Y';
388
-			$interval = 1;
389
-		}
385
+        // Convert 365 days to 1 year.
386
+        if ( 'D' == $period && 365 == $interval ) {
387
+            $period = 'Y';
388
+            $interval = 1;
389
+        }
390 390
 
391 391
         if ( $subscription_item->has_free_trial() ) {
392 392
 
393 393
             $paypal_args['a1'] = 0 == $initial_amount ? 0 : $initial_amount;
394 394
 
395
-			// Trial period length.
396
-			$paypal_args['p1'] = $subscription_item->get_trial_interval();
395
+            // Trial period length.
396
+            $paypal_args['p1'] = $subscription_item->get_trial_interval();
397 397
 
398
-			// Trial period.
399
-			$paypal_args['t1'] = $subscription_item->get_trial_period();
398
+            // Trial period.
399
+            $paypal_args['t1'] = $subscription_item->get_trial_period();
400 400
 
401 401
         } elseif ( $initial_amount != $recurring_amount ) {
402 402
 
@@ -419,40 +419,40 @@  discard block
 block discarded – undo
419 419
         }
420 420
 
421 421
         // We have a recurring payment
422
-		if ( ! isset( $param_number ) || 1 == $param_number ) {
422
+        if ( ! isset( $param_number ) || 1 == $param_number ) {
423 423
 
424
-			// Subscription price
425
-			$paypal_args['a3'] = $recurring_amount;
424
+            // Subscription price
425
+            $paypal_args['a3'] = $recurring_amount;
426 426
 
427
-			// Subscription duration
428
-			$paypal_args['p3'] = $interval;
427
+            // Subscription duration
428
+            $paypal_args['p3'] = $interval;
429 429
 
430
-			// Subscription period
431
-			$paypal_args['t3'] = $period;
430
+            // Subscription period
431
+            $paypal_args['t3'] = $period;
432 432
 
433 433
         }
434 434
 
435 435
         // Recurring payments
436
-		if ( 1 == $bill_times || ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() && 2 == $bill_times ) ) {
436
+        if ( 1 == $bill_times || ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() && 2 == $bill_times ) ) {
437 437
 
438
-			// Non-recurring payments
439
-			$paypal_args['src'] = 0;
438
+            // Non-recurring payments
439
+            $paypal_args['src'] = 0;
440 440
 
441
-		} else {
441
+        } else {
442 442
 
443
-			$paypal_args['src'] = 1;
443
+            $paypal_args['src'] = 1;
444 444
 
445
-			if ( $bill_times > 0 ) {
445
+            if ( $bill_times > 0 ) {
446 446
 
447
-				// An initial period is being used to charge a sign-up fee
448
-				if ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() ) {
449
-					$bill_times--;
450
-				}
447
+                // An initial period is being used to charge a sign-up fee
448
+                if ( $initial_amount != $recurring_amount && ! $subscription_item->has_free_trial() ) {
449
+                    $bill_times--;
450
+                }
451 451
 
452 452
                 // Make sure it's not over the max of 52
453 453
                 $paypal_args['srt'] = ( $bill_times <= 52 ? absint( $bill_times ) : 52 );
454 454
 
455
-			}
455
+            }
456 456
         }
457 457
 
458 458
         // Force return URL so that order description & instructions display
@@ -467,19 +467,19 @@  discard block
 block discarded – undo
467 467
 }
468 468
 
469 469
         return apply_filters(
470
-			'getpaid_paypal_subscription_args',
471
-			$paypal_args,
472
-			$invoice
470
+            'getpaid_paypal_subscription_args',
471
+            $paypal_args,
472
+            $invoice
473 473
         );
474 474
 
475 475
     }
476 476
 
477 477
     /**
478
-	 * Processes ipns and marks payments as complete.
479
-	 *
480
-	 * @return void
481
-	 */
482
-	public function verify_ipn() {
478
+     * Processes ipns and marks payments as complete.
479
+     *
480
+     * @return void
481
+     */
482
+    public function verify_ipn() {
483 483
         new GetPaid_Paypal_Gateway_IPN_Handler( $this );
484 484
     }
485 485
 
@@ -489,19 +489,19 @@  discard block
 block discarded – undo
489 489
     public function sandbox_notice() {
490 490
 
491 491
         return sprintf(
492
-			__( 'SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing' ),
493
-			'<a href="https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/">',
494
-			'</a>'
495
-		);
492
+            __( 'SANDBOX ENABLED. You can use sandbox testing accounts only. See the %1$sPayPal Sandbox Testing Guide%2$s for more details.', 'invoicing' ),
493
+            '<a href="https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/">',
494
+            '</a>'
495
+        );
496 496
 
497 497
     }
498 498
 
499
-	/**
500
-	 * Filters the gateway settings.
501
-	 *
502
-	 * @param array $admin_settings
503
-	 */
504
-	public function admin_settings( $admin_settings ) {
499
+    /**
500
+     * Filters the gateway settings.
501
+     *
502
+     * @param array $admin_settings
503
+     */
504
+    public function admin_settings( $admin_settings ) {
505 505
 
506 506
         $currencies = sprintf(
507 507
             __( 'Supported Currencies: %s', 'invoicing' ),
@@ -511,31 +511,31 @@  discard block
 block discarded – undo
511 511
         $admin_settings['paypal_active']['desc'] .= " ($currencies)";
512 512
         $admin_settings['paypal_desc']['std']     = __( 'Pay via PayPal: you can pay with your credit card if you don\'t have a PayPal account.', 'invoicing' );
513 513
 
514
-		// Access tokens.
515
-		$live_email      = wpinv_get_option( 'paypal_email' );
516
-		$sandbox_email   = wpinv_get_option( 'paypal_sandbox_email' );
514
+        // Access tokens.
515
+        $live_email      = wpinv_get_option( 'paypal_email' );
516
+        $sandbox_email   = wpinv_get_option( 'paypal_sandbox_email' );
517 517
 
518
-		$admin_settings['paypal_connect'] = array(
519
-			'type' => 'hook',
520
-			'id'   => 'paypal_connect',
521
-			'name' => __( 'Connect to PayPal', 'invoicing' ),
522
-		);
518
+        $admin_settings['paypal_connect'] = array(
519
+            'type' => 'hook',
520
+            'id'   => 'paypal_connect',
521
+            'name' => __( 'Connect to PayPal', 'invoicing' ),
522
+        );
523 523
 
524 524
         $admin_settings['paypal_email'] = array(
525 525
             'type'  => 'text',
526
-			'class' => 'live-auth-data',
526
+            'class' => 'live-auth-data',
527 527
             'id'    => 'paypal_email',
528 528
             'name'  => __( 'Live Email Address', 'invoicing' ),
529 529
             'desc'  => __( 'The email address of your PayPal account.', 'invoicing' ),
530 530
         );
531 531
 
532
-		$admin_settings['paypal_sandbox_email'] = array(
532
+        $admin_settings['paypal_sandbox_email'] = array(
533 533
             'type'  => 'text',
534
-			'class' => 'sandbox-auth-data',
534
+            'class' => 'sandbox-auth-data',
535 535
             'id'    => 'paypal_sandbox_email',
536 536
             'name'  => __( 'Sandbox Email Address', 'invoicing' ),
537 537
             'desc'  => __( 'The email address of your sandbox PayPal account.', 'invoicing' ),
538
-			'std'   => wpinv_get_option( 'paypal_email', '' ),
538
+            'std'   => wpinv_get_option( 'paypal_email', '' ),
539 539
         );
540 540
 
541 541
         $admin_settings['paypal_ipn_url'] = array(
@@ -547,57 +547,57 @@  discard block
 block discarded – undo
547 547
             'readonly' => true,
548 548
         );
549 549
 
550
-		return $admin_settings;
551
-	}
552
-
553
-	/**
554
-	 * Retrieves the URL to cancel a subscription.
555
-	 *
556
-	 * @param string $url
557
-	 * @param WPInv_Subscription $subscription
558
-	 */
559
-	public function filter_cancel_subscription_url( $url, $subscription ) {
560
-
561
-		if ( $this->id !== $subscription->get_gateway() ) {
562
-			return $url;
563
-		}
564
-
565
-		// Get the PayPal profile ID.
566
-		$profile_id = $subscription->get_profile_id();
567
-
568
-		// Bail if no profile ID.
569
-		if ( empty( $profile_id ) ) {
570
-			return $url;
571
-		}
572
-
573
-		$cancel_url = 'https://www.paypal.com/myaccount/autopay/connect/%s/cancel';
574
-		if ( $this->is_sandbox( $subscription->get_parent_payment() ) ) {
575
-			$cancel_url = 'https://www.sandbox.paypal.com/myaccount/autopay/connect/%s/cancel';
576
-		}
577
-
578
-		return sprintf( $cancel_url, $profile_id );
579
-	}
580
-
581
-	/**
582
-	 * Retrieves the PayPal connect URL when using the setup wizzard.
583
-	 *
584
-	 *
550
+        return $admin_settings;
551
+    }
552
+
553
+    /**
554
+     * Retrieves the URL to cancel a subscription.
555
+     *
556
+     * @param string $url
557
+     * @param WPInv_Subscription $subscription
558
+     */
559
+    public function filter_cancel_subscription_url( $url, $subscription ) {
560
+
561
+        if ( $this->id !== $subscription->get_gateway() ) {
562
+            return $url;
563
+        }
564
+
565
+        // Get the PayPal profile ID.
566
+        $profile_id = $subscription->get_profile_id();
567
+
568
+        // Bail if no profile ID.
569
+        if ( empty( $profile_id ) ) {
570
+            return $url;
571
+        }
572
+
573
+        $cancel_url = 'https://www.paypal.com/myaccount/autopay/connect/%s/cancel';
574
+        if ( $this->is_sandbox( $subscription->get_parent_payment() ) ) {
575
+            $cancel_url = 'https://www.sandbox.paypal.com/myaccount/autopay/connect/%s/cancel';
576
+        }
577
+
578
+        return sprintf( $cancel_url, $profile_id );
579
+    }
580
+
581
+    /**
582
+     * Retrieves the PayPal connect URL when using the setup wizzard.
583
+     *
584
+     *
585 585
      * @param array $data
586 586
      * @return string
587
-	 */
588
-	public static function maybe_get_connect_url( $url = '', $data = array() ) {
589
-		return self::get_connect_url( false, urldecode( $data['redirect'] ) );
590
-	}
591
-
592
-	/**
593
-	 * Retrieves the PayPal connect URL.
594
-	 *
595
-	 *
587
+     */
588
+    public static function maybe_get_connect_url( $url = '', $data = array() ) {
589
+        return self::get_connect_url( false, urldecode( $data['redirect'] ) );
590
+    }
591
+
592
+    /**
593
+     * Retrieves the PayPal connect URL.
594
+     *
595
+     *
596 596
      * @param bool $is_sandbox
597
-	 * @param string $redirect
597
+     * @param string $redirect
598 598
      * @return string
599
-	 */
600
-	public static function get_connect_url( $is_sandbox, $redirect = '' ) {
599
+     */
600
+    public static function get_connect_url( $is_sandbox, $redirect = '' ) {
601 601
 
602 602
         $redirect_url = add_query_arg(
603 603
             array(
@@ -607,7 +607,7 @@  discard block
 block discarded – undo
607 607
                 'tab'                  => 'gateways',
608 608
                 'section'              => 'paypal',
609 609
                 'getpaid-nonce'        => wp_create_nonce( 'getpaid-nonce' ),
610
-				'redirect'             => urlencode( $redirect ),
610
+                'redirect'             => urlencode( $redirect ),
611 611
             ),
612 612
             admin_url( 'admin.php' )
613 613
         );
@@ -622,12 +622,12 @@  discard block
 block discarded – undo
622 622
 
623 623
     }
624 624
 
625
-	/**
626
-	 * Generates settings page js.
627
-	 *
625
+    /**
626
+     * Generates settings page js.
627
+     *
628 628
      * @return void
629
-	 */
630
-	public static function display_connect_buttons() {
629
+     */
630
+    public static function display_connect_buttons() {
631 631
 
632 632
         ?>
633 633
 			<div class="wpinv-paypal-connect-live">
@@ -669,70 +669,70 @@  discard block
 block discarded – undo
669 669
         <?php
670 670
     }
671 671
 
672
-	/**
673
-	 * Connects to PayPal.
674
-	 *
675
-	 * @param array $data Connection data.
676
-	 * @return void
677
-	 */
678
-	public function connect_paypal( $data ) {
679
-
680
-		$sandbox      = $this->is_sandbox();
681
-		$data         = wp_unslash( $data );
682
-		$access_token = empty( $data['access_token'] ) ? '' : sanitize_text_field( $data['access_token'] );
683
-
684
-		if ( isset( $data['live_mode'] ) ) {
685
-			$sandbox = empty( $data['live_mode'] );
686
-		}
687
-
688
-		wpinv_update_option( 'paypal_sandbox', (int) $sandbox );
689
-		wpinv_update_option( 'paypal_active', 1 );
690
-
691
-		if ( ! empty( $data['error_description'] ) ) {
692
-			getpaid_admin()->show_error( wp_kses_post( urldecode( $data['error_description'] ) ) );
693
-		} else {
694
-
695
-			// Retrieve the user info.
696
-			$user_info = wp_remote_get(
697
-				! $sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
698
-				array(
699
-
700
-					'headers' => array(
701
-						'Authorization' => 'Bearer ' . $access_token,
702
-						'Content-type'  => 'application/json',
703
-					),
704
-
705
-				)
706
-			);
707
-
708
-			if ( is_wp_error( $user_info ) ) {
709
-				getpaid_admin()->show_error( wp_kses_post( $user_info->get_error_message() ) );
710
-			} else {
711
-
712
-				// Create application.
713
-				$user_info = json_decode( wp_remote_retrieve_body( $user_info ) );
714
-
715
-				if ( $sandbox ) {
716
-					wpinv_update_option( 'paypal_sandbox_email', sanitize_email( $user_info->emails[0]->value ) );
717
-					wpinv_update_option( 'paypal_sandbox_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
718
-					set_transient( 'getpaid_paypal_sandbox_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
719
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal sandbox account', 'invoicing' ) );
720
-				} else {
721
-					wpinv_update_option( 'paypal_email', sanitize_email( $user_info->emails[0]->value ) );
722
-					wpinv_update_option( 'paypal_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
723
-					set_transient( 'getpaid_paypal_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
724
-					getpaid_admin()->show_success( __( 'Successfully connected your PayPal account', 'invoicing' ) );
725
-				}
672
+    /**
673
+     * Connects to PayPal.
674
+     *
675
+     * @param array $data Connection data.
676
+     * @return void
677
+     */
678
+    public function connect_paypal( $data ) {
679
+
680
+        $sandbox      = $this->is_sandbox();
681
+        $data         = wp_unslash( $data );
682
+        $access_token = empty( $data['access_token'] ) ? '' : sanitize_text_field( $data['access_token'] );
683
+
684
+        if ( isset( $data['live_mode'] ) ) {
685
+            $sandbox = empty( $data['live_mode'] );
686
+        }
687
+
688
+        wpinv_update_option( 'paypal_sandbox', (int) $sandbox );
689
+        wpinv_update_option( 'paypal_active', 1 );
690
+
691
+        if ( ! empty( $data['error_description'] ) ) {
692
+            getpaid_admin()->show_error( wp_kses_post( urldecode( $data['error_description'] ) ) );
693
+        } else {
694
+
695
+            // Retrieve the user info.
696
+            $user_info = wp_remote_get(
697
+                ! $sandbox ? 'https://api-m.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1' : 'https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1',
698
+                array(
699
+
700
+                    'headers' => array(
701
+                        'Authorization' => 'Bearer ' . $access_token,
702
+                        'Content-type'  => 'application/json',
703
+                    ),
704
+
705
+                )
706
+            );
707
+
708
+            if ( is_wp_error( $user_info ) ) {
709
+                getpaid_admin()->show_error( wp_kses_post( $user_info->get_error_message() ) );
710
+            } else {
711
+
712
+                // Create application.
713
+                $user_info = json_decode( wp_remote_retrieve_body( $user_info ) );
714
+
715
+                if ( $sandbox ) {
716
+                    wpinv_update_option( 'paypal_sandbox_email', sanitize_email( $user_info->emails[0]->value ) );
717
+                    wpinv_update_option( 'paypal_sandbox_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
718
+                    set_transient( 'getpaid_paypal_sandbox_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
719
+                    getpaid_admin()->show_success( __( 'Successfully connected your PayPal sandbox account', 'invoicing' ) );
720
+                } else {
721
+                    wpinv_update_option( 'paypal_email', sanitize_email( $user_info->emails[0]->value ) );
722
+                    wpinv_update_option( 'paypal_refresh_token', sanitize_text_field( urldecode( $data['refresh_token'] ) ) );
723
+                    set_transient( 'getpaid_paypal_access_token', sanitize_text_field( urldecode( $data['access_token'] ) ), (int) $data['expires_in'] );
724
+                    getpaid_admin()->show_success( __( 'Successfully connected your PayPal account', 'invoicing' ) );
725
+                }
726 726
 }
727 727
 }
728 728
 
729
-		$redirect = empty( $data['redirect'] ) ? admin_url( 'admin.php?page=wpinv-settings&tab=gateways&section=paypal' ) : urldecode( $data['redirect'] );
729
+        $redirect = empty( $data['redirect'] ) ? admin_url( 'admin.php?page=wpinv-settings&tab=gateways&section=paypal' ) : urldecode( $data['redirect'] );
730 730
 
731
-		if ( isset( $data['step'] ) ) {
732
-			$redirect = add_query_arg( 'step', $data['step'], $redirect );
733
-		}
734
-		wp_redirect( $redirect );
735
-		exit;
736
-	}
731
+        if ( isset( $data['step'] ) ) {
732
+            $redirect = add_query_arg( 'step', $data['step'], $redirect );
733
+        }
734
+        wp_redirect( $redirect );
735
+        exit;
736
+    }
737 737
 
738 738
 }
Please login to merge, or discard this patch.