Automattic / woocommerce-payments

Accept payments via credit card. Manage transactions within WordPress.
https://wordpress.org/plugins/woocommerce-payments/
Other
175 stars 69 forks source link

[GlobalStep] "Cannot read properties of undefined (reading 'id')" notice displayed after clicking "Place Order" with missing credit card fields on "Checkout" page. #6258

Closed gglobalstep closed 10 months ago

gglobalstep commented 1 year ago

Bug Description:

"Cannot read properties of undefined (reading 'id')" notice displayed after clicking "Place Order" with missing credit card fields on "Checkout" page.

Environment:

Woocommerce Version: WooCommerce 7.6.1 WooCommerce Payments - 5.9.0-test-2 WordPress version: v6.2

PC: Windows 10, Chrome(Version 113.0.5672.93) Firefox (Version 112.0.2)

Steps To Reproduce:

  1. Create any test site.
  2. Install and activate all the required plugins.
  3. Enable Split UPE with deferred intent creation using the WCPay Dev Tools.
  4. Add regular product to cart and go to checkout as a guest.
  5. Confirm that credit card payment method and fields are displayed.
  6. Fill out all the Billing details.
  7. Clicking "Place order" button with missing credit card fields.
  8. Observe that, "Cannot read properties of undefined (reading 'id')" notice is displayed.

Instruction Link:

https://github.com/Automattic/woocommerce-payments/wiki/Testing-instructions-for-critical-flows#new-upe-regular-checkout

Actual Result:

"Cannot read properties of undefined (reading 'id')" notice displayed after clicking "Place Order" with missing credit card fields on "Checkout" page.

Expected Result:

Appropriate notice should be displayed after clicking "Place Order" with missing credit card fields on "Checkout" page.

Screenshot:

#6258

Isolating the problem (mark completed items with an [x]):

