ent->type; $this->response = 'WPForms Square: ' . $this->event_type . ' event received.'; $processed = $this->process_event( $event ); $this->response_code = $processed ? 200 : 202; $this->respond(); } catch ( Exception $e ) { $this->response = $e->getMessage(); $this->response_code = $e instanceof BadMethodCallException ? 501 : 500; $this->respond(); } } /** * Get webhook signature. * * @since 1.9.5 * * @throws RuntimeException When Square signature is not set. * * @return string */ private function get_webhook_signature(): string { if ( ! isset( $_SERVER['HTTP_X_SQUARE_HMACSHA256_SIGNATURE'] ) ) { throw new RuntimeException( 'Square signature is not set.' ); } return sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_SQUARE_HMACSHA256_SIGNATURE'] ) ); } /** * Get webhook signing secret. * * @since 1.9.5 * * @throws RuntimeException When webhook signing secret is not set. * * @return string */ private function get_webhook_signing_secret(): string { $secret = wpforms_setting( 'square-webhooks-secret-' . Helpers::get_mode() ); if ( empty( $secret ) ) { throw new RuntimeException( 'Webhook signing secret is not set.' ); } return $secret; } /** * Process Square event. * * @since 1.9.5 * * @param object $event Square event. * * @return bool True if event has handling class, false otherwise. */ private function process_event( $event ): bool { $webhooks = self::get_event_whitelist(); // Event can't be handled. if ( ! isset( $webhooks[ $event->type ] ) || ! class_exists( $webhooks[ $event->type ] ) ) { return false; } $handler = new $webhooks[ $event->type ](); $handler->setup( $event ); return $handler->handle(); } /** * Get event allowlist. * * @since 1.9.5 * * @return array */ private static function get_event_whitelist(): array { return [ 'refund.updated' => Webhooks\RefundUpdated::class, 'payment.updated' => Webhooks\PaymentUpdated::class, 'payment.created' => Webhooks\PaymentCreated::class, 'subscription.created' => Webhooks\SubscriptionCreated::class, 'subscription.updated' => Webhooks\SubscriptionUpdated::class, ]; } /** * Check if rest verification is requested. * * @since 1.9.5 * * @return bool */ private function is_rest_verification(): bool { // phpcs:ignore WordPress.Security.NonceVerification.Recommended return isset( $_GET['verify'] ) && $_GET['verify'] === '1'; } /** * Respond to the request. * * @since 1.9.5 */ private function respond() { $this->log_webhook(); wp_die( esc_html( $this->response ), '', (int) $this->response_code ); } /** * Log webhook request. * * @since 1.9.5 */ private function log_webhook() { // log only if WP_DEBUG_LOG and WPFORMS_WEBHOOKS_DEBUG are set to true. if ( ! defined( 'WPFORMS_WEBHOOKS_DEBUG' ) || ! WPFORMS_WEBHOOKS_DEBUG || ! defined( 'WP_DEBUG_LOG' ) || ! WP_DEBUG_LOG ) { return; } // If it is set to explicitly display logs on output, return: this would make response to Square malformed. if ( defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG_DISPLAY ) { return; } $webhook_log = maybe_serialize( [ 'event_type' => $this->event_type, 'response_code' => $this->response_code, 'response' => $this->response, 'payload' => $this->payload, ] ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log error_log( $webhook_log ); } /** * Get a webhook events list. * * @since 1.9.5 * * @return array */ public static function get_webhooks_events_list(): array { return array_keys( self::get_event_whitelist() ); } }
Fatal error: Uncaught Error: Class 'WPForms\Integrations\Square\Api\WebhookRoute' not found in /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Square/Square.php:257 Stack trace: #0 /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Square/Square.php(87): WPForms\Integrations\Square\Square->load_webhooks() #1 /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Loader.php(96): WPForms\Integrations\Square\Square->load() #2 /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Loader.php(81): WPForms\Integrations\Loader->load_integration(Object(WPForms\Integrations\Square\Square)) #3 /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Loader.php(22): WPForms\Integrations\Loader->__construct() #4 /home/emdadcar/public_html/wp-includes/class-wp-hook.php(353): WPForms\Integrations\Loader::get_instance('') #5 /home/emdadcar/public_html/wp-includes/class-wp-hook.php(377): WP_Hook->apply_filters(Object(WPForms\Providers\Providers) in /home/emdadcar/public_html/assets/plugins/wpforms-lite/src/Integrations/Square/Square.php on line 257