liquidweb / woocommerce-custom-orders-table

Store WooCommerce order data in a custom table for improved performance.
GNU General Public License v3.0
476 stars 51 forks source link

Blank order created sponanteously #178

Closed robwatson-intechra closed 3 years ago

robwatson-intechra commented 3 years ago

Describe the bug We noticed an order for one of our products was created with no billing or shipping address and no payment information connected to our payment provider. Furthermore, the order total was set to $0.00 even though the product added was $49. Nothing showed up in our record of payments at Authorize.net. It's also a problem in that the "Processing" order shows up at our fulfillment vendor and they attempt to fulfill and ship the order, which results in a fee back to us if there's a problem with the order data like this.

I first raised the issue with WooCommerce but it seems to them and to me that it's more likely an issue with WooCommerce Custom Orders Table.

To Reproduce Steps to reproduce the behavior:

Cannot reproduce the behavior on command. It happened spontaneously. I haven't seen this happen before we installed the WooCommerce Custom Orders Table plugin. It remains to be seen if it will happen again.

Expected behavior

I expected that all orders would be created through our checkout process only.

Screenshots

blank-order

Versions

Additional context None

robwatson-intechra commented 3 years ago

Two more blank orders just spontaneously were created in the last 8 and 5 hours. Please help me figure out how to troubleshoot this. Thanks.

ghost-order1 ghost-order2

lukecav commented 3 years ago

Which plugins and WordPress core version are you using on the site?

robwatson-intechra commented 3 years ago

WP Version: 5.5.3 Advanced Custom Fields PRO: by Elliot Condon – 5.9.3 Bloom: by Elegant Themes – 1.3.11 Contact Form 7: by Takayuki Miyoshi – 5.3 Woo Layout Injector: by Sean Barton - Tortoise IT – 4.7.5 – Installed version not tested with active version of WooCommerce 4.7.1 imPower Health Calculator: by imPower – 1.0 Jilt for WooCommerce: by Jilt – 1.7.9 – Installed version not tested with active version of WooCommerce 4.7.1 Mailchimp for WooCommerce: by Mailchimp – 2.4.7 – Installed version not tested with active version of WooCommerce 4.7.1 Manage Notification E-mails: by Virgial Berveling – 1.6.0 Pantheon Advanced Page Cache: by Pantheon – 1.0.0 Redirection: by John Godley – 4.9.2 ShareASale WooCommerce Tracker: by ShareASale.com Inc. – 1.4.7 – Installed version not tested with active version of WooCommerce 4.7.1 Two Factor: by Plugin Contributors – 0.7.0 USPS WooCommerce Shipping and Handling: by Xadapter – 4.0.7 – Installed version not tested with active version of WooCommerce 4.7.1 Aelia - Custom free gifts: by Aelia – 1.0.2.191213 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce AvaTax: by SkyVerge – 1.10.5 – Installed version not tested with active version of WooCommerce 4.7.1 Woocommerce Checkout Terms Conditions Popup: by WC Marketplace – 1.2.0 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Custom Orders Table: by Liquid Web – 1.0.0-rc3 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Dynamic Pricing: by Lucas Stark – 3.1.22 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Authorize.Net Gateway: by SkyVerge – 3.3.2 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Google Analytics Integration: by WooCommerce – 1.4.25 WooCommerce Shipment Tracking: by WooCommerce – 1.6.26 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Smart Coupons: by StoreApps – 4.12.2 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Tab Manager: by SkyVerge – 1.13.1 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Table Rate Shipping and Handling: by WooCommerce – 3.0.30 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce Twilio SMS Notifications: by SkyVerge – 1.15.1 – Installed version not tested with active version of WooCommerce 4.7.1 WooCommerce: by Automattic – 4.7.1 Yoast SEO: by Team Yoast – 15.3 WP Mail SMTP Plugin by Mail Bank: by Tech Banker – 4.0.12 WP Redis: by Pantheon WP Rocket: by WP Media – 3.7.5 Yotpo Social Reviews for Woocommerce: by Yotpo – 1.1.8 – Installed version not tested with active version of WooCommerce 4.7.1

