diff --git a/changelog/fix-4286-fix-webhook-service-fatal-error b/changelog/fix-4286-fix-webhook-service-fatal-error new file mode 100644 index 00000000000..0d3d0fd339d --- /dev/null +++ b/changelog/fix-4286-fix-webhook-service-fatal-error @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fixes fatal error on payment intent succeeded webhook. diff --git a/includes/class-wc-payments-webhook-processing-service.php b/includes/class-wc-payments-webhook-processing-service.php index 1b8bd189e64..c7ab35fdfba 100644 --- a/includes/class-wc-payments-webhook-processing-service.php +++ b/includes/class-wc-payments-webhook-processing-service.php @@ -361,6 +361,9 @@ private function process_webhook_payment_intent_succeeded( $event_body ) { $charges_data = $this->read_webhook_property( $event_charges, 'data' ); $charge_id = $this->read_webhook_property( $charges_data[0], 'id' ); + if ( ! $order ) { + return; + } // update _charge_id meta if it doesn't exist - happens when maybe_process_upe_redirect fails sometimes. if ( $charge_id && ! $order->get_meta( '_charge_id' ) ) { $order->update_meta_data( '_charge_id', $charge_id );