Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a notice about custom checkout fields conflicting with express checkout #8339

Merged
merged 13 commits into from
Mar 19, 2024

Conversation

gpressutto5
Copy link
Contributor

@gpressutto5 gpressutto5 commented Mar 6, 2024

Fixes #8299

Changes proposed in this Pull Request

Custom fields are currently incompatible with express checkout methods. This PR adds a notice next to the Apple Pay and Google Pay settings when a change in the checkout fields is detected.

image

image

Testing instructions

  1. Go to WooPayments settings and notice there is no warning next to Google Pay / Apple Pay toggle section.
  2. Go to Google Pay / Apple Pay page settings and notice there is no warning.
  3. Install an extension to change/add checkout fields, or do it manually by using the filters woocommerce_billing_fields, woocommerce_shipping_fields, and woocommerce_checkout_fields.
  4. Go back to 1. and 2. and ensure there is a warning.

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@botwoo
Copy link
Collaborator

botwoo commented Mar 6, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 8339 or branch name express-checkout-incompatibility-notice in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: cc4909b
  • Build time: 2024-03-18 15:23:45 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Mar 6, 2024

Size Change: -93.9 kB (-7%) ✅

Total Size: 1.19 MB

Filename Size Change
release/woocommerce-payments/dist/blocks-checkout.js 54 kB -31.6 kB (-37%) 🎉
release/woocommerce-payments/dist/index.js 291 kB +31 B (0%)
release/woocommerce-payments/dist/multi-currency-switcher-block.js 59.4 kB +14 B (0%)
release/woocommerce-payments/dist/multi-currency.js 54.4 kB +28 B (0%)
release/woocommerce-payments/dist/order.js 41.7 kB +46 B (0%)
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB +34 B (0%)
release/woocommerce-payments/dist/settings.js 199 kB -30.9 kB (-13%) 👏
release/woocommerce-payments/dist/woopay-express-button.js 21.1 kB -31.6 kB (-60%) 🏆
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.06 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.06 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/assets/css/success.rtl.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.92 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.91 kB
release/woocommerce-payments/dist/cart.js 4.2 kB
release/woocommerce-payments/dist/checkout-rtl.css 405 B
release/woocommerce-payments/dist/checkout.css 406 B
release/woocommerce-payments/dist/checkout.js 36.9 kB
release/woocommerce-payments/dist/index-rtl.css 40 kB
release/woocommerce-payments/dist/index.css 40 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.28 kB
release/woocommerce-payments/dist/multi-currency.css 3.29 kB
release/woocommerce-payments/dist/order-rtl.css 719 B
release/woocommerce-payments/dist/order.css 721 B
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.21 kB
release/woocommerce-payments/dist/payment-gateways.css 1.21 kB
release/woocommerce-payments/dist/payment-request-rtl.css 155 B
release/woocommerce-payments/dist/payment-request.css 155 B
release/woocommerce-payments/dist/payment-request.js 12.4 kB
release/woocommerce-payments/dist/product-details-rtl.css 155 B
release/woocommerce-payments/dist/product-details.css 155 B
release/woocommerce-payments/dist/product-details.js 9.09 kB
release/woocommerce-payments/dist/settings-rtl.css 11 kB
release/woocommerce-payments/dist/settings.css 10.8 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 19.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 710 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 18.5 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 236 B
release/woocommerce-payments/dist/tos.js 21 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 4.32 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 155 B
release/woocommerce-payments/dist/woopay-express-button.css 155 B
release/woocommerce-payments/dist/woopay-rtl.css 4.44 kB
release/woocommerce-payments/dist/woopay.css 4.41 kB
release/woocommerce-payments/dist/woopay.js 71 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 622 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 812 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.43 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.01 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 522 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 581 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/babel.config.js 160 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.css 2.37 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.5 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.37 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.03 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 291 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 403 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 299 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 742 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 572 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 411 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 544 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.8 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.83 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 544 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 502 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 355 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 429 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 781 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.27 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 392 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.05 kB

compressed-size-action

@gpressutto5 gpressutto5 marked this pull request as ready for review March 8, 2024 04:26
@gpressutto5 gpressutto5 requested review from a team and frosso and removed request for a team March 8, 2024 04:26
@gpressutto5 gpressutto5 requested review from a team and timur27 and removed request for frosso and a team March 12, 2024 14:51
Copy link
Contributor

@timur27 timur27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gpressutto5 I enjoyed reviewing the implementation, and it tests well, thank you! Two things from my side:

1️⃣ I'm curious if checking the following hooks as well is worth consideration? They also allow adding custom fields. Happy to hear your opinion.

woocommerce_before_checkout_billing_form
woocommerce_after_checkout_billing_form
woocommerce_before_checkout_shipping_form
woocommerce_after_checkout_shipping_form

2️⃣ On the Google Pay / Apple Pay settings page, the positioning of notification seems to be a little bit unexpected

image

@gpressutto5
Copy link
Contributor Author

Hey @timur27

1️⃣ The purpose of those filters we're checking is to be used to alter checkout fields. These actions are visual hooks and are not a safe way to add new fields. It can be challenging to check all the possible ways to add new fields, so I checked several different plugins and saw that they always use these filters. So, I believe we can use the filters, and if we still have problems in the future, we can think of another way. What do you think?

2️⃣ The notice component in your print seems different. Could you try rebuilding the bundle and clearing the cache? If the error still persists, please check how the notice is rendered in WooPay's settings page as we are using the same component.

image

Copy link
Contributor

@timur27 timur27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gpressutto5 below are my responses but TL;DR is that I'm approving the PR and there's nothing blocking it from being merged. Thanks for the work you did here!

So, I believe we can use the filters, and if we still have problems in the future, we can think of another way. What do you think?

Totally agree with starting small and seeing if there is a need to extend the list of hooks we check. The reason I asked is I remember seeing these additional hooks in a pretty popular third-party plugin.

The notice component in your print seems different. Could you try rebuilding the bundle and clearing the cache? If the error still persists, please check how the notice is rendered in WooPay's settings page as we are using the same component.

I rebuilt, and still, things display strangely. I tried using a different browser and cleared the cache, but had no luck. But then the WooPay notification on develop (screenshot below) displays the same way, so I am pretty sure this is unrelated to your PR.

image

@gpressutto5 gpressutto5 added this pull request to the merge queue Mar 19, 2024
Merged via the queue into develop with commit 6a22e18 Mar 19, 2024
25 of 26 checks passed
@gpressutto5 gpressutto5 deleted the express-checkout-incompatibility-notice branch March 19, 2024 19:55
Jinksi pushed a commit that referenced this pull request Mar 28, 2024
@gpressutto5 gpressutto5 changed the title Added a notice about custom checkout fields conflicting with express checkouut Added a notice about custom checkout fields conflicting with express checkout Apr 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Detect custom fields and disclose when they may cause conflicts with express checkout methods
3 participants