Skip to content

Comments

[PoC] Show currency selector after payment methods#4982

Draft
daledupreez wants to merge 42 commits intoadd/checkout-sessions-pocfrom
try/shift-adaptive-pricing-currency-selector
Draft

[PoC] Show currency selector after payment methods#4982
daledupreez wants to merge 42 commits intoadd/checkout-sessions-pocfrom
try/shift-adaptive-pricing-currency-selector

Conversation

@daledupreez
Copy link
Contributor

Related to #4879

Changes proposed in this Pull Request:

This PR explores showing the currency selector for adaptive pricing after the payment method listing, rather than within the payment method section of checkout. A UX challenge that we've noticed is that when Stripe is not the first payment method, showing the currency selector above the payment methods results in us mixing interactions: shoppers are picking a payment method from a list, but we're showing a currency selector in the middle of that list.

The key aspects of this exploration are as follows:

  • When we're rendering the Stripe payment details, we are using an effect to do the following:
    • Create some DOM elements immediately after the payment methods section -- this will need some other approach later to make sure we have the elements available on page load
    • Use ReactDOM.createPortal() (docs) to render the currency selector as a child of a separate DOM element
    • Render a hidden sibling fallback element that gets displayed when the currency selector is removed/unmounted -- this provides guidance as to what happened to the element. We'd definitely want this to display on page load.

Video

stripe_currency_selector_after_payment_methods.mov

One thing I realised is that our current admin UX makes it hard to enable additional payment methods that don't support the current store currency. However, that can restrict the available payment methods when a shopper picks another currency, as we may have made it hard to enable those payment methods.

Testing instructions


  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Changelog entry

  • This Pull Request does not require a changelog entry. (Comment required below)
Changelog Entry Comment

Comment

Post merge

diegocurbelo and others added 30 commits December 10, 2025 10:28
* update logger methods

* add changelog

* fix phpstan

* update changelog statement

* move details from inline to context

* update baseline
* remove deprecated apple pay class

* add changelog

* remove require

* update baseline
* create WC_Subscription stub for phpstan

* fix valid phpstan issues

* update baseline

* add changelog
* Removing the main PRB class

* Revert unnecessary change

* Fix tests

* Removing test file

* PHPStan baseline file update

* Adding the deprecated function

* Adding the deprecated function

* Update changelog.txt

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Changelog and readme entries update

* Baseline file update

* Reverting custom label structure removal

* Removing class existence check

* Updating PHPStan baseline file

* Updating PHPStan baseline file

* Updating PHPStan baseline file

* Updating PHPStan baseline file

* Updating version in deprecation warnings

---------

Co-authored-by: daledupreez <dale.du.preez@automattic.com>
* Removing the main legacy checkout backend class

* Removing unused methods

* Emptying class and temporarily extending the UPE class for backwards compatibility

* Update reference in JS file

* Fix tests

* Updating PHPStan baseline file

* Update includes/abstracts/abstract-wc-stripe-payment-gateway-voucher.php

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Update changelog.txt

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Readme entry update

* Revert class loading removal

* Changing the target version

* Baseline file update

* Fix tests

---------

Co-authored-by: daledupreez <dale.du.preez@automattic.com>
* Trim whitespace from customer name in metadata

* Trim whitespace from customer name in metadata

Trimmed whitespace from the customer name metadata.

* Changelog and readme entries

* Update changelog.txt

Co-authored-by: daledupreez <daledupreez@gmail.com>

* Update changelog entry for customer_name field

---------

