diff --git a/assets/js/credits.js b/assets/js/credits.js index 87320e98..9572507f 100644 --- a/assets/js/credits.js +++ b/assets/js/credits.js @@ -115,6 +115,8 @@ } // ===== Forward-only affiliate revenue center ===== + /* 推广链接由 PHP 直出,首屏即可见、可复制;这里只补异步才拿得到的 + * 海报配置与佣金比例,取失败也不影响复制。 */ function initAffiliateRevenue() { var root = document.querySelector('[data-aksrt-revenue-page]'); if (!root || root.dataset.affiliateBound) return; @@ -123,16 +125,14 @@ var copy = root.querySelector('[data-affiliate-copy]'); var feedback = root.querySelector('[data-affiliate-feedback]'); function setFeedback(text, error) { if (feedback) { feedback.textContent = text; feedback.classList.toggle('is-error', !!error); } } + var url = input ? input.value : ''; + if (copy) copy.disabled = !url; api('/revenue/me').then(function (r) { - if (!r.ok) { setFeedback((r.json && r.json.message) || '推广数据加载失败。', true); return; } + if (!r.ok) return; var j = r.json || {}; - if (input) { - input.value = j.url || ''; - } - if (copy) copy.disabled = !j.url; var ratio = root.querySelector('[data-affiliate-ratio]'); if (ratio) ratio.textContent = String(j.current_ratio || 0) + '%'; - initAffiliatePoster(root, j.url || '', j.poster || {}, j.site_name || document.title); - }).catch(function () { setFeedback('推广数据加载失败。', true); }); + initAffiliatePoster(root, url || j.url || '', j.poster || {}, j.site_name || document.title); + }).catch(function () { /* 海报与比例为增强项,静默失败即可。 */ }); if (copy) copy.addEventListener('click', function () { if (!input || !input.value) return; var done = function () { setFeedback('推广链接已复制。'); }; diff --git a/inc/helpers/user-center-renderers/profile-revenue.php b/inc/helpers/user-center-renderers/profile-revenue.php index 175f9a62..a990627b 100644 --- a/inc/helpers/user-center-renderers/profile-revenue.php +++ b/inc/helpers/user-center-renderers/profile-revenue.php @@ -56,6 +56,11 @@ $details_title = trim((string) ($affiliate['details_title'] ?? '')); if ($details_title === '') { $details_title = __('返佣详解', 'aksrt'); } +/* 推广链接服务端直出:避免为了一个本地拼接的 URL 多绕一次 REST 往返。 */ +$affiliate_link_url = ''; +if (class_exists('\AKSRT\Payment\ReferralAttribution')) { + $affiliate_link_url = (string) (\AKSRT\Payment\ReferralAttribution::get_instance()->create_link($user_id)['url'] ?? ''); +} $revenue_request = is_array($context['revenue_request'] ?? null) ? $context['revenue_request'] : []; $active_reward_tab = sanitize_key((string) ($revenue_request['reward_tab'] ?? ($_GET['reward_tab'] ?? 'detail'))); @@ -144,7 +149,7 @@ $status_labels = [