Automattic / woocommerce-subscriptions-core

Subscriptions core package for WooCommerce
Other
87 stars 33 forks source link

Webhooks failing to deliver on REST API v3 #635

Closed nicdwilson closed 2 months ago

nicdwilson commented 3 months ago

Describe the bug

Webhooks are failing to deliver on subscription. actions. The error is viewable in Action Scheduler as Call to a member function get_endpoint_data() on null

v2 webhooks deliver.

To reproduce

  1. Setup webhook
  2. Trigger
  3. View Action Scheduler

Screenshots

NXFDPi.png

Expected behavior

Webhooks deliver

Additional details

8366375-zd-a8c

nicdwilson commented 3 months ago

Related stack trace extracted using Action Scheduler Logger

024-06-20T21:34:46+00:00 Debug The thingamajig failed to whizz the bang and defaulted to a belly flop instead. The reason for the failure:
Error: Call to a member function get_endpoint_data() on null in /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce-subscriptions/includes/class-wcs-webhooks.php:150
Stack trace:
#0 /Users/nicw/Sites/order-generator/app/public/wp-includes/class-wp-hook.php(324): WCS_Webhooks::create_payload(Array, 'subscription', 27567, 1)
#1 /Users/nicw/Sites/order-generator/app/public/wp-includes/plugin.php(205): WP_Hook->apply_filters(Array, Array)
#2 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/includes/class-wc-webhook.php(439): apply_filters('woocommerce_web...', Array, 'subscription', 27567, 1)
#3 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/includes/class-wc-webhook.php(325): WC_Webhook->build_payload(27567)
#4 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/includes/wc-webhook-functions.php(78): WC_Webhook->deliver(27567)
#5 /Users/nicw/Sites/order-generator/app/public/wp-includes/class-wp-hook.php(324): wc_deliver_webhook_async(1, 27567)
#6 /Users/nicw/Sites/order-generator/app/public/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#7 /Users/nicw/Sites/order-generator/app/public/wp-includes/plugin.php(565): WP_Hook->do_action(Array)
#8 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/packages/action-scheduler/classes/actions/ActionScheduler_Action.php(56): do_action_ref_array('woocommerce_del...', Array)
#9 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/packages/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php(88): ActionScheduler_Action->execute()
#10 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_QueueRunner.php(169): ActionScheduler_Abstract_QueueRunner->process_action(164604, 'WP Cron')
#11 /Users/nicw/Sites/order-generator/app/public/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_QueueRunner.php(139): ActionScheduler_QueueRunner->do_batch(25, 'WP Cron')
#12 /Users/nicw/Sites/order-generator/app/public/wp-includes/class-wp-hook.php(324): ActionScheduler_QueueRunner->run('WP Cron')
#13 /Users/nicw/Sites/order-generator/app/public/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#14 /Users/nicw/Sites/order-generator/app/public/wp-includes/plugin.php(565): WP_Hook->do_action(Array)
#15 /Users/nicw/Sites/order-generator/app/public/wp-cron.php(191): do_action_ref_array('action_schedule...', Array)
#16 {main}
nicdwilson commented 2 months ago

Closing in favor of https://github.com/woocommerce/woocommerce-subscriptions/issues/4685

gggeek commented 2 months ago

Hello. Is the repo linked in the last comment above private? I can not seem to be able to access it.

I think the fix is to replace wc()->api->get_endpoint_data(...) by wc_get_container()->get( Automattic\WooCommerce\Utilities\RestApiUtil::class )->get_endpoint_data(...) around line 150 of class-wcs-webhooks.php, in switch case wp_api_v3.

If that is correct, would it be possible to have a woocommerce-subs release 6.2.1 soonish? Thx