Co-authored-by: Wesley Rosa <wesleyjrosa@gmail.com>
Co-authored-by: daledupreez <daledupreez@gmail.com>
…uest (#4932)

* check if product exists before moving forward with add to cart logic in ajax

* update phpstan baseline

* add changelog
* fix amount in check ece availability function

* add changelog

* update changelog

* cast amount to number
* Fix incorrect file name

* Add changelog entry
* Fix incorrect file name

* Add changelog entry
* add order check to prevent fatal error

* add changelog
…ken (#4936)

* add safety check for null token

* update baseline

* add changelog
* add order validation in multibanco email_instructions method

* add changelog

* update baseline
* use WC_STRIPE_PLUGIN_PATH constant instead of __DIR__

* add changelog
* Add unit tests to cover address normalization

* Add changelog entries

* Remove group annotation

* Add type annotations

Co-authored-by: Wesley Rosa <wesleyjrosa@gmail.com>

---------

Co-authored-by: Wesley Rosa <wesleyjrosa@gmail.com>
* Try run all e2e tests on all PRs
* Run test command directly to avoid default project being run as well
* Add test:e2e-run command to avoid default project
* A workflow to create the release notes PR using Claude Code

* Fix syntax

* Add changelog entry

* Remove unused input parameter
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.22 to 9.6.33.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.33/ChangeLog-9.6.md)
- [Commits](sebastianbergmann/phpunit@9.6.22...9.6.33)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-version: 9.6.33
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Hack - Redirect to Stripe settings upon activation

* Changelog and readme entries

* Fix PHPStan issue

* Fix PHPStan issue

* Improve method description

* Unit test

* Fix tests

* Update includes/class-wc-stripe.php

Co-authored-by: Mayisha <33387139+Mayisha@users.noreply.github.com>

* Changing the priority of the redirect callback

* Fix redirect

* Fix tests

* Update includes/class-wc-stripe.php

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Update woocommerce-gateway-stripe.php

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Renaming the registered hook parameter

* Removing custom exception class

* Update readme.txt

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

* Changelog entry update

* Update tests/phpunit/WC_Stripe_Test.php

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

---------

Co-authored-by: Mayisha <33387139+Mayisha@users.noreply.github.com>
Co-authored-by: daledupreez <dale.du.preez@automattic.com>
malithsen and others added 12 commits January 29, 2026 15:45
* Add context files for AI agents

* Fix the header

* Add a section for caching

* Mention phpunit convention
* Add a check to verify remote_oid exists locally

* Add changelog entries

* consolidate if blocks

Co-authored-by: daledupreez <dale.du.preez@automattic.com>

---------

Co-authored-by: daledupreez <dale.du.preez@automattic.com>
Bumps [symfony/process](https://github.com/symfony/process) from 5.4.47 to 5.4.51.
- [Release notes](https://github.com/symfony/process/releases)
- [Changelog](https://github.com/symfony/process/blob/8.1/CHANGELOG.md)
- [Commits](symfony/process@v5.4.47...v5.4.51)

---
updated-dependencies:
- dependency-name: symfony/process
  dependency-version: 5.4.51
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* add feature flag to control checkout sessions availability

* update comment

* check settings

* add tests

* update version

* add changelog entry

* update hook name

* remove unused import

* add note instead of using deprecated tag

* move filter removal with cleanup

* reverse check
* add nb_NO in locale map

* add changelog

* update changelog statement
…on fails (#4935)

* update return type of create_token_from_setup_intent method

* update the callers of create_token_from_setup_intent to consider the null value

* update baseline

* add changelog

* update changelog statement

* update error message when payment method change fails for subs due to token error

* simplify error message

* add notice in catch block
Bumps [locutus](https://github.com/locutusjs/locutus) and [@woocommerce/number](https://github.com/woocommerce/woocommerce). These dependencies needed to be updated together.

Updates `locutus` from 2.0.15 to 2.0.39
- [Release notes](https://github.com/locutusjs/locutus/releases)
- [Changelog](https://github.com/locutusjs/locutus/blob/main/CHANGELOG.md)
- [Commits](locutusjs/locutus@v2.0.15...v2.0.39)

Updates `@woocommerce/number` from 2.2.0 to 2.4.0
- [Release notes](https://github.com/woocommerce/woocommerce/releases)
- [Commits](woocommerce/woocommerce@2.2.0...2.4.0)

---
updated-dependencies:
- dependency-name: locutus
  dependency-version: 2.0.39
  dependency-type: indirect
- dependency-name: "@woocommerce/number"
  dependency-version: 2.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Improve PHPDoc for payment token classes
* Use object instead of stdClass for token helpers
* Changelog
* Improve dob wording
* Update PHPDoc in email notification classes
* Changelog
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.

6 participants