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

chore: cleanup of PRB implementation in favor of ECE #9698

Merged
merged 16 commits into from
Nov 14, 2024
Merged

Conversation

frosso
Copy link
Contributor

@frosso frosso commented Nov 11, 2024

Fixes #8950
Fixes #8529

Changes proposed in this Pull Request

Cleaning up the PRB implementation in favor of the ECE implementation.
Maintaining the tokenized payment request implementation behind a feature flag for future reference.
Within this PR:

  • I renamed the methods within client/checkout/api/index.js with the paymentRequest* prefix to have the expressCheckoutECE prefix instead
  • I removed the methods within client/checkout/api/index.js with the paymentRequest prefix that were no longer used
  • I renamed the ECE custom endpoints used to have an ece_* prefix
  • Removed references to isExpressCheckoutElementEnabled, isStripeEceEnabled, PaymentRequestButtonElement, WC_Payments_Features::is_stripe_ece_enabled(), _wcpay_feature_stripe_ece
  • I cleaned up the AJAX handlers that are not used by the tokenized cart from includes/class-wc-payments-payment-request-button-handler.php, but kept some of its logic for the tokenized carts. Keep in mind that some of those handlers are already duplicated in includes/express-checkout/class-wc-payments-express-checkout-ajax-handler.php

Testing instructions

  • The ECE element should still be present and functional on the product page
  • The ECE element should still be present and functional on the cart/checkout pages
  • The ECE element should still be present and functional on the pay-for-order pages (without asking for a shipping address)
  • The "order success" page still shows "Google Pay (WooPayments)"
  • No functionality changes between develop and this branch

  • 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 Nov 11, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 9698 or branch name poc/prbs-cleanup 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: 37f735a
  • Build time: 2024-11-14 08:25:02 UTC

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

Copy link
Contributor

github-actions bot commented Nov 11, 2024

Size Change: -16.8 kB (-1%)

Total Size: 1.34 MB

Filename Size Change
release/woocommerce-payments/dist/blocks-checkout.js 56.6 kB -1.48 kB (-3%)
release/woocommerce-payments/dist/cart-block.js 16.8 kB -78 B (0%)
release/woocommerce-payments/dist/cart.js 5.73 kB -4 B (0%)
release/woocommerce-payments/dist/checkout.js 32.9 kB -85 B (0%)
release/woocommerce-payments/dist/express-checkout.js 14.8 kB -66 B (0%)
release/woocommerce-payments/dist/frontend-tracks.js 854 B -4 B (0%)
release/woocommerce-payments/dist/index.js 302 kB -6 B (0%)
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.6 kB -2 B (0%)
release/woocommerce-payments/dist/multi-currency.js 57.3 kB -6 B (0%)
release/woocommerce-payments/dist/order.js 42 kB -5 B (0%)
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB -3 B (0%)
release/woocommerce-payments/dist/payment-request-rtl.css 0 B -230 B (removed) 🏆
release/woocommerce-payments/dist/payment-request.css 0 B -230 B (removed) 🏆
release/woocommerce-payments/dist/payment-request.js 0 B -14.2 kB (removed) 🏆
release/woocommerce-payments/dist/product-details.js 12.1 kB -77 B (-1%)
release/woocommerce-payments/dist/settings.js 224 kB -214 B (0%)
release/woocommerce-payments/dist/tokenized-payment-request.js 14.9 kB -67 B (0%)
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB -4 B (0%)
release/woocommerce-payments/dist/woopay-express-button.js 24.5 kB -67 B (0%)
release/woocommerce-payments/dist/woopay.js 71.6 kB -6 B (0%)
ℹ️ 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 172 B
release/woocommerce-payments/assets/css/success.rtl.css 173 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.66 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.66 kB
release/woocommerce-payments/dist/checkout-rtl.css 1.23 kB
release/woocommerce-payments/dist/checkout.css 1.23 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 230 B
release/woocommerce-payments/dist/express-checkout.css 230 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.css 4.46 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
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/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/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 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-payment-request-rtl.css 230 B
release/woocommerce-payments/dist/tokenized-payment-request.css 230 B
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-rtl.css 4.52 kB
release/woocommerce-payments/dist/woopay.css 4.49 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

@@ -207,9 +205,9 @@ export default class WCPayAPI {
result.error.setup_intent.id );

// In case this is being called via payment request button from a product page,
Copy link
Contributor

Choose a reason for hiding this comment

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

In case this is being called via payment request button from a product page

If this line is meant for cases where the Payment Request Button is called from a product page, it might no longer be relevant since you’re removing the PRB implementation, right?

Additionally, to align with the comment, shouldn’t the code try to use getConfig first, like this?

const ajaxUrl = getConfig( 'ajaxUrl' ) ?? getExpressCheckoutConfig( 'ajax_url' );

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Those are good questions, and I honestly don't know the answers to them :D
I couldn't find anything in the PRB implementation that would trigger these functions, so I'm not sure when or the reasons why this was introduced.
The comment says:

the getConfig function won't work

So it would make sense to have getPaymentRequestData be called first.

It could be that the implementation over the years changed so much that this would have no longer been relevant anymore in either case.
When a payment is being attempted, the backend could return a redirect_url with a #wcpay-confirm-....hash prefix, used to confirm the PI. In turn, the JS will call this function. The backend has the ability to return such URL for PRBs, ECE, and any other payment method. So I'd be wary of removing it or changing it, since theconfirmIntent()` function could be called from the ECE as well.

@frosso frosso changed the title POC: PRBs cleanup chore: cleanup of PRB implementation in favor of ECE Nov 12, 2024
@frosso frosso marked this pull request as ready for review November 12, 2024 13:42
@frosso frosso requested review from a team and timur27 and removed request for a team November 12, 2024 13:42
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.

@frosso I reviewed the code which looks good, I left a few questions and one suggestion to remove the ajax method if it's not used anymore.

No more code comments from me at the moment, I will start testing.
PS I also see that tests started to fail after the most recent commit.

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.

I went through the testing steps outlined in the description as well as tested the subscriptions, incl. lack of ECE for free trial physical subscription as per instructions here. Things work well.

The comments I've left are non-blocking so I'm approving the PR while you're responding to them and fixing the failing e2e tests.

@frosso
Copy link
Contributor Author

frosso commented Nov 13, 2024

@timur27 I see similar failures from that suite also on other PRs. I asked for assistance here: p1731518139549869-slack-CGGCLBN58

I'll hold off until we get clarity, but it looks like the failures are not related to these changes.

@frosso frosso added this pull request to the merge queue Nov 14, 2024
Merged via the queue into develop with commit dc35740 Nov 14, 2024
24 of 25 checks passed
@frosso frosso deleted the poc/prbs-cleanup branch November 14, 2024 08:34
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.

Remove ECE feature flag and clean-up PRB code Cleanup of pre-tokenized cart PRB implementation codebase
4 participants