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

Remove URL params from woopay_source_url #7924

Merged
merged 9 commits into from
Jan 2, 2024

Conversation

malithsen
Copy link
Member

@malithsen malithsen commented Dec 15, 2023

Changes proposed in this Pull Request

woopay_source_url that is used to track WooPay marketing consents, currently store the complete URL. This can break checkout when a store appends URL params and the URL is very long.

This PR removes the URL parameters in the URL to reduce its length.

Testing instructions

To replicate URLs with params

  1. Add a product to the cart and go to the checkout page
  2. Edit the URL to include query params eg:
    http://wcpay.test/checkout/?param1=value&param2=value2
  3. Check the Save My Info checkbox in WooPay
  4. Complete the checkout
  5. Go to your Stripe Connect account and notice the complete URL in the payment metafields

To replicate checkout error with long URLs.

  1. In step 2 of the above, we need to exceed the URL length by over 500 characters. Add the following random query params to the URL:
?Fxxr6=JlFi1d9E&if2gR=BzPmFtrW&UAv4r=t2YirOYA&xlaDF=eFHedAd2&KIv5u=C5gar5ba&UrxJw=eYG3ngmC&iz1GS=5xxXfFYy&PPOML=2rPa1EIU&1oubG=Vc7T4QmX&Tzd69=h09pQoSY&2gnFa=gjj1U7d6&Ebkh8=lsoMolRO&Yctbt=Q0WPGbTg&zONK0=i7rBBFGU&zgxVf=ijvKZKgX&cd6Kf=XI25RWDC&l1TAG=fzGy1OAm&UML2n=rXWxRIBz&cYLen=QgrnnAC6&42uIT=SYatxDz0&jF62x=N4eFyt6p&pXFom=O65ytGND&Yk4um=n6VbHavk&kS4pW=m3ERrF1u&R67Wf=MyJcEBGC&GOpNB=4BY96NuH&Lz8y0=l5qKaxcR&bJEol=rxkZSNsW&LJu9i=W5dYCleA&4LQIx=2kuoUqap&jndNn=E8Gh6l7n&1st36=ugrtcPWd&T7mXA=XsOnkCMi&DynVm=3DEwpsXi
  1. Continue from Step 3.
  2. Notice that the order cannot be placed.

Test the fix

  1. Repeat the above steps
  2. Notice that the order can be placed and the query params are now removed from the URL stored in the platform_checkout_source_url metafield.

  • 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

@malithsen malithsen requested a review from alefesouza December 15, 2023 16:18
@malithsen malithsen marked this pull request as ready for review December 15, 2023 16:18
@botwoo
Copy link
Collaborator

botwoo commented Dec 15, 2023

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 7924 or branch name fix/trim-woopay-source-url 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: d155a51
  • Build time: 2024-01-02 15:22:02 UTC

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

Copy link
Contributor

github-actions bot commented Dec 15, 2023

Size Change: +170 B (0%)

Total Size: 1.27 MB

Filename Size Change
release/woocommerce-payments/dist/blocks-checkout.js 85.3 kB +46 B (0%)
release/woocommerce-payments/dist/checkout.js 37 kB +44 B (0%)
release/woocommerce-payments/dist/woopay.js 71.9 kB +80 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.06 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.8 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.8 kB
release/woocommerce-payments/dist/checkout-rtl.css 318 B
release/woocommerce-payments/dist/checkout.css 319 B
release/woocommerce-payments/dist/index-rtl.css 37.8 kB
release/woocommerce-payments/dist/index.css 37.9 kB
release/woocommerce-payments/dist/index.js 289 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.4 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.7 kB
release/woocommerce-payments/dist/multi-currency.css 3.4 kB
release/woocommerce-payments/dist/multi-currency.js 55.9 kB
release/woocommerce-payments/dist/order-rtl.css 676 B
release/woocommerce-payments/dist/order.css 679 B
release/woocommerce-payments/dist/order.js 42.3 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.31 kB
release/woocommerce-payments/dist/payment-gateways.css 1.31 kB
release/woocommerce-payments/dist/payment-gateways.js 39.5 kB
release/woocommerce-payments/dist/payment-request-rtl.css 153 B
release/woocommerce-payments/dist/payment-request.css 153 B
release/woocommerce-payments/dist/payment-request.js 13.4 kB
release/woocommerce-payments/dist/product-details.js 919 B
release/woocommerce-payments/dist/settings-rtl.css 10.4 kB
release/woocommerce-payments/dist/settings.css 10.4 kB
release/woocommerce-payments/dist/settings.js 234 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 710 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.5 kB
release/woocommerce-payments/dist/tos-rtl.css 230 B
release/woocommerce-payments/dist/tos.css 231 B
release/woocommerce-payments/dist/tos.js 22 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 153 B
release/woocommerce-payments/dist/woopay-express-button.css 153 B
release/woocommerce-payments/dist/woopay-express-button.js 52.4 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.18 kB
release/woocommerce-payments/dist/woopay.css 4.19 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.32 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.8 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.32 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

alefesouza

This comment was marked as duplicate.

Copy link
Member

@alefesouza alefesouza left a comment

Choose a reason for hiding this comment

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

Thanks for working on this @malithsen!

Just a few comments about plain permalinks, also this URL we send on the iframe shouldn't be updated too?

@@ -73,7 +73,9 @@ const CheckoutPageSaveUser = ( { isBlocksCheckout } ) => {
? {}
: {
save_user_in_woopay: isSaveDetailsChecked,
woopay_source_url: window.location.href,
woopay_source_url: window.location.href.split(
Copy link
Member

Choose a reason for hiding this comment

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

This would not work with plain permalinks, maybe we can change it to wcSettings.storePages.checkout.permalink.

Copy link
Member Author

Choose a reason for hiding this comment

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

Great catch! Updated in abbd2a4

I wasn't sure if storePages would be available on all sites. Then realized that it's set in Blocks. Since Blocks is packaged with WooPayments we should be good.

@@ -291,7 +293,7 @@ const CheckoutPageSaveUser = ( { isBlocksCheckout } ) => {
<input
type="hidden"
name="woopay_source_url"
value={ window.location.href }
value={ window.location.href.split( '?' )[ 0 ] }
Copy link
Member

Choose a reason for hiding this comment

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

Same as above.

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated in abbd2a4

@malithsen
Copy link
Member Author

Thanks for the review @alefesouza

also this URL we send on the iframe shouldn't be updated too?

Yeah, good catch. Updated in b85428d

Copy link
Member

@alefesouza alefesouza left a comment

Choose a reason for hiding this comment

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

LGTM

@malithsen malithsen enabled auto-merge December 20, 2023 16:34
@malithsen malithsen added this pull request to the merge queue Jan 2, 2024
Merged via the queue into develop with commit 8af9441 Jan 2, 2024
28 checks passed
@malithsen malithsen deleted the fix/trim-woopay-source-url branch January 2, 2024 15:31
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.

3 participants