WooCommerce PayPal Express Checkout Payment Gateway - Version 1.6.5

Version Description

  • 2018-10-31 =
  • Fix - Truncate the line item descriptions to avoid exceeding PayPal character limits.
  • Update - WC 3.5 compatibility.
  • Fix - checkout.js script loading when not needed.
  • Fix - Missing shipping total and address when starting from checkout page.
Download this release

Release Info

Developer pauldechov
Plugin Icon 128x128 WooCommerce PayPal Express Checkout Payment Gateway
Version 1.6.5
Comparing to
See all releases

Code changes from version 1.6.4 to 1.6.5

changelog.txt CHANGED
@@ -1,5 +1,11 @@
1
  *** Changelog ***
2
 
 
 
 
 
 
 
3
  = 1.6.4 - 2018-09-27 =
4
  * Fix - Billing address from Checkout form not being passed to PayPal via Smart Payment Button.
5
  * Fix - Checkout form not being validated until after Smart Payment Button payment flow.
1
  *** Changelog ***
2
 
3
+ = 1.6.5 - 2018-10-31 =
4
+ * Fix - Truncate the line item descriptions to avoid exceeding PayPal character limits.
5
+ * Update - WC 3.5 compatibility.
6
+ * Fix - checkout.js script loading when not needed.
7
+ * Fix - Missing shipping total and address when starting from checkout page.
8
+
9
  = 1.6.4 - 2018-09-27 =
10
  * Fix - Billing address from Checkout form not being passed to PayPal via Smart Payment Button.
11
  * Fix - Checkout form not being validated until after Smart Payment Button payment flow.
includes/abstracts/abstract-wc-gateway-ppec.php CHANGED
@@ -123,7 +123,7 @@ abstract class WC_Gateway_PPEC extends WC_Payment_Gateway {
123
  try {
124
  return array(
125
  'result' => 'success',
126
- 'redirect' => $checkout->start_checkout_from_checkout( $order_id, $this->use_ppc ),
127
  );
128
  } catch ( PayPal_API_Exception $e ) {
129
  wc_add_notice( $e->getMessage(), 'error' );
@@ -134,7 +134,6 @@ abstract class WC_Gateway_PPEC extends WC_Payment_Gateway {
134
  $checkout_details = $checkout->get_checkout_details( $session->token );
135
 
136
  $checkout_context = array(
137
- 'start_from' => 'checkout',
138
  'order_id' => $order_id,
139
  );
140
  if ( $checkout->needs_billing_agreement_creation( $checkout_context ) ) {
123
  try {
124
  return array(
125
  'result' => 'success',
126
+ 'redirect' => $checkout->start_checkout_from_order( $order_id, $this->use_ppc ),
127
  );
128
  } catch ( PayPal_API_Exception $e ) {
129
  wc_add_notice( $e->getMessage(), 'error' );
134
  $checkout_details = $checkout->get_checkout_details( $session->token );
135
 
136
  $checkout_context = array(
 
137
  'order_id' => $order_id,
138
  );
139
  if ( $checkout->needs_billing_agreement_creation( $checkout_context ) ) {
includes/class-wc-gateway-ppec-cart-handler.php CHANGED
@@ -136,13 +136,11 @@ class WC_Gateway_PPEC_Cart_Handler {
136
  }
137
 
138
  if ( isset( $_POST['from_checkout'] ) && 'yes' === $_POST['from_checkout'] ) {
139
- add_filter( 'woocommerce_cart_needs_shipping', '__return_false' );
140
-
141
  // Intercept process_checkout call to exit after validation.
142
  add_action( 'woocommerce_after_checkout_validation', array( $this, 'maybe_start_checkout' ), 10, 2 );
143
  WC()->checkout->process_checkout();
144
  } else {
145
- $this->start_checkout();
146
  }
147
  }
148
 
@@ -162,7 +160,7 @@ class WC_Gateway_PPEC_Cart_Handler {
162
 
163
  if ( empty( $error_messages ) ) {
164
  $this->set_customer_data( $_POST );
165
- $this->start_checkout();
166
  } else {
167
  wp_send_json_error( array( 'messages' => $error_messages ) );
168
  }
@@ -172,11 +170,13 @@ class WC_Gateway_PPEC_Cart_Handler {
172
  /**
173
  * Set Express Checkout and return token in response.
174
  *
 
 
175
  * @since 1.6.4
176
  */
177
- protected function start_checkout() {
178
  try {
179
- wc_gateway_ppec()->checkout->start_checkout_from_cart();
180
  wp_send_json_success( array( 'token' => WC()->session->paypal->token ) );
181
  } catch( PayPal_API_Exception $e ) {
182
  wp_send_json_error( array( 'messages' => array( $e->getMessage() ) ) );
@@ -267,7 +267,8 @@ class WC_Gateway_PPEC_Cart_Handler {
267
 
268
  ?>
269
  <div class="wcppec-checkout-buttons woo_pp_cart_buttons_div">
270
- <?php if ( 'yes' === $settings->use_spb ) : ?>
 
271
  <div id="woo_pp_ec_button_product"></div>
272
  <?php else : ?>
273
 
@@ -303,7 +304,8 @@ class WC_Gateway_PPEC_Cart_Handler {
303
  </div>
304
  <?php endif; ?>
305
 
306
- <?php if ( 'yes' === $settings->use_spb ) : ?>
 
307
  <div id="woo_pp_ec_button_cart"></div>
308
  <?php else : ?>
309
 
@@ -336,7 +338,8 @@ class WC_Gateway_PPEC_Cart_Handler {
336
  }
337
  ?>
338
 
339
- <?php if ( 'yes' === $settings->use_spb ) : ?>
 
340
  <p class="woocommerce-mini-cart__buttons buttons wcppec-cart-widget-spb">
341
  <span id="woo_pp_ec_button_mini_cart"></span>
342
  </p>
@@ -427,8 +430,8 @@ class WC_Gateway_PPEC_Cart_Handler {
427
  );
428
 
429
  } elseif ( 'yes' === $settings->use_spb ) {
430
- wp_enqueue_script( 'paypal-checkout-js', 'https://www.paypalobjects.com/api/checkout.js', array(), null, true );
431
- wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons', wc_gateway_ppec()->plugin_url . 'assets/js/wc-gateway-ppec-smart-payment-buttons.js', array( 'jquery', 'paypal-checkout-js' ), wc_gateway_ppec()->version, true );
432
 
433
  $data = array(
434
  'environment' => 'sandbox' === $settings->get_environment() ? 'sandbox' : 'production',
136
  }
137
 
138
  if ( isset( $_POST['from_checkout'] ) && 'yes' === $_POST['from_checkout'] ) {
 
 
139
  // Intercept process_checkout call to exit after validation.
140
  add_action( 'woocommerce_after_checkout_validation', array( $this, 'maybe_start_checkout' ), 10, 2 );
141
  WC()->checkout->process_checkout();
142
  } else {
143
+ $this->start_checkout( true );
144
  }
145
  }
146
 
160
 
161
  if ( empty( $error_messages ) ) {
162
  $this->set_customer_data( $_POST );
163
+ $this->start_checkout( false );
164
  } else {
165
  wp_send_json_error( array( 'messages' => $error_messages ) );
166
  }
170
  /**
171
  * Set Express Checkout and return token in response.
172
  *
173
+ * @param bool $skip_checkout Whether checkout screen is being bypassed.
174
+ *
175
  * @since 1.6.4
176
  */
177
+ protected function start_checkout( $skip_checkout ) {
178
  try {
179
+ wc_gateway_ppec()->checkout->start_checkout_from_cart( $skip_checkout );
180
  wp_send_json_success( array( 'token' => WC()->session->paypal->token ) );
181
  } catch( PayPal_API_Exception $e ) {
182
  wp_send_json_error( array( 'messages' => array( $e->getMessage() ) ) );
267
 
268
  ?>
269
  <div class="wcppec-checkout-buttons woo_pp_cart_buttons_div">
270
+ <?php if ( 'yes' === $settings->use_spb ) :
271
+ wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons' ); ?>
272
  <div id="woo_pp_ec_button_product"></div>
273
  <?php else : ?>
274
 
304
  </div>
305
  <?php endif; ?>
306
 
307
+ <?php if ( 'yes' === $settings->use_spb ) :
308
+ wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons' ); ?>
309
  <div id="woo_pp_ec_button_cart"></div>
310
  <?php else : ?>
311
 
338
  }
339
  ?>
340
 
341
+ <?php if ( 'yes' === $settings->use_spb ) :
342
+ wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons' ); ?>
343
  <p class="woocommerce-mini-cart__buttons buttons wcppec-cart-widget-spb">
344
  <span id="woo_pp_ec_button_mini_cart"></span>
345
  </p>
430
  );
431
 
432
  } elseif ( 'yes' === $settings->use_spb ) {
433
+ wp_register_script( 'paypal-checkout-js', 'https://www.paypalobjects.com/api/checkout.js', array(), null, true );
434
+ wp_register_script( 'wc-gateway-ppec-smart-payment-buttons', wc_gateway_ppec()->plugin_url . 'assets/js/wc-gateway-ppec-smart-payment-buttons.js', array( 'jquery', 'paypal-checkout-js' ), wc_gateway_ppec()->version, true );
435
 
436
  $data = array(
437
  'environment' => 'sandbox' === $settings->get_environment() ? 'sandbox' : 'production',
includes/class-wc-gateway-ppec-checkout-handler.php CHANGED
@@ -705,15 +705,15 @@ class WC_Gateway_PPEC_Checkout_Handler {
705
  }
706
 
707
  /**
708
- * Handler when buyer is checking out from cart page.
709
  *
710
  * @return string Redirect URL.
711
  */
712
- public function start_checkout_from_cart() {
713
  $settings = wc_gateway_ppec()->settings;
714
 
715
  $context_args = array(
716
- 'start_from' => 'cart',
717
  );
718
 
719
  $session_data_args = array(
@@ -726,19 +726,19 @@ class WC_Gateway_PPEC_Checkout_Handler {
726
  }
727
 
728
  /**
729
- * Handler when buyer is checking out from checkout page.
730
  *
731
  * @param int $order_id Order ID.
732
  * @param bool $use_ppc Whether to use PayPal credit.
733
  *
734
  * @return string Redirect URL.
735
  */
736
- public function start_checkout_from_checkout( $order_id, $use_ppc ) {
737
  $settings = wc_gateway_ppec()->settings;
738
 
739
  $context_args = array(
740
- 'start_from' => 'checkout',
741
- 'order_id' => $order_id,
742
  );
743
 
744
  $session_data_args = array(
@@ -996,28 +996,25 @@ class WC_Gateway_PPEC_Checkout_Handler {
996
  * @param array $args {
997
  * Context args to retrieve SetExpressCheckout parameters.
998
  *
999
- * @type string $start_from Start from 'cart' or 'checkout'.
1000
- * @type int $order_id Order ID if $start_from is 'checkout'.
1001
  * }
1002
  *
1003
  * @return bool Returns true if billing agreement is needed in the purchase
1004
  */
1005
  public function needs_billing_agreement_creation( $args ) {
1006
  $needs_billing_agreement = false;
1007
- switch ( $args['start_from'] ) {
1008
- case 'cart':
1009
- if ( class_exists( 'WC_Subscriptions_Cart' ) ) {
1010
- $needs_billing_agreement = WC_Subscriptions_Cart::cart_contains_subscription();
1011
- }
1012
- break;
1013
- case 'checkout':
1014
- if ( function_exists( 'wcs_order_contains_subscription' ) ) {
1015
- $needs_billing_agreement = wcs_order_contains_subscription( $args['order_id'] );
1016
- }
1017
- if ( function_exists( 'wcs_order_contains_renewal' ) ) {
1018
- $needs_billing_agreement = ( $needs_billing_agreement || wcs_order_contains_renewal( $args['order_id'] ) );
1019
- }
1020
- break;
1021
  }
1022
 
1023
  return $needs_billing_agreement;
705
  }
706
 
707
  /**
708
+ * Handler when buyer is checking out prior to order creation.
709
  *
710
  * @return string Redirect URL.
711
  */
712
+ public function start_checkout_from_cart( $skip_checkout = true ) {
713
  $settings = wc_gateway_ppec()->settings;
714
 
715
  $context_args = array(
716
+ 'skip_checkout' => $skip_checkout,
717
  );
718
 
719
  $session_data_args = array(
726
  }
727
 
728
  /**
729
+ * Handler when buyer is checking out after order is created (i.e. from checkout page with Smart Payment Buttons disabled).
730
  *
731
  * @param int $order_id Order ID.
732
  * @param bool $use_ppc Whether to use PayPal credit.
733
  *
734
  * @return string Redirect URL.
735
  */
736
+ public function start_checkout_from_order( $order_id, $use_ppc ) {
737
  $settings = wc_gateway_ppec()->settings;
738
 
739
  $context_args = array(
740
+ 'skip_checkout' => false,
741
+ 'order_id' => $order_id,
742
  );
743
 
744
  $session_data_args = array(
996
  * @param array $args {
997
  * Context args to retrieve SetExpressCheckout parameters.
998
  *
999
+ * @type int $order_id Order ID if order has been created.
 
1000
  * }
1001
  *
1002
  * @return bool Returns true if billing agreement is needed in the purchase
1003
  */
1004
  public function needs_billing_agreement_creation( $args ) {
1005
  $needs_billing_agreement = false;
1006
+
1007
+ if ( empty( $args['order_id'] ) ) {
1008
+ if ( class_exists( 'WC_Subscriptions_Cart' ) ) {
1009
+ $needs_billing_agreement = WC_Subscriptions_Cart::cart_contains_subscription();
1010
+ }
1011
+ } else {
1012
+ if ( function_exists( 'wcs_order_contains_subscription' ) ) {
1013
+ $needs_billing_agreement = wcs_order_contains_subscription( $args['order_id'] );
1014
+ }
1015
+ if ( function_exists( 'wcs_order_contains_renewal' ) ) {
1016
+ $needs_billing_agreement = ( $needs_billing_agreement || wcs_order_contains_renewal( $args['order_id'] ) );
1017
+ }
 
 
1018
  }
1019
 
1020
  return $needs_billing_agreement;
includes/class-wc-gateway-ppec-client.php CHANGED
@@ -227,8 +227,8 @@ class WC_Gateway_PPEC_Client {
227
  * @param array $args {
228
  * Context args to retrieve SetExpressCheckout parameters.
229
  *
230
- * @type string $start_from Start from 'cart' or 'checkout'.
231
- * @type int $order_id Order ID if $start_from is 'checkout'.
232
  * @type bool $create_billing_agreement Whether billing agreement creation
233
  * is needed after returned from PayPal.
234
  * }
@@ -239,7 +239,7 @@ class WC_Gateway_PPEC_Client {
239
  $args = wp_parse_args(
240
  $args,
241
  array(
242
- 'start_from' => 'cart',
243
  'order_id' => '',
244
  'create_billing_agreement' => false,
245
  )
@@ -261,7 +261,8 @@ class WC_Gateway_PPEC_Client {
261
  $params['USERSELECTEDFUNDINGSOURCE'] = 'Finance';
262
  }
263
 
264
- if ( 'checkout' === $args['start_from'] ) {
 
265
  $params['ADDROVERRIDE'] = '1';
266
  }
267
 
@@ -288,13 +289,10 @@ class WC_Gateway_PPEC_Client {
288
  $params['PAYMENTREQUEST_0_INVNUM'] = '';
289
  $params['PAYMENTREQUEST_0_CURRENCYCODE'] = get_woocommerce_currency();
290
 
291
- switch ( $args['start_from'] ) {
292
- case 'checkout':
293
- $details = $this->_get_details_from_order( $args['order_id'] );
294
- break;
295
- case 'cart':
296
- $details = $this->_get_details_from_cart();
297
- break;
298
  }
299
 
300
  $params = array_merge(
@@ -327,7 +325,7 @@ class WC_Gateway_PPEC_Client {
327
  foreach ( $details['items'] as $line_item_key => $values ) {
328
  $line_item_params = array(
329
  'L_PAYMENTREQUEST_0_NAME' . $count => $values['name'],
330
- 'L_PAYMENTREQUEST_0_DESC' . $count => ! empty( $values['description'] ) ? strip_tags( $values['description'] ) : '',
331
  'L_PAYMENTREQUEST_0_QTY' . $count => $values['quantity'],
332
  'L_PAYMENTREQUEST_0_AMT' . $count => $values['amount'],
333
  );
@@ -350,8 +348,6 @@ class WC_Gateway_PPEC_Client {
350
  * @param array $context_args {
351
  * Context args to retrieve SetExpressCheckout parameters.
352
  *
353
- * @type string $start_from Start from 'cart' or 'checkout'.
354
- * @type int $order_id Order ID if $start_from is 'checkout'.
355
  * @type bool $create_billing_agreement Whether billing agreement creation
356
  * is needed after returned from PayPal.
357
  * }
227
  * @param array $args {
228
  * Context args to retrieve SetExpressCheckout parameters.
229
  *
230
+ * @type string $skip_checkout Whether checking out ahead of store checkout screen.
231
+ * @type int $order_id Order ID if checking out after order is created.
232
  * @type bool $create_billing_agreement Whether billing agreement creation
233
  * is needed after returned from PayPal.
234
  * }
239
  $args = wp_parse_args(
240
  $args,
241
  array(
242
+ 'skip_checkout' => true,
243
  'order_id' => '',
244
  'create_billing_agreement' => false,
245
  )
261
  $params['USERSELECTEDFUNDINGSOURCE'] = 'Finance';
262
  }
263
 
264
+ if ( ! $args['skip_checkout'] ) {
265
+ // Display shipping address sent from checkout page, rather than selecting from addresses on file with PayPal.
266
  $params['ADDROVERRIDE'] = '1';
267
  }
268
 
289
  $params['PAYMENTREQUEST_0_INVNUM'] = '';
290
  $params['PAYMENTREQUEST_0_CURRENCYCODE'] = get_woocommerce_currency();
291
 
292
+ if ( ! empty( $args['order_id'] ) ) {
293
+ $details = $this->_get_details_from_order( $args['order_id'] );
294
+ } else {
295
+ $details = $this->_get_details_from_cart();
 
 
 
296
  }
297
 
298
  $params = array_merge(
325
  foreach ( $details['items'] as $line_item_key => $values ) {
326
  $line_item_params = array(
327
  'L_PAYMENTREQUEST_0_NAME' . $count => $values['name'],
328
+ 'L_PAYMENTREQUEST_0_DESC' . $count => ! empty( $values['description'] ) ? substr( strip_tags( $values['description'] ), 0, 127 ) : '',
329
  'L_PAYMENTREQUEST_0_QTY' . $count => $values['quantity'],
330
  'L_PAYMENTREQUEST_0_AMT' . $count => $values['amount'],
331
  );
348
  * @param array $context_args {
349
  * Context args to retrieve SetExpressCheckout parameters.
350
  *
 
 
351
  * @type bool $create_billing_agreement Whether billing agreement creation
352
  * is needed after returned from PayPal.
353
  * }
includes/class-wc-gateway-ppec-settings.php CHANGED
@@ -183,7 +183,7 @@ class WC_Gateway_PPEC_Settings {
183
  public function get_set_express_checkout_shortcut_params( $buckets = 1 ) {
184
  _deprecated_function( __METHOD__, '1.2.0', 'WC_Gateway_PPEC_Client::get_set_express_checkout_params' );
185
 
186
- return wc_gateway_ppec()->client->get_set_express_checkout_params( array( 'start_from' => 'cart' ) );
187
  }
188
 
189
  public function get_set_express_checkout_mark_params( $buckets = 1 ) {
@@ -191,7 +191,7 @@ class WC_Gateway_PPEC_Settings {
191
 
192
  // Still missing order_id in args.
193
  return wc_gateway_ppec()->client->get_set_express_checkout_params( array(
194
- 'start_from' => 'checkout',
195
  ) );
196
  }
197
 
183
  public function get_set_express_checkout_shortcut_params( $buckets = 1 ) {
184
  _deprecated_function( __METHOD__, '1.2.0', 'WC_Gateway_PPEC_Client::get_set_express_checkout_params' );
185
 
186
+ return wc_gateway_ppec()->client->get_set_express_checkout_params( array( 'skip_checkout' => true ) );
187
  }
188
 
189
  public function get_set_express_checkout_mark_params( $buckets = 1 ) {
191
 
192
  // Still missing order_id in args.
193
  return wc_gateway_ppec()->client->get_set_express_checkout_params( array(
194
+ 'skip_checkout' => false,
195
  ) );
196
  }
197
 
includes/class-wc-gateway-ppec-with-spb-addons.php CHANGED
@@ -19,6 +19,7 @@ class WC_Gateway_PPEC_With_SPB_Addons extends WC_Gateway_PPEC_With_PayPal_Addons
19
  * Display PayPal button on the checkout page order review.
20
  */
21
  public function display_paypal_button() {
 
22
  ?>
23
  <div id="woo_pp_ec_button_checkout"></div>
24
  <?php
19
  * Display PayPal button on the checkout page order review.
20
  */
21
  public function display_paypal_button() {
22
+ wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons' );
23
  ?>
24
  <div id="woo_pp_ec_button_checkout"></div>
25
  <?php
includes/class-wc-gateway-ppec-with-spb.php CHANGED
@@ -19,6 +19,7 @@ class WC_Gateway_PPEC_With_SPB extends WC_Gateway_PPEC_With_PayPal {
19
  * Display PayPal button on the checkout page order review.
20
  */
21
  public function display_paypal_button() {
 
22
  ?>
23
  <div id="woo_pp_ec_button_checkout"></div>
24
  <?php
19
  * Display PayPal button on the checkout page order review.
20
  */
21
  public function display_paypal_button() {
22
+ wp_enqueue_script( 'wc-gateway-ppec-smart-payment-buttons' );
23
  ?>
24
  <div id="woo_pp_ec_button_checkout"></div>
25
  <?php
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: automattic, woothemes, akeda, dwainm, royho, allendav, slash1andy, woosteve, spraveenitpro, mikedmoore, fernashes, shellbeezy, danieldudzic, mikaey, fullysupportedphil, dsmithweb, corsonr, bor0, zandyring, pauldechov
3
  Tags: ecommerce, e-commerce, commerce, woothemes, wordpress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, paypal
4
  Requires at least: 4.4
5
- Tested up to: 4.9.6
6
- Stable tag: 1.6.4
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -101,6 +101,12 @@ Please use this to inform us about bugs, or make contributions via PRs.
101
 
102
  == Changelog ==
103
 
 
 
 
 
 
 
104
  = 1.6.4 - 2018-09-27 =
105
  * Fix - Billing address from Checkout form not being passed to PayPal via Smart Payment Button.
106
  * Fix - Checkout form not being validated until after Smart Payment Button payment flow.
2
  Contributors: automattic, woothemes, akeda, dwainm, royho, allendav, slash1andy, woosteve, spraveenitpro, mikedmoore, fernashes, shellbeezy, danieldudzic, mikaey, fullysupportedphil, dsmithweb, corsonr, bor0, zandyring, pauldechov
3
  Tags: ecommerce, e-commerce, commerce, woothemes, wordpress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, paypal
4
  Requires at least: 4.4
5
+ Tested up to: 4.9.8
6
+ Stable tag: 1.6.5
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
101
 
102
  == Changelog ==
103
 
104
+ = 1.6.5 - 2018-10-31 =
105
+ * Fix - Truncate the line item descriptions to avoid exceeding PayPal character limits.
106
+ * Update - WC 3.5 compatibility.
107
+ * Fix - checkout.js script loading when not needed.
108
+ * Fix - Missing shipping total and address when starting from checkout page.
109
+
110
  = 1.6.4 - 2018-09-27 =
111
  * Fix - Billing address from Checkout form not being passed to PayPal via Smart Payment Button.
112
  * Fix - Checkout form not being validated until after Smart Payment Button payment flow.
woocommerce-gateway-paypal-express-checkout.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce PayPal Checkout Gateway
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-gateway-paypal-express-checkout/
5
  * Description: A payment gateway for PayPal Checkout (https://www.paypal.com/us/webapps/mpp/paypal-checkout).
6
- * Version: 1.6.4
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com
9
  * Copyright: © 2018 WooCommerce / PayPal.
@@ -11,7 +11,7 @@
11
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
12
  * Text Domain: woocommerce-gateway-paypal-express-checkout
13
  * Domain Path: /languages
14
- * WC tested up to: 3.4
15
  * WC requires at least: 2.6
16
  */
17
  /**
@@ -27,7 +27,7 @@ if ( ! defined( 'ABSPATH' ) ) {
27
  exit; // Exit if accessed directly
28
  }
29
 
30
- define( 'WC_GATEWAY_PPEC_VERSION', '1.6.4' );
31
 
32
  /**
33
  * Return instance of WC_Gateway_PPEC_Plugin.
3
  * Plugin Name: WooCommerce PayPal Checkout Gateway
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-gateway-paypal-express-checkout/
5
  * Description: A payment gateway for PayPal Checkout (https://www.paypal.com/us/webapps/mpp/paypal-checkout).
6
+ * Version: 1.6.5
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com
9
  * Copyright: © 2018 WooCommerce / PayPal.
11
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
12
  * Text Domain: woocommerce-gateway-paypal-express-checkout
13
  * Domain Path: /languages
14
+ * WC tested up to: 3.5
15
  * WC requires at least: 2.6
16
  */
17
  /**
27
  exit; // Exit if accessed directly
28
  }
29
 
30
+ define( 'WC_GATEWAY_PPEC_VERSION', '1.6.5' );
31
 
32
  /**
33
  * Return instance of WC_Gateway_PPEC_Plugin.