Merge pull request #696 from woocommerce/pcp-479-remove-dcc-continuation

Do not enter the checkout continuation state for dcc
This commit is contained in:
Emili Castells 2022-06-27 10:37:39 +02:00 committed by GitHub
commit b118c4b60c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View file

@ -234,7 +234,6 @@ class SmartButton implements SmartButtonInterface {
if ( if (
$this->settings->has( 'dcc_enabled' ) $this->settings->has( 'dcc_enabled' )
&& $this->settings->get( 'dcc_enabled' ) && $this->settings->get( 'dcc_enabled' )
&& ! $this->session_handler->order()
) { ) {
add_action( add_action(
$this->checkout_dcc_button_renderer_hook(), $this->checkout_dcc_button_renderer_hook(),
@ -1077,7 +1076,7 @@ class SmartButton implements SmartButtonInterface {
if ( is_cart() ) { if ( is_cart() ) {
$context = 'cart'; $context = 'cart';
} }
if ( is_checkout() && ! $this->session_handler->order() ) { if ( is_checkout() && ! $this->is_paypal_continuation() ) {
$context = 'checkout'; $context = 'checkout';
} }
if ( is_checkout_pay_page() ) { if ( is_checkout_pay_page() ) {
@ -1086,6 +1085,23 @@ class SmartButton implements SmartButtonInterface {
return $context; return $context;
} }
/**
* Checks if PayPal payment was already initiated (on the product or cart pages).
*
* @return bool
*/
private function is_paypal_continuation(): bool {
$order = $this->session_handler->order();
if ( ! $order ) {
return false;
}
$source = $order->payment_source();
if ( $source && $source->card() ) {
return false; // Ignore for DCC.
}
return true;
}
/** /**
* Whether DCC is enabled or not. * Whether DCC is enabled or not.
* *

View file

@ -59,10 +59,17 @@ class CancelController {
) { // Input var ok. ) { // Input var ok.
$this->session_handler->destroy_session_data(); $this->session_handler->destroy_session_data();
} }
if ( ! $this->session_handler->order() ) {
$order = $this->session_handler->order();
if ( ! $order ) {
return; return;
} }
$source = $order->payment_source();
if ( $source && $source->card() ) {
return; // Ignore for DCC.
}
$url = add_query_arg( array( $param_name => wp_create_nonce( $nonce ) ), wc_get_checkout_url() ); $url = add_query_arg( array( $param_name => wp_create_nonce( $nonce ) ), wc_get_checkout_url() );
add_action( add_action(
'woocommerce_review_order_after_submit', 'woocommerce_review_order_after_submit',