lukecav commented 3 years ago

Which active theme is being used?

robwatson-intechra commented 3 years ago

Divi is the active theme. Version: 3.0.55.191219. It's set up as a child theme of the parent Divi theme.

lukecav commented 3 years ago

Are they any custom fields from ACF Pro being used on products or orders?

robwatson-intechra commented 3 years ago

Only this, which I believe was added by AvaTax. tax-acf

robwatson-intechra commented 3 years ago

A bit of new information just came to me from our customer service team that there actually is a user associated with this order, but they're outside of our shipping range. We only ship to US/US Territiories/Canada and the user is from Bangkok, Thailand. They're claiming they're entering valid order info but getting a $0.00 total and their address info is missing each time they enter their order. I wonder if there's a disconnect here between the shipping options in native WooCommerce tables and the WooCommerce Custom Order Tables.

robwatson-intechra commented 3 years ago

Actually, my mistake, they're in our shipping range. I was looking at a summarized view and drilled down to see that Thailand is in our shipping zone setup.

shipping-zone-asia

lukecav commented 3 years ago

Any idea where the APC value is coming from?

robwatson-intechra commented 3 years ago

I don't see any direct config for it in WooCommerce or its attendant plugins for shipping. APC is what the USPS uses for international shipping (https://www.apc-pli.com/). So perhaps it's coming from the Click-n-Ship rate calculator enabled by our use of the USPS WooCommerce Shipping and Handling plugin.

postal

lukecav commented 3 years ago

How many published products do you have on the site?

robwatson-intechra commented 3 years ago

Just nine products.

lukecav commented 3 years ago

What cron events are running on the site? https://developer.wordpress.org/cli/commands/cron/event/list/ wp cron event list

