Files
u-claw/website/cloud.html
hfshfg 2c309be648 feat: 虾盘云上线 - 重写 cloud.html,新增 docs.html 开发文档
- cloud.html: 完整重写,加入余额查询、充值流程、全功能 JS
- 导航:暂不可用 → 立即充值,新增余额查询/开发文档导航链接
- docs.html: 新增开发者文档页,含接口说明/代码示例/在线测试

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 15:42:26 +08:00

940 lines
40 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>虾盘云 — OpenClaw AI API 服务</title>
<meta name="description" content="虾盘云:为 OpenClaw / 虾盘 U 盘用户提供的 AI API 服务。接入 DeepSeek、Qwen按量计费开箱即用。">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🦞</text></svg>">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--bg: #0a0a0f;
--surface: #12121a;
--border: #1e1e2e;
--text: #e4e4e7;
--text-dim: #71717a;
--accent: #ef4444;
--accent2: #f97316;
--green: #22c55e;
--blue: #3b82f6;
--purple: #a855f7;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.6;
overflow-x: hidden;
}
/* NAV */
nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 0 40px; height: 58px;
background: rgba(10,10,15,0.9);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}
.nav-logo {
font-size: 18px; font-weight: 800; letter-spacing: -0.5px;
background: linear-gradient(135deg, #ef4444, #f97316);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
text-decoration: none;
}
.nav-links { display: flex; gap: 24px; align-items: center; }
.nav-links a {
color: var(--text-dim); text-decoration: none;
font-size: 14px; transition: color 0.2s;
}
.nav-links a:hover { color: var(--text); }
.nav-cta {
background: linear-gradient(135deg, #ef4444, #dc2626) !important;
color: white !important;
padding: 7px 18px; border-radius: 8px;
font-weight: 600; font-size: 14px;
}
.nav-cta:hover { transform: translateY(-1px); box-shadow: 0 4px 20px rgba(239,68,68,0.3); }
/* HERO */
.hero {
min-height: 100vh;
display: flex; flex-direction: column;
align-items: center; justify-content: center;
text-align: center; padding: 80px 20px 60px;
background: radial-gradient(ellipse at 50% 0%, rgba(239,68,68,0.12) 0%, transparent 60%);
}
.hero-emoji { font-size: 72px; margin-bottom: 20px; }
.hero h1 {
font-size: clamp(40px, 7vw, 80px);
font-weight: 800; letter-spacing: -3px; line-height: 1.05;
margin-bottom: 12px;
background: linear-gradient(135deg, #ef4444, #f97316);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
}
.hero-sub {
font-size: clamp(16px, 2.2vw, 22px);
color: var(--text); font-weight: 600; margin-bottom: 14px;
}
.hero-desc {
font-size: clamp(14px, 1.6vw, 17px);
color: var(--text-dim); max-width: 500px; margin: 0 auto 36px;
}
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
.btn {
padding: 13px 30px; border-radius: 12px;
font-size: 15px; font-weight: 600; text-decoration: none;
transition: all 0.2s; display: inline-flex; align-items: center; gap: 8px;
}
.btn-primary {
background: linear-gradient(135deg, #ef4444, #dc2626);
color: white; border: none;
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(239,68,68,0.3); }
.btn-outline {
background: transparent; color: var(--text);
border: 1px solid var(--border);
}
.btn-outline:hover { border-color: var(--accent); background: rgba(239,68,68,0.05); }
.hero-stats {
display: flex; gap: 48px; margin-top: 56px;
flex-wrap: wrap; justify-content: center;
}
.stat { text-align: center; }
.stat-num {
font-size: 32px; font-weight: 800;
background: linear-gradient(135deg, #ef4444, #f97316);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
}
.stat-label { font-size: 12px; color: var(--text-dim); margin-top: 2px; }
/* CONFIG DEMO */
.config-demo {
margin-top: 48px; width: 100%; max-width: 520px;
background: var(--surface); border: 1px solid var(--border);
border-radius: 16px; overflow: hidden; text-align: left;
}
.config-header {
display: flex; align-items: center; gap: 8px;
padding: 10px 16px; background: var(--bg);
border-bottom: 1px solid var(--border);
}
.dot { width: 11px; height: 11px; border-radius: 50%; }
.dot.r{background:#ff5f57} .dot.y{background:#febc2e} .dot.g{background:#28c840}
.config-filename { font-size: 12px; color: var(--text-dim); margin-left: 4px; font-family: monospace; }
.config-demo pre {
padding: 18px 20px; font-family: 'Fira Code','Courier New',monospace;
font-size: 13px; line-height: 1.8;
}
.c-comment { color: #4a5568; }
.c-key { color: #68d391; }
.c-str { color: #fbd38d; }
.c-url { color: #63b3ed; }
/* SECTION */
section { padding: 88px 20px; }
.section-inner { max-width: 1060px; margin: 0 auto; }
.section-tag {
display: inline-block; font-size: 11px; font-weight: 700;
letter-spacing: 2px; text-transform: uppercase;
color: var(--accent); margin-bottom: 10px;
}
.section-title {
font-size: clamp(26px, 3.5vw, 44px); font-weight: 800;
letter-spacing: -1.5px; margin-bottom: 12px;
}
.section-desc { font-size: 16px; color: var(--text-dim); max-width: 480px; }
/* MODELS */
.models-grid {
display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
gap: 16px; margin-top: 44px;
}
.model-card {
background: var(--surface); border: 1px solid var(--border);
border-radius: 16px; padding: 26px;
transition: border-color 0.2s, transform 0.2s;
}
.model-card:hover { border-color: var(--accent); transform: translateY(-3px); }
.model-emoji { font-size: 30px; margin-bottom: 12px; }
.model-name { font-size: 16px; font-weight: 700; margin-bottom: 6px; }
.model-id { font-size: 12px; color: var(--text-dim); font-family: monospace; margin-bottom: 10px; }
.model-desc { font-size: 13px; color: var(--text-dim); margin-bottom: 18px; line-height: 1.5; }
.model-price-row { display: flex; align-items: baseline; gap: 4px; }
.model-price { font-size: 24px; font-weight: 800;
background: linear-gradient(135deg, #ef4444, #f97316);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
}
.model-unit { font-size: 12px; color: var(--text-dim); }
.model-badge {
display: inline-block; margin-top: 10px;
font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 6px;
}
.badge-hot { background: rgba(239,68,68,0.15); color: var(--accent); }
.badge-fast { background: rgba(34,197,94,0.15); color: var(--green); }
.badge-think { background: rgba(168,85,247,0.15); color: var(--purple); }
/* STEPS */
.steps {
display: grid; grid-template-columns: repeat(auto-fit, minmax(200px,1fr));
gap: 32px; margin-top: 48px;
}
.step-num {
width: 44px; height: 44px; border-radius: 12px;
display: flex; align-items: center; justify-content: center;
font-size: 18px; font-weight: 800;
background: rgba(239,68,68,0.1); border: 1px solid rgba(239,68,68,0.25);
color: var(--accent); margin-bottom: 16px;
}
.step h3 { font-size: 16px; font-weight: 700; margin-bottom: 8px; }
.step p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
/* PRICING */
.pricing-grid {
display: grid; grid-template-columns: repeat(auto-fit, minmax(260px,1fr));
gap: 20px; margin-top: 48px;
}
.plan {
background: var(--surface); border: 1px solid var(--border);
border-radius: 20px; padding: 34px; position: relative;
transition: transform 0.2s;
}
.plan:hover { transform: translateY(-4px); }
.plan.featured { border-color: var(--accent); background: linear-gradient(160deg, rgba(239,68,68,0.06) 0%, var(--surface) 100%); }
.plan-top-badge {
position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
background: linear-gradient(135deg, #ef4444, #dc2626);
color: #fff; font-size: 11px; font-weight: 700;
padding: 4px 16px; border-radius: 20px; white-space: nowrap;
}
.plan-label { font-size: 13px; font-weight: 600; color: var(--text-dim); margin-bottom: 8px; }
.plan-price-row { display: flex; align-items: flex-end; gap: 4px; margin-bottom: 6px; }
.plan-price {
font-size: 46px; font-weight: 800; letter-spacing: -2px; line-height: 1;
background: linear-gradient(135deg, #ef4444, #f97316);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
}
.plan-price-unit { font-size: 15px; color: var(--text-dim); margin-bottom: 5px; }
.plan-desc { font-size: 13px; color: var(--text-dim); margin-bottom: 24px; }
.plan-features { list-style: none; display: flex; flex-direction: column; gap: 10px; margin-bottom: 24px; }
.plan-features li { font-size: 14px; display: flex; align-items: center; gap: 10px; }
.plan-features li::before {
content: ''; width: 18px; height: 18px; flex-shrink: 0; border-radius: 50%;
background: rgba(34,197,94,0.15);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath fill='%2322c55e' d='M14 5L7.5 11.5 4 8 3 9l4.5 4.5 7.5-7.5z'/%3E%3C/svg%3E");
background-size: cover;
}
.btn-plan {
display: block; text-align: center; text-decoration: none;
padding: 12px; border-radius: 10px; font-size: 14px; font-weight: 600; transition: all 0.2s;
}
.btn-plan-outline { border: 1px solid var(--border); color: var(--text); }
.btn-plan-outline:hover { border-color: var(--accent); color: var(--accent); }
.btn-plan-filled { background: linear-gradient(135deg, #ef4444, #dc2626); color: #fff; }
.btn-plan-filled:hover { box-shadow: 0 6px 24px rgba(239,68,68,0.35); transform: translateY(-1px); }
/* BALANCE QUERY */
.balance-card {
max-width: 620px; margin: 48px auto 0;
background: var(--surface); border: 1px solid var(--border);
border-radius: 20px; padding: 32px;
}
.bal-input-row { display: flex; gap: 8px; margin-bottom: 16px; }
.bal-input {
flex: 1; background: var(--bg); border: 1px solid var(--border);
border-radius: 10px; padding: 12px 14px;
font-size: 13px; font-family: 'Fira Code','Courier New',monospace;
color: var(--text); outline: none; transition: border-color 0.2s;
}
.bal-input:focus { border-color: var(--accent); }
.bal-input::placeholder { color: var(--text-dim); }
.btn-query {
background: linear-gradient(135deg,#ef4444,#dc2626);
color: #fff; border: none; border-radius: 10px;
padding: 12px 18px; font-size: 14px; font-weight: 600;
cursor: pointer; white-space: nowrap; transition: all 0.2s;
}
.btn-query:hover { box-shadow: 0 4px 16px rgba(239,68,68,0.35); }
.btn-query:disabled { opacity: 0.5; cursor: not-allowed; }
.bal-result {
display: none; background: var(--bg); border: 1px solid var(--border);
border-radius: 14px; padding: 24px; text-align: center;
}
.bal-result.show { display: block; }
.bal-num {
font-size: 50px; font-weight: 800; letter-spacing: -2px; line-height: 1;
background: linear-gradient(135deg,#22c55e,#16a34a);
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
margin-bottom: 6px;
}
.bal-sub { font-size: 13px; color: var(--text-dim); margin-bottom: 16px; }
.bal-detail {
display: flex; justify-content: center; gap: 32px;
flex-wrap: wrap; border-top: 1px solid var(--border); padding-top: 16px;
}
.bal-detail-item { text-align: center; }
.bal-detail-item .val { font-size: 17px; font-weight: 700; color: var(--text); }
.bal-detail-item .lbl { font-size: 12px; color: var(--text-dim); margin-top: 2px; }
.bal-err { color: var(--accent); font-size: 14px; text-align: center; padding: 12px 0; display: none; }
.bal-err.show { display: block; }
/* RECHARGE */
.recharge-box {
max-width: 620px; margin: 48px auto 0;
background: var(--surface); border: 1px solid var(--border);
border-radius: 20px; padding: 36px 32px;
}
.rs-step { margin-bottom: 28px; }
.rs-step:last-child { margin-bottom: 0; }
.rs-title {
font-size: 15px; font-weight: 700; margin-bottom: 14px;
display: flex; align-items: center; gap: 10px;
}
.rs-num {
width: 26px; height: 26px; border-radius: 50%;
background: rgba(239,68,68,0.15); border: 1px solid rgba(239,68,68,0.3);
color: var(--accent); font-size: 12px; font-weight: 800;
display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.key-row { display: flex; gap: 8px; margin-bottom: 10px; }
.key-input {
flex: 1; background: var(--bg); border: 1px solid var(--border);
border-radius: 10px; padding: 11px 14px;
font-size: 13px; font-family: 'Fira Code','Courier New',monospace;
color: var(--text); outline: none; transition: border-color 0.2s;
}
.key-input:focus { border-color: var(--accent); }
.key-input::placeholder { color: var(--text-dim); }
.btn-gen {
background: rgba(239,68,68,0.1); border: 1px solid rgba(239,68,68,0.25);
color: var(--accent); border-radius: 10px; padding: 11px 14px;
font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap;
transition: background 0.2s;
}
.btn-gen:hover { background: rgba(239,68,68,0.18); }
.balance-line { font-size: 13px; color: var(--text-dim); min-height: 20px; }
.balance-line b { color: var(--green); }
.save-tip {
display: none; margin-top: 10px;
background: rgba(34,197,94,0.08); border: 1px solid rgba(34,197,94,0.25);
border-radius: 10px; padding: 10px 14px;
font-size: 13px; color: var(--green); line-height: 1.6;
}
.copy-btn {
background: rgba(34,197,94,0.12); border: 1px solid rgba(34,197,94,0.3);
color: var(--green); border-radius: 6px; padding: 3px 10px;
font-size: 12px; font-weight: 600; cursor: pointer; margin-left: 8px;
transition: background 0.2s;
}
.copy-btn:hover { background: rgba(34,197,94,0.22); }
.amount-row { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.amt-btn {
border: 1px solid var(--border); background: var(--bg);
border-radius: 10px; padding: 10px 22px;
font-size: 16px; font-weight: 700; cursor: pointer;
color: var(--text); transition: all 0.2s;
}
.amt-btn:hover { border-color: var(--accent); color: var(--accent); }
.amt-btn.active {
border-color: var(--accent);
background: rgba(239,68,68,0.12); color: var(--accent);
}
.qr-area { display: flex; gap: 20px; align-items: flex-start; }
.qr-img {
width: 160px; height: auto; border-radius: 12px;
border: 1px solid var(--border); object-fit: contain; flex-shrink: 0;
}
.qr-placeholder {
width: 140px; height: 140px; border-radius: 12px;
border: 2px dashed var(--border);
display: flex; flex-direction: column; align-items: center;
justify-content: center; color: var(--text-dim);
font-size: 12px; flex-shrink: 0; gap: 6px;
}
.qr-tips { flex: 1; }
.qr-tips p { font-size: 14px; color: var(--text-dim); line-height: 1.7; margin-bottom: 8px; }
.hint-key {
background: rgba(239,68,68,0.06); border: 1px solid rgba(239,68,68,0.2);
border-radius: 10px; padding: 10px 14px;
font-size: 13px; font-family: 'Fira Code','Courier New',monospace;
color: var(--text); word-break: break-all; line-height: 1.6;
}
.hint-key em { color: var(--accent); font-style: normal; font-weight: 700; }
/* U盘专属 */
.udisk-wrap {
background: var(--surface);
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
}
.udisk-inner {
max-width: 1060px; margin: 0 auto;
display: grid; grid-template-columns: 1fr 1fr;
gap: 56px; align-items: center; padding: 88px 20px;
}
.udisk-inner h2 {
font-size: clamp(24px,3vw,40px); font-weight: 800;
letter-spacing: -1.5px; margin-bottom: 12px;
}
.udisk-inner p { color: var(--text-dim); font-size: 15px; margin-bottom: 24px; }
.udisk-points { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.udisk-points li { font-size: 14px; display: flex; align-items: flex-start; gap: 10px; }
.udisk-points li::before { content: '🦞'; font-size: 15px; flex-shrink: 0; margin-top: 1px; }
.code-box {
background: var(--bg); border: 1px solid var(--border);
border-radius: 16px; overflow: hidden;
}
.code-box-header {
padding: 10px 16px; border-bottom: 1px solid var(--border);
font-size: 12px; color: var(--text-dim); font-family: monospace;
display: flex; align-items: center; gap: 8px;
}
.code-box pre {
padding: 18px 20px; font-family: 'Fira Code','Courier New',monospace;
font-size: 13px; line-height: 1.8;
}
/* FAQ */
.faq-list { max-width: 680px; margin: 44px auto 0; display: flex; flex-direction: column; gap: 10px; }
.faq-item {
background: var(--surface); border: 1px solid var(--border);
border-radius: 12px; padding: 20px 24px;
transition: border-color 0.2s;
}
.faq-item:hover { border-color: rgba(239,68,68,0.3); }
.faq-q { font-size: 15px; font-weight: 700; margin-bottom: 6px; }
.faq-a { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
/* CTA */
.cta-wrap {
text-align: center; padding: 96px 20px;
background: radial-gradient(ellipse 60% 80% at 50% 50%, rgba(239,68,68,0.07) 0%, transparent 70%);
}
.cta-wrap h2 {
font-size: clamp(26px,4vw,48px); font-weight: 800;
letter-spacing: -2px; margin-bottom: 12px;
}
.cta-wrap p { font-size: 17px; color: var(--text-dim); margin-bottom: 32px; }
/* FOOTER */
footer {
border-top: 1px solid var(--border);
padding: 32px 40px;
display: flex; align-items: center; justify-content: space-between;
flex-wrap: wrap; gap: 14px;
}
.footer-logo { font-size: 15px; font-weight: 800;
background: linear-gradient(135deg,#ef4444,#f97316);
-webkit-background-clip:text; -webkit-text-fill-color:transparent;
}
footer a { color: var(--text-dim); text-decoration: none; font-size: 13px; transition: color 0.2s; }
footer a:hover { color: var(--accent); }
.footer-links { display: flex; gap: 20px; }
.footer-copy { font-size: 13px; color: var(--text-dim); }
@media (max-width: 768px) {
nav { padding: 0 16px; }
.nav-links { display: none; }
.udisk-inner { grid-template-columns: 1fr; gap: 28px; }
footer { flex-direction: column; align-items: flex-start; }
.qr-area { flex-direction: column; }
}
</style>
</head>
<body>
<nav>
<a href="https://cloud.u-claw.org" class="nav-logo">虾盘云</a>
<div class="nav-links">
<a href="#models">模型</a>
<a href="#pricing">价格</a>
<a href="#balance">余额查询</a>
<a href="#recharge">充值</a>
<a href="docs.html">开发文档</a>
<a href="https://u-claw.org">虾盘官网</a>
<a href="#recharge" class="nav-cta">立即充值</a>
</div>
</nav>
<!-- HERO -->
<div class="hero">
<div class="hero-emoji">🦞</div>
<h1>虾盘云</h1>
<div class="hero-sub">OpenClaw 官方 AI API 服务</div>
<div class="hero-desc">为虾盘 U 盘用户专属打造。接入 DeepSeek、Qwen按量计费开箱即用无需折腾。</div>
<div class="hero-cta">
<a href="#recharge" class="btn btn-primary">立即充值使用 →</a>
<a href="docs.html" class="btn btn-outline">查看开发文档</a>
</div>
<div class="hero-stats">
<div class="stat"><div class="stat-num">¥3</div><div class="stat-label">DeepSeek V3 起</div></div>
<div class="stat"><div class="stat-num">¥10</div><div class="stat-label">最低充值金额</div></div>
<div class="stat"><div class="stat-num">10min</div><div class="stat-label">手动到账时效</div></div>
<div class="stat"><div class="stat-num">5+</div><div class="stat-label">可用模型</div></div>
</div>
<div class="config-demo">
<div class="config-header">
<div class="dot r"></div><div class="dot y"></div><div class="dot g"></div>
<span class="config-filename">openclaw.json — 一行配置搞定</span>
</div>
<pre><span class="c-comment">// 虾盘 U 盘已预装此配置,注册后填入 apiKey 即用</span>
{
<span class="c-key">"agent"</span>: {
<span class="c-key">"model"</span>: <span class="c-str">"deepseek-chat"</span>,
<span class="c-key">"apiKey"</span>: <span class="c-str">"sk-xp-your-key-here"</span>,
<span class="c-key">"baseUrl"</span>: <span class="c-url">"https://api.u-claw.org/v1"</span>
}
}</pre>
</div>
</div>
<!-- MODELS -->
<section id="models">
<div class="section-inner">
<span class="section-tag">支持模型</span>
<h2 class="section-title">主流模型,统一接口</h2>
<p class="section-desc">OpenAI 兼容格式,切换模型只改一个字段,所有工具通用。</p>
<div class="models-grid">
<div class="model-card">
<div class="model-emoji">🐋</div>
<div class="model-name">DeepSeek V3</div>
<div class="model-id">deepseek-chat</div>
<div class="model-desc">日常对话、写作、代码,综合能力最强的主力模型,性价比极高</div>
<div class="model-price-row">
<span class="model-price">¥3</span>
<span class="model-unit">/ 百万 token输入</span>
</div>
<span class="model-badge badge-hot">推荐首选</span>
</div>
<div class="model-card">
<div class="model-emoji">🧠</div>
<div class="model-name">DeepSeek R1</div>
<div class="model-id">deepseek-reasoner</div>
<div class="model-desc">深度推理模型,复杂逻辑、数学证明、代码调试效果出色</div>
<div class="model-price-row">
<span class="model-price">¥12</span>
<span class="model-unit">/ 百万 token输入</span>
</div>
<span class="model-badge badge-think">深度推理</span>
</div>
<div class="model-card">
<div class="model-emoji"></div>
<div class="model-name">Qwen Turbo</div>
<div class="model-id">qwen-turbo</div>
<div class="model-desc">极速响应,适合高频轻量对话,中文表现好</div>
<div class="model-price-row">
<span class="model-price">¥1.8</span>
<span class="model-unit">/ 百万 token输入</span>
</div>
<span class="model-badge badge-fast">极速</span>
</div>
<div class="model-card">
<div class="model-emoji">🌟</div>
<div class="model-name">Qwen Plus</div>
<div class="model-id">qwen-plus</div>
<div class="model-desc">长文档理解强,中文语义把握准确,适合写作场景</div>
<div class="model-price-row">
<span class="model-price">¥4</span>
<span class="model-unit">/ 百万 token输入</span>
</div>
<span class="model-badge badge-hot">中文优化</span>
</div>
</div>
</div>
</section>
<!-- HOW IT WORKS -->
<section id="howto" style="background: var(--surface); border-top: 1px solid var(--border);">
<div class="section-inner">
<span class="section-tag">快速接入</span>
<h2 class="section-title">3 步5 分钟搞定</h2>
<p class="section-desc">虾盘 U 盘用户更简单U 盘已预装 API 地址。</p>
<div class="steps">
<div class="step">
<div class="step-num">1</div>
<h3>获取 API Key</h3>
<p>在下方充值区生成或粘贴你的 Key支付宝扫码充值备注 Key10分钟内到账激活。</p>
</div>
<div class="step">
<div class="step-num">2</div>
<h3>配置 API 地址</h3>
<p>Base URL 填 <code style="font-size:12px;color:var(--accent)">https://api.u-claw.org/v1</code>API Key 填你的 sk-xp- 开头的 Key。</p>
</div>
<div class="step">
<div class="step-num">3</div>
<h3>开始使用</h3>
<p>兼容所有 OpenAI 格式工具OpenClaw、Cherry Studio、Cursor、沉浸式翻译等直接用。</p>
</div>
</div>
</div>
</section>
<!-- U盘专属 -->
<div class="udisk-wrap">
<div class="udisk-inner">
<div>
<span class="section-tag">U 盘用户专属</span>
<h2>买了虾盘 U 盘?<br>直接用,免费送</h2>
<p>正版虾盘 U 盘预装了虾盘云 API 配置。插上盘,注册账号,兑换激活码,立刻可用。</p>
<ul class="udisk-points">
<li>U 盘出厂已预装 API 地址,无需手动配置</li>
<li>每个正版 U 盘附赠一张激活码,价值 ¥5</li>
<li>兑换后立即到账,够用一段时间</li>
<li>用完可按需充值¥10 起,余额永不过期</li>
</ul>
</div>
<div class="code-box">
<div class="code-box-header">
<span>📁</span>
<span>data/.openclaw/openclaw.json</span>
</div>
<pre><span class="c-comment">// 出厂预装,插上 U 盘即生效</span>
{
<span class="c-key">"agent"</span>: {
<span class="c-key">"model"</span>: <span class="c-str">"deepseek-chat"</span>,
<span class="c-key">"apiKey"</span>: <span class="c-str">"注册后填入你的 Key"</span>,
<span class="c-key">"baseUrl"</span>: <span class="c-url">"https://api.u-claw.org/v1"</span>
}
}</pre>
</div>
</div>
</div>
<!-- PRICING -->
<section id="pricing">
<div class="section-inner">
<span class="section-tag">价格</span>
<h2 class="section-title">简单透明,按用付费</h2>
<p class="section-desc">用多少花多少,没有套路,余额永久有效。</p>
<div class="pricing-grid">
<div class="plan">
<div class="plan-label">轻度充值</div>
<div class="plan-price-row">
<span class="plan-price">¥10</span>
<span class="plan-price-unit">起充</span>
</div>
<div class="plan-desc">适合尝鲜体验,灵活无压力</div>
<ul class="plan-features">
<li>全模型可用</li>
<li>余额永久有效</li>
<li>支付宝充值</li>
<li>10分钟内到账</li>
</ul>
<a href="#recharge" class="btn-plan btn-plan-outline" onclick="selectAmt(10)">选择此档</a>
</div>
<div class="plan featured">
<div class="plan-top-badge">最受欢迎</div>
<div class="plan-label">标准充值</div>
<div class="plan-price-row">
<span class="plan-price">¥50</span>
<span class="plan-price-unit">起充</span>
</div>
<div class="plan-desc">约 500 万 token日常够用</div>
<ul class="plan-features">
<li>全模型可用</li>
<li>余额永久有效</li>
<li>支付宝充值</li>
<li>10分钟内到账</li>
</ul>
<a href="#recharge" class="btn-plan btn-plan-filled" onclick="selectAmt(50)">选择此档</a>
</div>
<div class="plan">
<div class="plan-label">高级充值</div>
<div class="plan-price-row">
<span class="plan-price">¥100</span>
<span class="plan-price-unit">起充</span>
</div>
<div class="plan-desc">约 1000 万 token重度用户</div>
<ul class="plan-features">
<li>全模型可用</li>
<li>余额永久有效</li>
<li>支付宝充值</li>
<li>10分钟内到账</li>
</ul>
<a href="#recharge" class="btn-plan btn-plan-outline" onclick="selectAmt(100)">选择此档</a>
</div>
</div>
</div>
</section>
<!-- BALANCE -->
<section id="balance" style="border-top: 1px solid var(--border);">
<div class="section-inner" style="text-align:center;">
<span class="section-tag">余额查询</span>
<h2 class="section-title">查询 Key 余额</h2>
<p class="section-desc" style="margin:0 auto;">粘贴你的 API Key实时查询剩余额度</p>
<div class="balance-card">
<div class="bal-input-row">
<input type="text" id="balKey" class="bal-input" placeholder="sk-xp-..." spellcheck="false" autocomplete="off">
<button class="btn-query" id="queryBtn" onclick="doQueryBalance()">查询余额</button>
</div>
<div class="bal-err" id="balErr"></div>
<div class="bal-result" id="balResult">
<div class="bal-num" id="balNum">¥0.00</div>
<div class="bal-sub">当前可用余额(人民币)</div>
<div class="bal-detail">
<div class="bal-detail-item">
<div class="val" id="balTotal">-</div>
<div class="lbl">累计充值</div>
</div>
<div class="bal-detail-item">
<div class="val" id="balUsed">-</div>
<div class="lbl">已消耗</div>
</div>
<div class="bal-detail-item">
<div class="val" id="balUpdated">-</div>
<div class="lbl">查询时间</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- RECHARGE -->
<section id="recharge" style="background: var(--surface); border-top: 1px solid var(--border);">
<div class="section-inner" style="text-align:center;">
<span class="section-tag">充值到账</span>
<h2 class="section-title">扫码付款10 分钟到账</h2>
<p class="section-desc" style="margin:0 auto;">无需注册,生成或粘贴 Key支付宝扫码备注 Key 即可</p>
<div class="recharge-box">
<!-- Step 1 -->
<div class="rs-step">
<div class="rs-title"><span class="rs-num">1</span>确认你的 API Key</div>
<div class="key-row">
<input type="text" id="keyInput" class="key-input" placeholder="粘贴已有 Key或点右侧自动生成" spellcheck="false" autocomplete="off">
<button class="btn-gen" onclick="genKey()">帮我生成一个</button>
</div>
<div class="balance-line" id="balanceLine">粘贴 Key 后自动查询余额</div>
<div class="save-tip" id="saveTip">
重要:请复制并保存你的 Key充值和使用都需要它。<br>
<span style="color:var(--text-dim);">虾盘 U 盘用户也可以直接用 U 盘里的 Key。</span>
<button class="copy-btn" onclick="copyKey()">复制 Key</button>
</div>
</div>
<!-- Step 2 -->
<div class="rs-step">
<div class="rs-title"><span class="rs-num">2</span>选择充值金额</div>
<div class="amount-row">
<button class="amt-btn" id="amt10" onclick="selectAmt(10)">¥10</button>
<button class="amt-btn" id="amt20" onclick="selectAmt(20)">¥20</button>
<button class="amt-btn" id="amt50" onclick="selectAmt(50)">¥50</button>
<button class="amt-btn" id="amt100" onclick="selectAmt(100)">¥100</button>
</div>
</div>
<!-- Step 3 -->
<div class="rs-step">
<div class="rs-title"><span class="rs-num">3</span>支付宝扫码,付款备注你的 Key</div>
<div class="qr-area">
<img src="alipay-qr.jpg" alt="支付宝收款码" class="qr-img"
onerror="this.style.display='none';document.getElementById('qrPh').style.display='flex'">
<div class="qr-placeholder" id="qrPh" style="display:none">
<div style="font-size:28px">📱</div>
<div>支付宝收款码</div>
<div>图片待上传</div>
</div>
<div class="qr-tips">
<p>扫码付款后,<strong style="color:var(--text)">务必在付款备注填写你的 Key</strong>,收到后 <strong style="color:var(--accent)">10 分钟内</strong> 手动为你充值到账。</p>
<p style="margin-bottom:6px;color:var(--text);">付款备注:</p>
<div class="hint-key" id="hintKey"><em>请先在第一步填写或生成你的 Key</em></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section style="background: var(--bg); border-top: 1px solid var(--border);">
<div class="section-inner" style="text-align:center;">
<span class="section-tag">常见问题</span>
<h2 class="section-title">FAQ</h2>
<div class="faq-list">
<div class="faq-item">
<div class="faq-q">虾盘云和直接用 DeepSeek 官方有什么区别?</div>
<div class="faq-a">虾盘云提供统一入口,人民币充值,多模型一个 Key 搞定,不用单独注册各家账号。配合虾盘 U 盘开箱即用,对国内用户更友好。</div>
</div>
<div class="faq-item">
<div class="faq-q">兼容哪些 AI 工具?</div>
<div class="faq-a">完全兼容 OpenAI 接口,支持 OpenClaw、Cherry Studio、Cursor、Bob 翻译、沉浸式翻译等所有支持自定义 baseUrl 的工具。</div>
</div>
<div class="faq-item">
<div class="faq-q">充值余额会过期吗?</div>
<div class="faq-a">按量充值余额永不过期,用多少扣多少,随时可查余额。</div>
</div>
<div class="faq-item">
<div class="faq-q">付款后多久到账?</div>
<div class="faq-a">人工处理,工作时间 10 分钟内,非工作时间最长 2 小时。到账后可用余额查询接口验证。</div>
</div>
<div class="faq-item">
<div class="faq-q">Key 格式是什么?可以自己生成吗?</div>
<div class="faq-a">格式为 sk-xp- 开头 + 32位随机字符串。点"帮我生成一个"自动生成,也可以粘贴已有的 Key。</div>
</div>
</div>
</div>
</section>
<!-- CONTACT -->
<section id="contact" style="border-top: 1px solid var(--border);">
<div class="section-inner" style="text-align:center;">
<span class="section-tag">联系我们</span>
<h2 class="section-title">有问题?找我</h2>
<p class="section-desc" style="margin: 0 auto 44px;">余额充值、使用问题、U 盘激活码,直接联系</p>
<div style="display:flex; flex-wrap:wrap; gap:40px; justify-content:center; align-items:flex-start;">
<div style="text-align:center;">
<img src="wechat-qr.jpg" alt="微信二维码" style="width:160px;height:160px;border-radius:14px;border:1px solid var(--border);">
<p style="margin-top:10px;color:var(--text-dim);font-size:14px;">微信扫码添加</p>
</div>
<div style="text-align:center;">
<a href="https://xhslink.com/m/6mf7Mq2M5wP" target="_blank" style="display:flex;flex-direction:column;align-items:center;justify-content:center;width:160px;height:160px;border-radius:14px;background:linear-gradient(135deg,#ff2442,#ff6670);text-decoration:none;">
<span style="font-size:40px;">📕</span>
<span style="color:white;font-size:15px;font-weight:700;margin-top:8px;">小红书</span>
<span style="color:rgba(255,255,255,0.8);font-size:12px;margin-top:4px;">8777+ 赞</span>
</a>
<p style="margin-top:10px;color:var(--text-dim);font-size:14px;">小红书关注</p>
</div>
<div style="text-align:left;display:flex;flex-direction:column;gap:14px;justify-content:center;">
<p style="font-size:15px;"><span style="color:var(--text-dim);">邮箱:</span><a href="mailto:hefangsheng@gmail.com" style="color:var(--accent);text-decoration:none;">hefangsheng@gmail.com</a></p>
<p style="font-size:15px;"><span style="color:var(--text-dim);">GitHub</span><a href="https://github.com/dongsheng123132" style="color:var(--accent);text-decoration:none;">dongsheng123132</a></p>
<p style="font-size:15px;"><span style="color:var(--text-dim);">官网:</span><a href="https://u-claw.org" style="color:var(--accent);text-decoration:none;">u-claw.org</a></p>
</div>
</div>
</div>
</section>
<!-- CTA -->
<div class="cta-wrap">
<h2>现在就开始用</h2>
<p>生成 Key扫码充值10 分钟内到账,立刻可用</p>
<a href="#recharge" class="btn btn-primary" style="font-size:17px;padding:14px 40px;">去充值 →</a>
</div>
<footer>
<div class="footer-logo">🦞 虾盘云</div>
<div class="footer-links">
<a href="https://api.u-claw.org">API 控制台</a>
<a href="docs.html">开发文档</a>
<a href="https://u-claw.org">虾盘官网</a>
<a href="mailto:38004547@qq.com">联系我们</a>
</div>
<div class="footer-copy">© 2026 虾盘云 · api.u-claw.org</div>
</footer>
<script>
const API_BASE = 'https://api.u-claw.org/v1';
function genKey() {
const hex = Array.from(crypto.getRandomValues(new Uint8Array(16)))
.map(b => b.toString(16).padStart(2, '0')).join('');
const key = 'sk-xp-' + hex;
document.getElementById('keyInput').value = key;
updateHint(key);
document.getElementById('balanceLine').innerHTML = '<b>已生成新 Key充值后即可使用。</b>';
document.getElementById('saveTip').style.display = 'block';
}
function copyKey() {
const key = document.getElementById('keyInput').value.trim();
if (!key) return;
navigator.clipboard.writeText(key).then(() => {
const btn = document.querySelector('.copy-btn');
btn.textContent = '已复制 ✓';
setTimeout(() => btn.textContent = '复制 Key', 2000);
});
}
function updateHint(key) {
const el = document.getElementById('hintKey');
if (key && key.startsWith('sk-')) {
el.innerHTML = key;
} else {
el.innerHTML = '<em>请先在第一步填写或生成你的 Key</em>';
}
}
function selectAmt(amount) {
[10, 20, 50, 100].forEach(a => {
const el = document.getElementById('amt' + a);
if (el) el.classList.toggle('active', a === amount);
});
document.getElementById('recharge').scrollIntoView({behavior: 'smooth'});
}
async function fetchBalance(key) {
const headers = {Authorization: 'Bearer ' + key};
const today = new Date().toISOString().slice(0,10);
const [subResp, usageResp] = await Promise.all([
fetch(API_BASE + '/dashboard/billing/subscription', {headers}),
fetch(API_BASE + '/dashboard/billing/usage?start_date=2020-01-01&end_date=' + today, {headers})
]);
if (!subResp.ok) throw new Error('Key 尚未激活,请先充值并备注此 Key管理员开通后即可查询。');
const sub = await subResp.json();
const usage = await usageResp.json();
const total = sub.hard_limit_usd || 0;
const used = (usage.total_usage || 0) / 100;
return { total, used, balance: total - used };
}
async function queryBalance(key) {
const line = document.getElementById('balanceLine');
line.textContent = '查询中...';
try {
const {total, used, balance} = await fetchBalance(key);
line.innerHTML = '当前余额:<b>¥' + (balance * 7.2).toFixed(2) + '</b>(已用:¥' + (used * 7.2).toFixed(2) + '';
} catch(e) {
line.textContent = e.message || '网络错误,无法查询余额';
}
}
async function doQueryBalance() {
const key = document.getElementById('balKey').value.trim();
const btn = document.getElementById('queryBtn');
const errEl = document.getElementById('balErr');
const resEl = document.getElementById('balResult');
if (!key || !key.startsWith('sk-')) {
errEl.textContent = '请输入有效的 API Key以 sk- 开头)';
errEl.classList.add('show'); resEl.classList.remove('show'); return;
}
btn.disabled = true; btn.textContent = '查询中...';
errEl.classList.remove('show'); resEl.classList.remove('show');
try {
const {total, used, balance} = await fetchBalance(key);
document.getElementById('balNum').textContent = '¥' + (balance * 7.2).toFixed(2);
document.getElementById('balTotal').textContent = '¥' + (total * 7.2).toFixed(2);
document.getElementById('balUsed').textContent = '¥' + (used * 7.2).toFixed(2);
document.getElementById('balUpdated').textContent = new Date().toLocaleTimeString('zh-CN');
resEl.classList.add('show');
} catch(e) {
errEl.textContent = e.message || '网络错误,请稍后重试';
errEl.classList.add('show');
} finally {
btn.disabled = false; btn.textContent = '查询余额';
}
}
document.getElementById('balKey').addEventListener('keydown', function(e) {
if (e.key === 'Enter') doQueryBalance();
});
document.getElementById('keyInput').addEventListener('input', function() {
const key = this.value.trim();
updateHint(key);
if (key.length > 10) {
clearTimeout(this._t);
this._t = setTimeout(() => queryBalance(key), 800);
} else {
document.getElementById('balanceLine').textContent = '粘贴 Key 后自动查询余额';
}
});
</script>
</body>
</html>