From 5ad73cf5f0e741a7f87abc3cfa2418f094f70164 Mon Sep 17 00:00:00 2001 From: Daniel Dudzic Date: Tue, 30 Jul 2024 10:24:26 +0200 Subject: [PATCH 1/2] Google Pay: Prevent field validation from being triggered on checkout page load --- .../resources/js/Context/CheckoutHandler.js | 6 ++--- .../resources/js/GooglepayButton.js | 25 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js b/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js index 251b4f3c4..82d04f578 100644 --- a/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js +++ b/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js @@ -4,7 +4,7 @@ import CheckoutActionHandler from '../../../../ppcp-button/resources/js/modules/ import FormValidator from '../../../../ppcp-button/resources/js/modules/Helper/FormValidator'; class CheckoutHandler extends BaseHandler { - transactionInfo() { + formValidator() { return new Promise( async ( resolve, reject ) => { try { const spinner = new Spinner(); @@ -23,7 +23,7 @@ class CheckoutHandler extends BaseHandler { : null; if ( ! formValidator ) { - resolve( super.transactionInfo() ); + resolve(); return; } @@ -42,7 +42,7 @@ class CheckoutHandler extends BaseHandler { reject(); } else { - resolve( super.transactionInfo() ); + resolve(); } } ); } catch ( error ) { diff --git a/modules/ppcp-googlepay/resources/js/GooglepayButton.js b/modules/ppcp-googlepay/resources/js/GooglepayButton.js index 87bc642f0..2c15571b3 100644 --- a/modules/ppcp-googlepay/resources/js/GooglepayButton.js +++ b/modules/ppcp-googlepay/resources/js/GooglepayButton.js @@ -292,17 +292,24 @@ class GooglepayButton { onButtonClick() { this.log( 'onButtonClick', this.context ); - const paymentDataRequest = this.paymentDataRequest(); + this.contextHandler.formValidator().then( + () => { + window.ppcpFundingSource = 'googlepay'; - this.log( - 'onButtonClick: paymentDataRequest', - paymentDataRequest, - this.context + const paymentDataRequest = this.paymentDataRequest(); + + this.log( + 'onButtonClick: paymentDataRequest', + paymentDataRequest, + this.context + ); + + this.paymentsClient.loadPaymentData( paymentDataRequest ); + }, + () => { + console.error( '[GooglePayButton] Form validation failed.' ); + } ); - - window.ppcpFundingSource = 'googlepay'; // Do this on another place like on create order endpoint handler. - - this.paymentsClient.loadPaymentData( paymentDataRequest ); } paymentDataRequest() { From a301d901dd4a530032769e37f55f407d9e44ad37 Mon Sep 17 00:00:00 2001 From: Daniel Dudzic Date: Tue, 30 Jul 2024 10:31:44 +0200 Subject: [PATCH 2/2] Google Pay: Update the formValidator name --- modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js | 2 +- modules/ppcp-googlepay/resources/js/GooglepayButton.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js b/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js index 82d04f578..b4a07709e 100644 --- a/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js +++ b/modules/ppcp-googlepay/resources/js/Context/CheckoutHandler.js @@ -4,7 +4,7 @@ import CheckoutActionHandler from '../../../../ppcp-button/resources/js/modules/ import FormValidator from '../../../../ppcp-button/resources/js/modules/Helper/FormValidator'; class CheckoutHandler extends BaseHandler { - formValidator() { + validateForm() { return new Promise( async ( resolve, reject ) => { try { const spinner = new Spinner(); diff --git a/modules/ppcp-googlepay/resources/js/GooglepayButton.js b/modules/ppcp-googlepay/resources/js/GooglepayButton.js index 2c15571b3..4363c67be 100644 --- a/modules/ppcp-googlepay/resources/js/GooglepayButton.js +++ b/modules/ppcp-googlepay/resources/js/GooglepayButton.js @@ -292,7 +292,7 @@ class GooglepayButton { onButtonClick() { this.log( 'onButtonClick', this.context ); - this.contextHandler.formValidator().then( + this.contextHandler.validateForm().then( () => { window.ppcpFundingSource = 'googlepay';