Skip to content

fix: amazon pay test address in test mode#11608

Merged
frosso merged 2 commits intodevelopfrom
fix/amazon-pay-eu-account-test-mode
Apr 20, 2026
Merged

fix: amazon pay test address in test mode#11608
frosso merged 2 commits intodevelopfrom
fix/amazon-pay-eu-account-test-mode

Conversation

@frosso
Copy link
Copy Markdown
Contributor

@frosso frosso commented Apr 17, 2026

Fixes WOOPMNT-6113

Changes proposed in this Pull Request

Amazon Pay on EU Stripe accounts in test mode sometimes returns a billing address where line1 is empty and the street sits in line2:

{
    "city": "Neunkirchen",
    "line1": "",
    "line2": "Meininger Strasse 58",
    "postal_code": "66538",
    "state": "",
    "country": "DE"
}

WooCommerce Core fails validation:
Screenshot 2026-04-17 at 6 12 50 PM

Adding a transform_ece_address_lines_data() in the ECE ajax handler, same pattern as the existing HK state / postcode massaging. It shifts address_2 into address_1 when address_1 is empty (or whitespace-only).
The fix primarily targets Amazon Pay, but any express checkout path that hits the tokenized cart endpoint benefits.

Testing instructions

  1. Connect the store to an EU Stripe account (e.g. IT).
  2. Enable Amazon Pay in Payments > Settings.
  3. Place an order (from the product page or cart/checkout) with Amazon Pay, using the 1111 Visa
  4. The order should be successful

  • 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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 17, 2026

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 11608 or branch name fix/amazon-pay-eu-account-test-mode 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: 3cc06f7
  • Build time: 2026-04-20 09:17:03 UTC

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

@frosso frosso requested a review from Copilot April 17, 2026 16:15
@frosso frosso self-assigned this Apr 17, 2026
@frosso frosso marked this pull request as ready for review April 17, 2026 16:16
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 17, 2026

Size Change: 0 B

Total Size: 959 kB

ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.46 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.46 kB
release/woocommerce-payments/assets/css/success.css 1.06 kB
release/woocommerce-payments/assets/css/success.rtl.css 1.06 kB
release/woocommerce-payments/dist/blocks-checkout-rtl.css 3.25 kB
release/woocommerce-payments/dist/blocks-checkout.css 3.25 kB
release/woocommerce-payments/dist/blocks-checkout.js 55.8 kB
release/woocommerce-payments/dist/cart-block-rtl.css 113 B
release/woocommerce-payments/dist/cart-block.css 112 B
release/woocommerce-payments/dist/cart-block.js 17.4 kB
release/woocommerce-payments/dist/cart.js 5.08 kB
release/woocommerce-payments/dist/checkout-rtl.css 1.01 kB
release/woocommerce-payments/dist/checkout.css 1.01 kB
release/woocommerce-payments/dist/checkout.js 34.7 kB
release/woocommerce-payments/dist/chunks/express-checkout-previews.js 3.44 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 377 B
release/woocommerce-payments/dist/express-checkout.css 377 B
release/woocommerce-payments/dist/express-checkout.js 18.8 kB
release/woocommerce-payments/dist/frontend-tracks.js 839 B
release/woocommerce-payments/dist/index-rtl.css 21.5 kB
release/woocommerce-payments/dist/index.css 21.5 kB
release/woocommerce-payments/dist/index.js 152 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.06 kB
release/woocommerce-payments/dist/multi-currency-async-renderer-rtl.css 344 B
release/woocommerce-payments/dist/multi-currency-async-renderer.css 344 B
release/woocommerce-payments/dist/multi-currency-async-renderer.js 8.1 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.82 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 19.1 kB
release/woocommerce-payments/dist/multi-currency.css 3.83 kB
release/woocommerce-payments/dist/multi-currency.js 25.3 kB
release/woocommerce-payments/dist/order-rtl.css 740 B
release/woocommerce-payments/dist/order.css 740 B
release/woocommerce-payments/dist/order.js 21.6 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 484 B
release/woocommerce-payments/dist/plugins-page.css 484 B
release/woocommerce-payments/dist/plugins-page.js 2.63 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.8 kB
release/woocommerce-payments/dist/settings-rtl.css 13.1 kB
release/woocommerce-payments/dist/settings.css 13 kB
release/woocommerce-payments/dist/settings.js 153 kB
release/woocommerce-payments/dist/subscription-edit-page.js 1.95 kB
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 1.93 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 729 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 1.86 kB
release/woocommerce-payments/dist/success.js 6.03 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 3.13 kB
release/woocommerce-payments/dist/wc-payments-review-prompt-rtl.css 1.68 kB
release/woocommerce-payments/dist/wc-payments-review-prompt.css 1.68 kB
release/woocommerce-payments/dist/wc-payments-review-prompt.js 14.4 kB
release/woocommerce-payments/dist/wc-payments-settings-spotlight-rtl.css 1.68 kB
release/woocommerce-payments/dist/wc-payments-settings-spotlight.css 1.68 kB
release/woocommerce-payments/dist/wc-payments-settings-spotlight.js 27.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 5.54 kB
release/woocommerce-payments/dist/woopay-express-button.js 21.9 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.27 kB
release/woocommerce-payments/dist/woopay.css 4.25 kB
release/woocommerce-payments/dist/woopay.js 70.6 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 880 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.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.3 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.css 10.1 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.js 31.5 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css 10.1 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 331 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 415 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-users-connection.js 159 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 520 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 585 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 218 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 719 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 625 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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes a checkout validation failure in Express Checkout flows (notably Amazon Pay on EU Stripe accounts in test mode) where providers can send an empty first address line and place the street in the second line, causing WooCommerce Store API to reject the address.

Changes:

  • Add address-line normalization to shift address_2 into address_1 when address_1 is empty/whitespace.
  • Apply the normalization to both shipping and billing addresses in the tokenized-cart Store API interception logic.
  • Add unit tests covering shifting behavior and no-op behavior when address_1 is already populated.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
includes/express-checkout/class-wc-payments-express-checkout-ajax-handler.php Adds transform_ece_address_lines_data() and applies it during tokenized cart address normalization.
tests/unit/express-checkout/test-class-wc-payments-express-checkout-ajax-handler.php Adds unit tests for the new address-line normalization behavior.
changelog/fix-amazon-pay-eu-account-test-mode Adds a patch-level changelog entry describing the fix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@frosso frosso requested review from a team and mgascam and removed request for a team April 17, 2026 16:19
Copy link
Copy Markdown
Contributor

@mgascam mgascam left a comment

Choose a reason for hiding this comment

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

LGTM!

I verified on an EU Stripe test account in test mode. Signed in with an Amazon Pay sandbox buyer and placed an order against the exact payload from the PR description (line1: "", line2: "Meininger Strasse 58", city: Neunkirchen, DE). Order placed successfully and the billing address landed with address_1 correctly populated; no "Street address is a required field" error.

@frosso frosso added this pull request to the merge queue Apr 20, 2026
Merged via the queue into develop with commit 888294c Apr 20, 2026
43 of 44 checks passed
@frosso frosso deleted the fix/amazon-pay-eu-account-test-mode branch April 20, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants