(function () { 'use strict'; var POLL_TIMEOUT_MS = 5 * 60 * 1000; var PAY_STEP_LABELS = ['选择支付', '扫码付款', '订阅生效']; function esc(s) { if (s == null) return ''; return String(s) .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"'); } function apiBase() { var cfg = (typeof window !== 'undefined' && window.SOON_DEPLOY_CONFIG && window.SOON_DEPLOY_CONFIG.api_v1_base); if (cfg) return String(cfg).replace(/\/+$/, ''); if (typeof window !== 'undefined' && window.location) { return window.location.origin + '/api/v1'; } return '/api/v1'; } function apiFetch(url, opts) { if (typeof window.soonAuthedFetch === 'function') return window.soonAuthedFetch(url, opts || {}); opts = opts || {}; var token = localStorage.getItem('soon_access') || ''; opts.headers = Object.assign({}, opts.headers || {}); if (token) opts.headers.Authorization = 'Bearer ' + token; return fetch(url, opts); } function parseApiJson(r) { return r.text().then(function (text) { try { return JSON.parse(text); } catch (e) { return { ok: false, message: '服务暂时不可用,请稍后重试' }; } }); } function apiGet(p) { return apiFetch(apiBase() + p).then(function (r) { if (!r.ok && r.status === 401) return { ok: false, message: '未登录或会话已过期' }; return parseApiJson(r); }); } function apiPost(p, body) { return apiFetch(apiBase() + p, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body || {}), }).then(function (r) { if (!r.ok && r.status === 401) return { ok: false, message: '未登录或会话已过期' }; return parseApiJson(r); }); } function isSafeAlipayGateway(url) { if (!url || typeof url !== 'string') return false; try { var u = new URL(url); return u.protocol === 'https:' && (u.hostname === 'openapi.alipay.com' || u.hostname === 'openapi.alipaydev.com'); } catch (e) { return false; } } function submitAlipayForm(payForm) { if (!payForm || !payForm.gateway || !payForm.params) return false; if (!isSafeAlipayGateway(payForm.gateway)) return false; var form = document.createElement('form'); form.method = 'POST'; form.action = payForm.gateway; form.acceptCharset = 'UTF-8'; form.style.display = 'none'; Object.keys(payForm.params).forEach(function (key) { var val = payForm.params[key]; if (val == null || val === '') return; var input = document.createElement('input'); input.type = 'hidden'; input.name = key; input.value = String(val); form.appendChild(input); }); document.body.appendChild(form); form.submit(); return true; } function payStepLabel(step, channel) { if (step === 2 && channel === 'alipay') return '网页支付'; if (step === 2 && channel === 'wechat') return '扫码付款'; return PAY_STEP_LABELS[step - 1]; } function payStepperHtml(activeStep, channel) { var parts = []; for (var i = 1; i <= 3; i++) { if (i > 1) { var bridgeCls = 'soon-pay-stepper__bridge'; if (i - 1 < activeStep) bridgeCls += ' is-done'; parts.push('
'); } var cls = 'soon-pay-stepper__item'; if (i < activeStep) cls += ' is-done'; else if (i === activeStep) cls += ' is-active'; parts.push('等待生成付款码
' + '确认支付方式后,将在此显示二维码或跳转链接
支付宝电脑网站支付
' + '点击下方按钮跳转至支付宝收银台,支付完成后将自动返回
' + '微信扫码支付
' + '' + '请使用微信扫一扫,有效期约 2 小时
正在连接支付渠道…