From b9c2550f3b700ac6393eb74e7699687eed6d0d27 Mon Sep 17 00:00:00 2001 From: dinamiko Date: Tue, 16 Feb 2021 17:06:50 +0100 Subject: [PATCH] Add save card to hosted fields --- .../js/modules/Renderer/CreditCardRenderer.js | 11 +++--- .../src/Assets/class-smartbutton.php | 35 +++++++++---------- .../src/Gateway/class-creditcardgateway.php | 1 - 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js index 48327ddba..84c6248fa 100644 --- a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js +++ b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js @@ -103,14 +103,11 @@ class CreditCardRenderer { }); if (formValid && this.cardValid) { - - let vault = document.querySelector(wrapper + ' .ppcp-credit-card-vault') ? - document.querySelector(wrapper + ' .ppcp-credit-card-vault').checked : false; - vault = this.defaultConfig.enforce_vault || vault; - + const vault = document.getElementById('ppcp-credit-card-vault') ? + document.getElementById('ppcp-credit-card-vault').checked : false; hostedFields.submit({ contingencies: ['3D_SECURE'], - vault + vault: vault }).then((payload) => { payload.orderID = payload.orderId; this.spinner.unblock(); @@ -147,4 +144,4 @@ class CreditCardRenderer { ) } } -export default CreditCardRenderer; \ No newline at end of file +export default CreditCardRenderer; diff --git a/modules/ppcp-button/src/Assets/class-smartbutton.php b/modules/ppcp-button/src/Assets/class-smartbutton.php index adb61d568..74646858e 100644 --- a/modules/ppcp-button/src/Assets/class-smartbutton.php +++ b/modules/ppcp-button/src/Assets/class-smartbutton.php @@ -197,6 +197,21 @@ class SmartButton implements SmartButtonInterface { ), 11 ); + + add_filter( + 'woocommerce_credit_card_form_fields', + function ( $default_fields, $id ) { + if ( $this->can_save_credit_card() ) { + $default_fields['card-vault'] = sprintf( + '

', + esc_html( 'Save your Credit Card', 'woocommerce-paypal-payments' ) + ); + } + return $default_fields; + }, + 10, + 2 + ); } return true; } @@ -517,31 +532,13 @@ class SmartButton implements SmartButtonInterface { return; } - $save_card = $this->can_save_credit_card() ? sprintf( - '
- - - -
', - esc_attr( $id ), - esc_html__( 'Save your card', 'woocommerce-paypal-payments' ) - ) : ''; - $label = 'checkout' === $this->context() ? __( 'Place order', 'woocommerce-paypal-payments' ) : __( 'Pay for order', 'woocommerce-paypal-payments' ); printf( '
', esc_attr( $id ), - //phpcs:ignore - $save_card, esc_html( $label ) ); } diff --git a/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php b/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php index 52dbd4349..977e37846 100644 --- a/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php +++ b/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php @@ -97,7 +97,6 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC { 'subscription_payment_method_change_customer', 'subscription_payment_method_change_admin', 'multiple_subscriptions', - 'credit_card_form_cvc_on_saved_method', ); }