WooCommerce PayPal Express Checkout Payment Gateway - Version 1.6.2

Version Description

  • 2018-08-15 =
  • Fix - Tax not applied on the (Confirm your PayPal order) page at the checkout.
Download this release

Release Info

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

Code changes from version 1.6.1 to 1.6.2

changelog.txt CHANGED
@@ -1,5 +1,8 @@
1
  *** Changelog ***
2
 
 
 
 
3
  = 1.6.1 - 2018-07-04 =
4
  * Fix - GDPR Fatal error exporting user data when they have PPEC subscriptions.
5
  * Fix - PayPal Credit still being disabled by default.
1
  *** Changelog ***
2
 
3
+ = 1.6.2 - 2018-08-15 =
4
+ * Fix - Tax not applied on the (Confirm your PayPal order) page at the checkout.
5
+
6
  = 1.6.1 - 2018-07-04 =
7
  * Fix - GDPR Fatal error exporting user data when they have PPEC subscriptions.
8
  * Fix - PayPal Credit still being disabled by default.
includes/class-wc-gateway-ppec-cart-handler.php CHANGED
@@ -32,6 +32,7 @@ class WC_Gateway_PPEC_Cart_Handler {
32
  if ( 'yes' === wc_gateway_ppec()->settings->checkout_on_single_product_enabled ) {
33
  add_action( 'woocommerce_after_add_to_cart_form', array( $this, 'display_paypal_button_product' ), 1 );
34
  add_action( 'wc_ajax_wc_ppec_generate_cart', array( $this, 'wc_ajax_generate_cart' ) );
 
35
  }
36
 
37
  add_action( 'wc_ajax_wc_ppec_update_shipping_costs', array( $this, 'wc_ajax_update_shipping_costs' ) );
@@ -333,7 +334,7 @@ class WC_Gateway_PPEC_Cart_Handler {
333
  'page' => $page,
334
  'button_color' => $settings->button_color,
335
  'button_shape' => $settings->button_shape,
336
- 'start_checkout_nonce' => $this->create_nonce( '_wc_ppec_start_checkout_nonce' ),
337
  'start_checkout_url' => WC_AJAX::get_endpoint( 'wc_ppec_start_checkout' ),
338
  );
339
 
@@ -364,7 +365,7 @@ class WC_Gateway_PPEC_Cart_Handler {
364
  wp_enqueue_script( 'wc-gateway-ppec-generate-cart', wc_gateway_ppec()->plugin_url . 'assets/js/wc-gateway-ppec-generate-cart.js', array( 'jquery' ), wc_gateway_ppec()->version, true );
365
  wp_localize_script( 'wc-gateway-ppec-generate-cart', 'wc_ppec_generate_cart_context',
366
  array(
367
- 'generate_cart_nonce' => $this->create_nonce( '_wc_ppec_generate_cart_nonce' ),
368
  'ajaxurl' => WC_AJAX::get_endpoint( 'wc_ppec_generate_cart' ),
369
  )
370
  );
@@ -372,14 +373,12 @@ class WC_Gateway_PPEC_Cart_Handler {
372
  }
373
 
374
  /**
375
- * Ensures a session is active, so that nonce is not invalidated by new session created on AJAX POST request.
376
  */
377
- protected function create_nonce( $action ) {
378
  if ( ! WC()->session->has_session() ) {
379
  WC()->session->set_customer_session_cookie( true );
380
  }
381
-
382
- return wp_create_nonce( $action );
383
  }
384
 
385
  /**
32
  if ( 'yes' === wc_gateway_ppec()->settings->checkout_on_single_product_enabled ) {
33
  add_action( 'woocommerce_after_add_to_cart_form', array( $this, 'display_paypal_button_product' ), 1 );
34
  add_action( 'wc_ajax_wc_ppec_generate_cart', array( $this, 'wc_ajax_generate_cart' ) );
35
+ add_action( 'wp', array( $this, 'ensure_session' ) ); // Ensure there is a customer session so that nonce is not invalidated by new session created on AJAX POST request.
36
  }
37
 
38
  add_action( 'wc_ajax_wc_ppec_update_shipping_costs', array( $this, 'wc_ajax_update_shipping_costs' ) );
334
  'page' => $page,
335
  'button_color' => $settings->button_color,
336
  'button_shape' => $settings->button_shape,
337
+ 'start_checkout_nonce' => wp_create_nonce( '_wc_ppec_start_checkout_nonce' ),
338
  'start_checkout_url' => WC_AJAX::get_endpoint( 'wc_ppec_start_checkout' ),
339
  );
340
 
365
  wp_enqueue_script( 'wc-gateway-ppec-generate-cart', wc_gateway_ppec()->plugin_url . 'assets/js/wc-gateway-ppec-generate-cart.js', array( 'jquery' ), wc_gateway_ppec()->version, true );
366
  wp_localize_script( 'wc-gateway-ppec-generate-cart', 'wc_ppec_generate_cart_context',
367
  array(
368
+ 'generate_cart_nonce' => wp_create_nonce( '_wc_ppec_generate_cart_nonce' ),
369
  'ajaxurl' => WC_AJAX::get_endpoint( 'wc_ppec_generate_cart' ),
370
  )
371
  );
373
  }
374
 
375
  /**
376
+ * Creates a customer session if one is not already active.
377
  */
378
+ public function ensure_session() {
379
  if ( ! WC()->session->has_session() ) {
380
  WC()->session->set_customer_session_cookie( true );
381
  }
 
 
382
  }
383
 
384
  /**
includes/class-wc-gateway-ppec-checkout-handler.php CHANGED
@@ -438,6 +438,9 @@ class WC_Gateway_PPEC_Checkout_Handler {
438
  $session->payer_id = $payer_id;
439
  $session->token = $token;
440
 
 
 
 
441
  WC()->session->set( 'paypal', $session );
442
 
443
  try {
@@ -476,6 +479,48 @@ class WC_Gateway_PPEC_Checkout_Handler {
476
  }
477
  }
478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
479
  /**
480
  * Maybe disable this or other gateways.
481
  *
438
  $session->payer_id = $payer_id;
439
  $session->token = $token;
440
 
441
+ // Update customer addresses here from PayPal selection so they can be used to calculate local taxes.
442
+ $this->update_customer_addresses_from_paypal( $token );
443
+
444
  WC()->session->set( 'paypal', $session );
445
 
446
  try {
479
  }
480
  }
481
 
482
+ /**
483
+ * Updates shipping and billing addresses.
484
+ *
485
+ * Retrieves shipping and billing addresses from PayPal session.
486
+ * This should be done prior to generating order confirmation so
487
+ * local taxes can be calculated and displayed to customer.
488
+ *
489
+ * @since 1.6.2.
490
+ *
491
+ * @param string $token Token
492
+ *
493
+ * @return void
494
+ */
495
+ private function update_customer_addresses_from_paypal( $token ) {
496
+ // Get the buyer details from PayPal.
497
+ try {
498
+ $checkout_details = $this->get_checkout_details( $token );
499
+ } catch ( PayPal_API_Exception $e ) {
500
+ wc_add_notice( $e->getMessage(), 'error' );
501
+ return;
502
+ }
503
+ $shipping_details = $this->get_mapped_shipping_address( $checkout_details );
504
+ $billing_details = $this->get_mapped_billing_address( $checkout_details );
505
+
506
+ $customer = WC()->customer;
507
+
508
+ // Update billing/shipping addresses.
509
+ $customer->set_billing_address( $billing_details['address_1'] );
510
+ $customer->set_billing_address_2( $billing_details['address_2'] );
511
+ $customer->set_billing_city( $billing_details['city'] );
512
+ $customer->set_billing_postcode( $billing_details['postcode'] );
513
+ $customer->set_billing_state( $billing_details['state'] );
514
+ $customer->set_billing_country( $billing_details['country'] );
515
+
516
+ $customer->set_shipping_address( $shipping_details['address_1'] );
517
+ $customer->set_shipping_address_2( $shipping_details['address_2'] );
518
+ $customer->set_shipping_city( $shipping_details['city'] );
519
+ $customer->set_shipping_postcode( $shipping_details['postcode'] );
520
+ $customer->set_shipping_state( $shipping_details['state'] );
521
+ $customer->set_shipping_country( $shipping_details['country'] );
522
+ }
523
+
524
  /**
525
  * Maybe disable this or other gateways.
526
  *
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: automattic, woothemes, akeda, dwainm, royho, allendav, slash1andy,
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.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -101,6 +101,9 @@ Please use this to inform us about bugs, or make contributions via PRs.
101
 
102
  == Changelog ==
103
 
 
 
 
104
  = 1.6.1 - 2018-07-04 =
105
  * Fix - GDPR Fatal error exporting user data when they have PPEC subscriptions.
106
  * Fix - PayPal Credit still being disabled by default.
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.2
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
101
 
102
  == Changelog ==
103
 
104
+ = 1.6.2 - 2018-08-15 =
105
+ * Fix - Tax not applied on the (Confirm your PayPal order) page at the checkout.
106
+
107
  = 1.6.1 - 2018-07-04 =
108
  * Fix - GDPR Fatal error exporting user data when they have PPEC subscriptions.
109
  * Fix - PayPal Credit still being disabled by default.
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.1
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com
9
  * Copyright: © 2018 WooCommerce / PayPal.
@@ -27,7 +27,7 @@ if ( ! defined( 'ABSPATH' ) ) {
27
  exit; // Exit if accessed directly
28
  }
29
 
30
- define( 'WC_GATEWAY_PPEC_VERSION', '1.6.1' );
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.2
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com
9
  * Copyright: © 2018 WooCommerce / PayPal.
27
  exit; // Exit if accessed directly
28
  }
29
 
30
+ define( 'WC_GATEWAY_PPEC_VERSION', '1.6.2' );
31
 
32
  /**
33
  * Return instance of WC_Gateway_PPEC_Plugin.