set_param('meta', $meta); $resp = A11YB_License_API::status($req); if ($resp instanceof \WP_REST_Response) { $data = $resp->get_data(); } else { // Fallback if something unexpected happens $data = is_array($resp) ? $resp : []; } // No option updates here – this already happens in A11YB_License_API::status() return $data; } /** * Central license status helper. * * @return array */ function a11ybridge_get_license_status() { $data = a11ybridge_refresh_license_status([]); return $data; } /** * Sign a payload for backend calls (HMAC). * * @param array $data * @return array [payload_json, signature] */ function a11ybridge_sign_payload(array $data): array { $payload = wp_json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); $secret = (string) get_option('a11ybridge_client_secret'); // set by backend during domain binding $sig = hash_hmac('sha256', $payload, $secret ?: ''); return [$payload, $sig]; } // Base URL of your license backend if (!defined('A11YBRIDGE_BACKEND_BASE')) { define('A11YBRIDGE_BACKEND_BASE', 'https://a11ybridge.de'); } /** * Build backend REST URL for license server. * * @param string $path e.g. '/license/status' * @return string */ function a11ybridge_backend_rest_url(string $path): string { return rtrim(A11YBRIDGE_BACKEND_BASE, '/') . '/wp-json/a11ybridge/v1' . $path; } // Filter: activate endpoint add_filter('a11ybridge_license_activate_endpoint', function ($default) { return a11ybridge_backend_rest_url('/license/activate'); }); // Filter: status endpoint add_filter('a11ybridge_license_status_endpoint', function ($default) { return a11ybridge_backend_rest_url('/license/status'); }); // Optional: domains/delete endpoint add_filter('a11ybridge_license_domains_delete_endpoint', function ($default) { return a11ybridge_backend_rest_url('/license/domains/delete'); });