三种接入形态怎么选
| 形态 | 接入成本 | 样式控制 | 后续维护 | 适合 |
|---|---|---|---|---|
| {{ r.name }} {{ r.tag }} |
{{ r.cost }} | {{ r.style }} | {{ r.keep }} | {{ r.for }} |
推荐:无样式组件(theme="none")——结构由中台统一维护升级(票据、轮询、场景校验), 外观 100% 由业务站决定,是站群场景下成本与可控性最平衡的选择。
调用面与约束
| 接口 | 作用 | 站点令牌 | 限流 |
|---|---|---|---|
| {{ a.path }} | {{ a.desc }} | {{ a.token ? '必需' : '否' }} | {{ a.limit }} |
- 跨域:服务端按站点
allowed_origin放行,建站时填对来源即可,业务站无需代理。 - 场景:票据与二维码都带 scene,未授权场景服务端返回 403 并在组件内直接展示原因。
- 轮询间隔建议 ≥2s;预览页统一放大到 8s 以避免触发限流(60 次/分钟/路径)。
下面 5 个组件是同一份逻辑(建票据 → 出二维码 → 轮询 → 换 token),只有外观不同。
<script src="https://中台域名/widget.js"></script>
<auth-login site-token="{{ token || 'YOUR_TOKEN' }}" theme="default"></auth-login>
<auth-login site-token="..." theme="dark"></auth-login>
<!-- theme="auto" 则跟随系统深浅色 -->
<auth-login site-token="..." theme="none"></auth-login>
<style>
.skin-line .hnai-card{border-radius:2px;...}
.skin-line .hnai-qr{width:180px}
</style>
/* 只改配色,结构完全复用 */
.skin-dark .hnai-card{background:#161b22}
.skin-dark .hnai-btn{background:#238636}
.skin-row .hnai-card{display:flex;gap:16px}
.skin-row .hnai-qr{width:120px;margin:0}
浏览器环境只能走「扫码 → 小程序内支付」,且需先在下方填入真实可打开的支付页地址(留空时组件只显示提示、不出码);若页面运行在小程序 webview 且已登录,
组件会自动改用 wx.requestVirtualPayment 直接拉起收银台。
<auth-pay site-token="..." asset-id="1"
title="会员月卡" price="¥ 19.9"
mp-pay-url="https://...?asset_id={id}"></auth-pay>
点击「立即支付」后展示二维码:data-state="scan";
轮询到已支付转 success 并派发 hnai:paid 事件。
document.querySelector('auth-pay')
.addEventListener('hnai:paid', e => { /* 发货后的业务动作 */ })
不用组件,直接调接口
下面按钮会真的打中台接口(当前 token),响应原样展示,便于确认字段与错误文案。
qr: {{ qrUrl }}
{{ rawResp }}
等价 curl
curl -X POST '{{ origin }}/api/auth/ticket?site_token={{ token || 'YOUR_TOKEN' }}' \
-H 'Content-Type: application/json' \
-d '{"scene":"login","channel":"wx"}'
# → {"ticket":"...","scene":"login","qr_url":".../qr?ticket=..."}
curl '{{ origin }}/api/auth/ticket/status?ticket=TICKET'
# → {"status":"pending|confirmed|expired"}
curl -X POST '{{ origin }}/api/auth/ticket/exchange' \
-H 'Content-Type: application/json' -d '{"ticket":"TICKET"}'
# → {"token":"...","user":{...}}
登录组件状态
以下为静态快照(不发起请求),用于确认各状态的文案与配色。每个状态都体现在根节点的
data-state 上,业务站可直接写
.hnai-login[data-state="error"]{...}。
扫码登录
扫码登录
请使用微信扫码登录
扫码登录
登录成功,欢迎 张三
扫码登录
二维码已过期,请刷新页面重试
扫码登录
场景未获授权,请联系中台开通
扫码登录
invalid site token
支付组件状态
会员月卡
¥ 19.9
会员月卡
¥ 19.9
请使用微信扫描二维码,在「小程序」内完成支付
会员月卡
¥ 19.9
支付成功
会员月卡
¥ 19.9
未配置 mp-pay-url(小程序支付入口)