` ### WordPress Environment ### WC Version: 7.6.1 REST API Version: ✔ 7.6.1 WC Blocks Version: ✔ 9.8.5 Action Scheduler Version: ✔ 3.5.4 Log Directory Writable: ✔ WP Version: 6.2 WP Multisite: – WP Memory Limit: 256 MB WP Debug Mode: ✔ WP Cron: ✔ Language: en_US External object cache: – ### Server Environment ### Server Info: Apache/2.4.57 (Unix) OpenSSL/1.0.2g PHP Version: 7.4.33 PHP Post Max Size: 1 GB PHP Time Limit: 30 PHP Max Input Vars: 5000 cURL Version: 7.47.0 OpenSSL/1.0.2g SUHOSIN Installed: – MySQL Version: 5.7.33-0ubuntu0.16.04.1-log Max Upload Size: 512 MB Default Timezone is UTC: ✔ fsockopen/cURL: ✔ SoapClient: ✔ DOMDocument: ✔ GZip: ✔ Multibyte String: ✔ Remote Post: ✔ Remote Get: ✔ ### Database ### WC Database Version: 7.6.1 WC Database Prefix: wp_ Total Database Size: 7.78MB Database Data Size: 5.53MB Database Index Size: 2.25MB wp_woocommerce_sessions: Data: 0.05MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_api_keys: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_attribute_taxonomies: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_downloadable_product_permissions: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_order_items: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_order_itemmeta: Data: 0.11MB + Index: 0.14MB + Engine InnoDB wp_woocommerce_tax_rates: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_tax_rate_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zones: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_shipping_zone_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zone_methods: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_payment_tokens: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_payment_tokenmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_log: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_actions: Data: 0.17MB + Index: 0.20MB + Engine InnoDB wp_actionscheduler_claims: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_groups: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_logs: Data: 0.14MB + Index: 0.13MB + Engine InnoDB wp_commentmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_comments: Data: 0.14MB + Index: 0.09MB + Engine InnoDB wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_options: Data: 3.48MB + Index: 0.09MB + Engine InnoDB wp_postmeta: Data: 0.44MB + Index: 0.45MB + Engine InnoDB wp_posts: Data: 0.11MB + Index: 0.06MB + Engine InnoDB wp_snippets: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_termmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_terms: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_term_relationships: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_term_taxonomy: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_usermeta: Data: 0.06MB + Index: 0.03MB + Engine InnoDB wp_users: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_admin_notes: Data: 0.06MB + Index: 0.00MB + Engine InnoDB wp_wc_admin_note_actions: Data: 0.05MB + Index: 0.02MB + Engine InnoDB wp_wc_category_lookup: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_customer_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_download_log: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_product_lookup: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_wc_order_stats: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_order_tax_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_product_attributes_lookup: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_download_directories: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_meta_lookup: Data: 0.02MB + Index: 0.09MB + Engine InnoDB wp_wc_rate_limits: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_reserved_stock: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_tax_rate_classes: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_webhooks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB ### Post Type Counts ### attachment: 26 page: 9 post: 2 product: 25 product_variation: 7 revision: 2 shop_coupon: 1 shop_order: 60 shop_order_refund: 8 shop_subscription: 21 ### Security ### Secure connection (HTTPS): ✔ Hide errors from visitors: ✔ ### Active Plugins (6) ### Query Monitor: by John Blackbourn – 3.12.2 Code Snippets: by Code Snippets Pro – 3.3.0 Companion Plugin: by Osk – 1.29 WooCommerce Payments Dev Tools: by Automattic – WooCommerce Payments: by Automattic – 5.9.0-test-2 WooCommerce: by Automattic – 7.6.1 ### Inactive Plugins (3) ### Akismet Anti-Spam: by Automattic – 5.1 Hello Dolly: by Matt Mullenweg – 1.7.2 WooCommerce Subscriptions: by WooCommerce – 5.1.1 ### Dropin Plugins (1) ### db.php: Query Monitor Database Class (Drop-in) ### Settings ### API Enabled: – Force SSL: – Currency: USD ($) Currency Position: left Thousand Separator: , Decimal Separator: . Number of Decimals: 2 Taxonomies: Product Types: external (external) grouped (grouped) simple (simple) subscription (subscription) variable (variable) variable subscription (variable-subscription) Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog) exclude-from-search (exclude-from-search) featured (featured) outofstock (outofstock) rated-1 (rated-1) rated-2 (rated-2) rated-3 (rated-3) rated-4 (rated-4) rated-5 (rated-5) Connected to WooCommerce.com: – Enforce Approved Product Download Directories: ✔ Order datastore: WC_Order_Data_Store_CPT ### WC Pages ### Shop base: #5 - /shop/ Cart: #6 - /cart/ Checkout: #7 - /checkout/ My account: #8 - /my-account/ Terms and conditions: ❌ Page not set ### Theme ### Name: Storefront Version: 4.2.0 Author URL: https://woocommerce.com/ Child Theme: ❌ – If you are modifying WooCommerce on a parent theme that you did not build personally we recommend using a child theme. See: How to create a child theme WooCommerce Support: ✔ ### Templates ### Overrides: – ### Subscriptions ### WCS_DEBUG: ✔ No Subscriptions Mode: ✔ Live Subscriptions Live URL: https://gothic-sole.jurassic.ninja Subscriptions-core Library Version: 5.6.0 Subscription Statuses: wc-cancelled: 1 wc-active: 20 WooCommerce Account Connected: ❌ No ### Store Setup ### Country / State: United States (US) — California ### Subscriptions by Payment Gateway ### WooCommerce Payments: wc-active: 20 wc-cancelled: 1 ### Payment Gateway Support ### WooCommerce Payments: products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method WooCommerce Payments (iDEAL): products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method ### Admin ### Enabled Features: activity-panels analytics coupons customer-effort-score-tracks import-products-task experimental-fashion-sample-products shipping-smart-defaults shipping-setting-tour homescreen marketing multichannel-marketing mobile-app-banner navigation onboarding onboarding-tasks remote-inbox-notifications remote-free-extensions payment-gateway-suggestions shipping-label-banner subscriptions store-alerts transient-notices woo-mobile-welcome wc-pay-promotion wc-pay-welcome-page Disabled Features: block-editor-feature-enabled minified-js new-product-management-experience product-variation-management settings Daily Cron: ✔ Next scheduled: 2023-05-10 07:50:55 +00:00 Options: ✔ Notes: 68 Onboarding: completed ### WooCommerce Payments ### Version: 5.9.0-test-2 Connected to WPCOM: Yes Blog ID: 218807165 Account ID: acct_1N5lZBFp4t91j5JN ### Action Scheduler ### Canceled: 11 Oldest: 2023-05-09 11:12:36 +0000 Newest: 2023-05-09 13:29:12 +0000 Complete: 432 Oldest: 2023-05-09 07:51:06 +0000 Newest: 2023-05-09 12:33:34 +0000 Failed: 13 Oldest: 2023-05-09 08:14:32 +0000 Newest: 2023-05-09 13:37:00 +0000 Pending: 22 Oldest: 2023-05-10 07:51:06 +0000 Newest: 2023-07-09 12:35:06 +0000 ### Status report information ### Generated at: 2023-05-09 15:54:53 +00:00 `
shendy-a8c commented 1 year ago

Using git bisect, I found that https://github.com/Automattic/woocommerce-payments/pull/5869 caused the problem.

shendy-a8c commented 1 year ago

+cc @timur27 @FangedParakeet

FangedParakeet commented 1 year ago

Cheers for the ping, @shendy-a8c! This has been identified and will be resolved in #6230. 👍

Brianmitchtay commented 1 year ago

I have a user seeing this error when putting WCPay in test mode. Even with all CC fields filled. 6816351-zen

Looks likely to be a conflict, in staging & WCPay in safe mode, the error is seen in live mode, but not testing mode.

sverleis commented 1 year ago

Isolated incident, with this happening again in version 6.6.0. Downgrading to 6.5.1 resolves the issue. Internal: 7168377

timur27 commented 1 year ago

Hey @sverleis, thanks for the report! I followed the steps from the description on my JN site (https://naughty-cottonmouth.jurassic.ninja) but wasn't able to reproduce it, as I'm getting the expected error message.

image

Do you happen to know if any steps to reproduce have been changed or if I'm missing some steps in the instructions? Thanks!

francoishvz commented 1 year ago

7214824-zd-a8c

I am able to trigger this error using a 4242 test card on a site with live payments enabled. Using a live card does not give the same issue.

timur27 commented 1 year ago

Hey @francoishvz and everyone.

We currently have this draft PR to handle errors, and I think this will be part of 6.8.0.

pierorocca commented 10 months ago

@timur27 did this make it into 6.8.0?

timur27 commented 10 months ago

@pierorocca, thanks for the ping and apologies this issue wasn't updated on time (we had another PR created for this and multiple connections between different small issues on checkout error messaging improves so this got missed unfortunately).

did this make it into 6.8.0?

Yes, closing.