mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 10:36:38 +08:00
Do not enter the checkout continuation state for dcc
it supposed to be used only for PayPal payments started on the product or cart pages
This commit is contained in:
parent
d80c051141
commit
5e547c79cc
2 changed files with 26 additions and 3 deletions
|
@ -234,7 +234,6 @@ class SmartButton implements SmartButtonInterface {
|
|||
if (
|
||||
$this->settings->has( 'dcc_enabled' )
|
||||
&& $this->settings->get( 'dcc_enabled' )
|
||||
&& ! $this->session_handler->order()
|
||||
) {
|
||||
add_action(
|
||||
$this->checkout_dcc_button_renderer_hook(),
|
||||
|
@ -1073,7 +1072,7 @@ class SmartButton implements SmartButtonInterface {
|
|||
if ( is_cart() ) {
|
||||
$context = 'cart';
|
||||
}
|
||||
if ( is_checkout() && ! $this->session_handler->order() ) {
|
||||
if ( is_checkout() && ! $this->is_paypal_continuation() ) {
|
||||
$context = 'checkout';
|
||||
}
|
||||
if ( is_checkout_pay_page() ) {
|
||||
|
@ -1082,6 +1081,23 @@ class SmartButton implements SmartButtonInterface {
|
|||
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.
|
||||
*
|
||||
|
|
|
@ -59,10 +59,17 @@ class CancelController {
|
|||
) { // Input var ok.
|
||||
$this->session_handler->destroy_session_data();
|
||||
}
|
||||
if ( ! $this->session_handler->order() ) {
|
||||
|
||||
$order = $this->session_handler->order();
|
||||
if ( ! $order ) {
|
||||
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() );
|
||||
add_action(
|
||||
'woocommerce_review_order_after_submit',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue