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

Hide WooPay button on zero total orders without shipping address #9846

Closed
wants to merge 16 commits into from

Conversation

alefesouza
Copy link
Member

@alefesouza alefesouza commented Nov 29, 2024

Fixes #7895

Changes proposed in this Pull Request

This PR hides the WooPay button on zero total orders, or when buying zero total subscription (0 sign up fee and 0 renewal price) when the cart does not need shipping.

This PR also fixes an issue where other express payment buttons do not get hidden when the order gets to 0 after applying gift cards on classic checkout.

Testing instructions

  • Create a $0 virtual product.
  • Access this product page.
  • The WooPay express checkout button should be hidden.
  • Add this product to the cart.
  • Access the cart or checkout pages on blocks and classic checkout.
  • The WooPay express checkout button should be hidden.
  • Interact with WooPay email field on checkout page, it should not check if the email exists or redirect if you are already authenticated.
  • Add another virtual product with any value greater than 0.
  • Access the cart or checkout pages on blocks and classic checkout.
  • The WooPay express checkout button should be shown.
  • Add coupons and gift cards to make the order total decrease to 0.
  • The WooPay express checkout button should be hidden (using gift cards on classic checkout now should hide the other express payment buttons too).
  • Create a $0 virtual subscription, without sign up fee.
  • Access this subscription page.
  • The WooPay express checkout button should be hidden.
  • Add this subscription to the cart.
  • Access the cart or checkout pages on blocks and classic checkout.
  • The WooPay express checkout button should be hidden.
  • Interact with WooPay email field on checkout page, it should not check if the email exists or redirect if you are already authenticated.
  • Change the sign up fee to any value greater than 0.
  • Reload the cart or checkout page.
  • The WooPay express checkout button should be shown.
  • For any other scenario, the WooPay express checkout button should work as it worked before.

  • 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

@alefesouza alefesouza requested review from a team and malithsen and removed request for a team November 29, 2024 02:05
@botwoo
Copy link
Collaborator

botwoo commented Nov 29, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 9846 or branch name fix/hide-woopay-button-on-zero-total-orders 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: 35a4234
  • Build time: 2024-11-29 18:05:31 UTC

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

Copy link
Contributor

github-actions bot commented Nov 29, 2024

Size Change: -724 B (0%)

Total Size: 1.34 MB

Filename Size Change
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.65 kB -11 B (0%)
release/woocommerce-payments/dist/blocks-checkout.css 2.65 kB -10 B (0%)
release/woocommerce-payments/dist/blocks-checkout.js 54.6 kB +88 B (0%)
release/woocommerce-payments/dist/express-checkout.js 15 kB +13 B (0%)
release/woocommerce-payments/dist/index.js 303 kB +57 B (0%)
release/woocommerce-payments/dist/woopay-express-button.js 24.8 kB +167 B (+1%)
release/woocommerce-payments/dist/woopay-rtl.css 4.31 kB -216 B (-5%)
release/woocommerce-payments/dist/woopay.css 4.28 kB -213 B (-5%)
release/woocommerce-payments/dist/woopay.js 71 kB -599 B (-1%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.37 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.37 kB
release/woocommerce-payments/assets/css/success.css 182 B
release/woocommerce-payments/assets/css/success.rtl.css 184 B
release/woocommerce-payments/dist/cart-block.js 16.9 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 939 B
release/woocommerce-payments/dist/checkout.css 939 B
release/woocommerce-payments/dist/checkout.js 33.1 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/express-checkout.css 229 B
release/woocommerce-payments/dist/frontend-tracks.js 854 B
release/woocommerce-payments/dist/index-rtl.css 52.6 kB
release/woocommerce-payments/dist/index.css 52.5 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 4.46 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.6 kB
release/woocommerce-payments/dist/multi-currency.css 4.46 kB
release/woocommerce-payments/dist/multi-currency.js 57.3 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
release/woocommerce-payments/dist/order.js 42 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 386 B
release/woocommerce-payments/dist/plugins-page.css 386 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.2 kB
release/woocommerce-payments/dist/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 kB
release/woocommerce-payments/dist/settings.js 224 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 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 19.3 kB
release/woocommerce-payments/dist/tokenized-express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.js 16.3 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 767 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/react-jsx-runtime.js 553 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.2 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 417 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 584 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 621 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 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.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 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.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 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 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 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 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@malithsen
Copy link
Member

@alefesouza I haven't reviewed the changes yet, but wanted to double-check:
My understanding from @pierorocca's comments #7895 (comment) and p1732303062924459/1732300628.585199-slack-C3NCP7ZJ6 is that we should not hide the WooPay button for 0$ orders, instead update WooPay to support those. Did that decision change?

@pierorocca
Copy link
Contributor

pierorocca commented Nov 29, 2024

There are scenarios when it's not showing up and should, and where it is and shouldn't like when there's no billing or shipping to collect, no future payment. Also there's the bug where on hosted checkout for $0 the place order button is disabled.

Similarly with ECE I opened an issue because the logic is ignoring sign-up fees for subscriptions and sometimes doesn't show the button.

I'll run through an audit later today.

@alefesouza
Copy link
Member Author

@malithsen I talked with @pierorocca on Slack and my understanding was to hide the button:

  • On $0 orders with no shipping (virtual products).
  • On $0 subscriptions with no shipping and $0 sign up fee and renewal price (the subscription is always $0).

This PR implements that.

@pierorocca
Copy link
Contributor

Let's also please check the button shows up when it should as well as part of the testing.

I'm also pausing for a moment...what if the shopper wants even free order receipts to be centralized with WooPay? Taking away the button and DC in these scenarios removes that possibility.

OK if we did always keep WooPay visible, can we properly transact $0 orders and hide the appropriate sections?

@pierorocca
Copy link
Contributor

I'm remembering now I'm the one who made this argument before and felt there's value for WooPay to be a single place for order history.

@pierorocca
Copy link
Contributor

Hey guys, let's pause on this change. There is value in keeping WooPay visible even for $0 purchases, regardless of the scenario so that WooPay can be a central store of order history.

That being said in addition to the bugs in https://github.com/Automattic/woopay/issues/2224 and #9777, there's missing border when there's no billing and shipping sections.

image

And variable subscriptions with a free trial does not show the correct information if clicking the WooPay button from the product page.

image

4uzZ5w.mp4

Happy to close this out and address these in separate issues.

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.

WooPay button appears on zero total orders
4 participants