robwatson-intechra commented 3 years ago
+-------------------+-------------------+----------------------+---------------+
| hook              | next_run_gmt      | next_run_relative    | recurrence    |
+-------------------+-------------------+----------------------+---------------+
| action_scheduler_ | 2020-10-29 20:00: | now                  | 1 minute      |
| run_queue         | 33                |                      |               |
| wc_admin_process_ | 2020-10-29 20:00: | now                  | 1 hour        |
| orders_milestone  | 34                |                      |               |
| redirection_log_d | 2020-10-29 20:28: | now                  | 1 day         |
| elete             | 26                |                      |               |
| wp_version_check  | 2020-10-29 20:43: | now                  | 12 hours      |
|                   | 46                |                      |               |
| wp_update_plugins | 2020-10-29 20:43: | now                  | 12 hours      |
|                   | 46                |                      |               |
| wp_update_themes  | 2020-10-29 20:43: | now                  | 12 hours      |
|                   | 46                |                      |               |
| wpla_update_sched | 2020-10-29 20:49: | now                  | 1 hour        |
| ule               | 22                |                      |               |
| wp_privacy_delete | 2020-10-29 20:51: | now                  | 1 hour        |
| _old_export_files | 52                |                      |               |
| wc_admin_unsnooze | 2020-10-29 20:59: | now                  | 1 hour        |
| _admin_notes      | 42                |                      |               |
| wpla_daily_schedu | 2020-10-29 21:08: | now                  | 1 day         |
| le                | 36                |                      |               |
| wpseo-reindex-lin | 2020-10-29 21:10: | now                  | 1 day         |
| ks                | 40                |                      |               |
| wpla_fba_report_s | 2020-10-29 21:49: | now                  | 1 day         |
| chedule           | 22                |                      |               |
| et_pb_ab_cron     | 2020-10-29 22:38: | now                  | 1 day         |
|                   | 05                |                      |               |
| csv_export_hook   | 2020-10-30 00:00: | now                  | 1 day         |
|                   | 00                |                      |               |
| wc_customer_order | 2020-10-30 00:15: | now                  | 1 day         |
| _csv_export_sched | 00                |                      |               |
| uled_export_clean |                   |                      |               |
| up                |                   |                      |               |
| wc_admin_daily    | 2020-10-30 03:13: | now                  | 1 day         |
|                   | 09                |                      |               |
| wc_jilt_coupon_cl | 2020-10-30 03:24: | now                  | 12 hours      |
| eanup             | 47                |                      |               |
| wple_daily_schedu | 2020-10-30 03:35: | now                  | 1 day         |
| le                | 05                |                      |               |
| wpo_smush_clear_b | 2020-10-30 04:22: | now                  | 1 day         |
| ackup_images      | 01                |                      |               |
| delete_expired_tr | 2020-10-30 04:55: | now                  | 1 day         |
| ansients          | 14                |                      |               |
| vp_scan_site      | 2020-10-30 04:59: | now                  | 1 day         |
|                   | 09                |                      |               |
| fs_data_sync_wp-s | 2020-10-30 07:05: | now                  | 1 day         |
| mart-export       | 13                |                      |               |
| pum_daily_schedul | 2020-10-30 08:17: | now                  | 1 day         |
| ed_events         | 50                |                      |               |
| wp_scheduled_dele | 2020-10-30 08:43: | now                  | 1 day         |
| te                | 55                |                      |               |
| wp_scheduled_auto | 2020-10-30 08:46: | now                  | 1 day         |
| _draft_delete     | 37                |                      |               |
| csv_export_hook   | 2020-10-30 10:00: | now                  | 1 day         |
|                   | 00                |                      |               |
| intechra_csv_expo | 2020-10-30 10:00: | now                  | 1 day         |
| rt                | 00                |                      |               |
| pb_backupbuddy-cr | 2020-10-30 13:22: | now                  | 1 day         |
| on_scheduled_back | 00                |                      |               |
| up                |                   |                      |               |
| bvdailyping_daily | 2020-10-30 15:02: | now                  | 1 day         |
| _event            | 42                |                      |               |
| pb_backupbuddy_ho | 2020-10-30 15:17: | now                  | 1 day         |
| usekeeping        | 58                |                      |               |
| itsec_purge_logs  | 2020-10-30 16:38: | now                  | 1 day         |
|                   | 19                |                      |               |
| wplister_update_a | 2020-10-30 17:36: | now                  | 1 day         |
| uctions           | 58                |                      |               |
| recovery_mode_cle | 2020-10-30 17:37: | now                  | 1 day         |
| an_expired_keys   | 15                |                      |               |
| rocket_database_o | 2020-10-30 17:40: | now                  | 1 day         |
| ptimization_time_ | 30                |                      |               |
| event             |                   |                      |               |
| ao_cachechecker   | 2020-10-30 19:47: | now                  | 1 day         |
|                   | 28                |                      |               |
| et_builder_fonts_ | 2020-10-30 19:52: | now                  | 1 day         |
| cron              | 49                |                      |               |
| bloom_lists_auto_ | 2020-10-30 19:53: | now                  | 1 day         |
| refresh           | 56                |                      |               |
| wpseo_ryte_fetch  | 2020-10-30 21:50: | now                  | 1 week        |
|                   | 44                |                      |               |
| wpseo-reindex     | 2020-11-02 20:20: | now                  | 1 day         |
|                   | 56                |                      |               |
| wpseo_permalink_s | 2020-11-02 20:20: | now                  | 1 day         |
| tructure_check    | 56                |                      |               |
| wpseo_home_url_ch | 2020-11-02 20:20: | now                  | 1 day         |
| eck               | 56                |                      |               |
| generate_category | 2020-11-02 20:21: | now                  | Non-repeating |
| _lookup_table     | 06                |                      |               |
| wpo_weekly_cron_t | 2020-11-03 12:59: | now                  | 1 week        |
| asks              | 43                |                      |               |
| rocket_facebook_t | 2020-11-03 17:23: | now                  | 1 week        |
| racking_cache_upd | 11                |                      |               |
| ate               |                   |                      |               |
| rocket_google_tra | 2020-11-03 17:23: | now                  | 1 week        |
| cking_cache_updat | 11                |                      |               |
| e                 |                   |                      |               |
| rocket_cache_dir_ | 2020-11-03 17:23: | now                  | 1 week        |
| size_check        | 11                |                      |               |
| rocket_purge_time | 2020-11-03 18:23: | now                  | 1 hour        |
| _event            | 11                |                      |               |
| wc_jilt_shop_upda | 2020-11-03 22:19: | now                  | 1 day         |
| te                | 29                |                      |               |
| pum_weekly_schedu | 2020-11-04 08:17: | now                  | 1 week        |
| led_events        | 50                |                      |               |
| wp_site_health_sc | 2020-11-04 16:14: | now                  | 1 week        |
| heduled_check     | 54                |                      |               |
| wpseo_onpage_fetc | 2020-11-04 20:02: | now                  | 1 week        |
| h                 | 54                |                      |               |
| wpacu_weekly_sche | 2020-11-05 16:38: | now                  | 1 week        |
| duled_events      | 19                |                      |               |
| wpseo_ping_search | 2020-11-12 22:50: | now                  | Non-repeating |
| _engines          | 29                |                      |               |
| et_core_page_reso | 2020-11-15 14:48: | now                  | 1 month       |
| urce_auto_clear   | 33                |                      |               |
| woocommerce_clean | 2020-11-30 18:22: | now                  | 1 day         |
| up_personal_data  | 33                |                      |               |
| woocommerce_track | 2020-11-30 18:22: | now                  | 1 day         |
| er_send_event     | 33                |                      |               |
| woocommerce_geoip | 2020-11-30 18:23: | now                  | 2 weeks 1 day |
| _updater          | 23                |                      |               |
| woocommerce_cance | 2020-11-30 19:22: | now                  | Non-repeating |
| l_unpaid_orders   | 23                |                      |               |
| woocommerce_clean | 2020-11-30 21:22: | now                  | 1 day         |
| up_logs           | 23                |                      |               |
| woocommerce_clean | 2020-12-01 00:22: | now                  | 12 hours      |
| up_sessions       | 23                |                      |               |
| woocommerce_sched | 2020-12-01 08:00: | now                  | 1 day         |
| uled_sales        | 00                |                      |               |
+-------------------+-------------------+----------------------+---------------+
robwatson-intechra commented 3 years ago

We have these running once every 30 minutes via cron-job.org per the details in this tutorial: https://webidextrous.com/how-to-reschedule-wp-cron-jobs/

lukecav commented 3 years ago

One of the active plugins might be trying to access the order information directly and not using the WooCommerce CRUD API. I would try to grep around for get_post_meta() calls with some of these meta keys: https://github.com/liquidweb/woocommerce-custom-orders-table/blob/develop/includes/class-woocommerce-custom-orders-table.php#L96

robwatson-intechra commented 3 years ago

We think we have this figured out and it's not related to this plugin. The customer was likely using a non-standard mobile browser that was not executing the jQuery/AJAX on the checkout page properly. This caused a situation where a buy 3 get 1 free offer that was in the cart converted to "get 1 free" when they set the quantity they were buying to 0. Usually it also removes the 1 free item and sets the entire cart to Qty=0 and returns them to the shop. In this case it stayed Qty=1 and total = $0.00. They then tried to "purchase", which resulted in a blank order with no billing/shipping address info. They since submitted two more normal orders but the order failed due to fraud detection. Probably just a fraudulent or inexperienced user.

lukecav commented 3 years ago

@robwatson-intechra Great glad you were able to figure out what was causing the issue on the site.