HPDC 平台快速入门
欢迎来到 HPDC 开发者中心,了解 Hopo 生态一站式支付、电商与身份认证服务。
接入标准四步流程
- 获取凭证:在 HopoAuth & AQL 凭证申请中心 申请获得
Client ID、Client Secret与AQL Key / Secret。 - 环境准备:根据业务语言下载对应的 HPDC SDK 工具包(支持 Node.js、Python、Java 等)。
- 沙盒测试:使用测试端点与 HMAC-SHA256 在线签名工具完成接口连通与数据校验。
- 上线发布:将生产 API 域名切换为
https://dev.hopostudio.xyz即可正式投入运营。
HopoAuth 客户端与 HopoAQL 凭证申请管理中心
在此统一申请并管理您的 Hopo 生态应用凭证(包含 HopoAuth OAuth 2.0 Client 凭据与 HopoAQL 管理员特权校验密钥)。
需使用 HopoAuth 账号自行登录
使用 HopoAuth 账号完成认证(SYS 类客户端 dev_hopo),即可申请与管理全生态凭证。
AQL 管理员快速登录校验规范与门禁机制
AQL(Admin Quickly Login)是 Hopo 生态链标准协议:当系统管理员登录接入了 AQL 的站点时,自动授予该站点最高原生 Admin 权限。
'a' 且第 15 位 (index 14) 为 '8',站点端即可完成识别与角色提权。
// 1. 项目本地配置 config.js
const appConfig = {
aql_support: true, // 门禁开关:只有开启且配置了 aql_api 时才执行 AQL
aql_api_key: "aql_live_5f273b692244",
aql_secret: "sec_aql_c52b50c178a25561351acea0ce3dc30c"
};
// 2. Web 登录回调处理
function handleHopoAuthCallback(userData) {
// 门禁判断:若项目未开启 AQL 支持,直接跳过
if (!appConfig.aql_support || !appConfig.aql_api_key) {
return { role: 'user', username: userData.username };
}
// 动态提取 AQL 校验 Token
const aqlToken = userData['beBPqGduwTpzrbhp'];
// 管理员角色判定:第 7 位为 'a' 且 第 15 位为 '8'
if (aqlToken && aqlToken.charAt(6) === 'a' && aqlToken.charAt(14) === '8') {
console.log("[AQL 触发] 识别到管理员账号,自动赋予该站点原生 Admin 权限!");
return { role: 'admin', username: userData.username, is_admin: true };
}
return { role: 'user', username: userData.username };
}
API Key 密钥鉴权与 HMAC-SHA256 签名规范
HPDC 开放平台的所有 RESTful 请求均需在 HTTP 请求头中携带合法的身份鉴权信息。
| Header 名称 | 类型 | 是否必填 | 说明与示例 |
|---|---|---|---|
X-Shopo-Api-Key |
String | 必填 | 商户 API Key(例:hop_live_981273918237) |
X-Shopo-Signature |
String | 必填 | HMAC-SHA256 签名散列串(使用 API Secret 签名) |
X-Shopo-Timestamp |
Integer | 必填 | 当前 Unix 时间戳(秒),防重放攻击(有效期 ±300s) |
const crypto = require('crypto');
function generateSignature(secretKey, timestamp, requestBody) {
const rawPayload = `${timestamp}.${typeof requestBody === 'string' ? requestBody : JSON.stringify(requestBody)}`;
return crypto.createHmac('sha256', secretKey).update(rawPayload).digest('hex');
}
创建支付收银台会话
调用此接口生成带有唯一 session_id 的收银台链接,引导用户跳转完成付款。
请求参数 (Body JSON)
| 字段名 | 类型 | 必填 | 描述 |
|---|---|---|---|
merchant_id |
String | 必填 | 商户唯一标识号(例:mer_shopo_8829) |
out_trade_no |
String | 必填 | 商户系统内部唯一订单号(32位以内) |
total_amount |
Integer | 必填 | 支付金额(单位:分,例:29900 表示 299.00 元) |
currency |
String | 必填 | 三位货币代码,默认 CNY 或 USD |
notify_url |
String | 必填 | 支付成功后异步 Webhook 接收地址(须以 https:// 开头) |
{
"code": 200,
"status": "success",
"data": {
"session_id": "cs_pay_998123719283",
"out_trade_no": "ORDER_20260804_0091",
"payment_url": "https://pay.hopostudio.xyz/checkout/cs_pay_998123719283",
"total_amount": 29900,
"currency": "CNY",
"expires_at": "2026-08-10T12:00:00Z"
}
}
查询支付订单状态
根据商户订单号 out_trade_no 主动向网关查询支付单的最新实时交易状态。
{
"code": 200,
"status": "success",
"data": {
"out_trade_no": "ORDER_20260804_0091",
"trade_state": "SUCCESS",
"transaction_id": "hop_tx_881923019283",
"total_amount": 29900,
"paid_at": "2026-08-10T09:45:12Z",
"payment_method": "WECHAT_PAY"
}
}
申请订单退款
针对已成功支付的订单发起全额或部分退款,资金将原路返回给买家。
{
"out_trade_no": "ORDER_20260804_0091",
"out_refund_no": "REFUND_20260810_001",
"refund_amount": 29900,
"refund_reason": "用户申请商品退货"
}
关闭 / 撤销支付单
对于未支付或超时的支付会话执行主动关闭,防止用户重复付款。
{ "out_trade_no": "ORDER_20260804_0091", "reason": "订单已超时关闭" }
Webhook 异步通知与验签规范
当用户完成支付后,网关会通过 POST 请求向商户提供的 notify_url 发送异步回调。
X-Shopo-Signature 确保报文未被篡改,处理成功后需返回 HTTP 200 及 {"code":"SUCCESS"}。
商品列表分页查询
查询商户店铺下的在线商品库及库存规格。
鉴权 Headers (必需)
X-Shopo-Api-Key: 商户公钥X-Shopo-Timestamp: UNIX 时间戳(秒)X-Shopo-Signature: HMAC-SHA256 签名
响应示例
{
"code": "SUCCESS",
"data": {
"total": 42,
"list": [
{
"product_id": "prod_1001",
"name": "Hopo Developer Pro 会员",
"price": 19900,
"stock": 999,
"status": "active",
"created_at": 1691234567
}
]
}
}
注:系统内部审计字段(如 audit_status, merchant_db_id)和敏感销量数据不对外透出。
发布与更新商品
创建新商品(不传 product_id)或更新现有商品(传入 product_id)。
请求参数 Body (JSON)
product_id | 更新时必填,新建时不传 |
name | 商品名称 (必填) |
price | 商品价格(分) (必填) |
stock | 初始库存 (必填) |
description | 商品详情描述 |
安全限制:不可通过此接口提交 sales_count(销量)、is_verified(审核状态) 等只读及系统级属性,否则请求将被安全网关拦截并返回 403。
创建商户电商订单
在 Shopo 电商中控创建订单并锁定对应商品库存。创建完成后可通过 pay-create 接口拉起收银台。
请求参数 Body (JSON)
out_trade_no | 商户系统内部订单号 (必填) |
items | 包含 product_id 和 quantity 的数组 (必填) |
buyer_id | 买家唯一标识 (UID) |
安全限制:此接口仅负责生成未支付(UNPAID)的业务单及库存锁定。不可在此接口直接提交 payment_status=PAID,支付状态只能由 Shopo 支付网关 Webhook 回调驱动流转。
库存联动同步接口
支持多仓 ERP 实时增量或全量同步 SKU 库存数量。建议配合并发锁使用以保证最终一致性。
请求参数 Body (JSON)
product_id | 商品唯一标识 (必填) |
sync_mode | 可选 INCREMENT(增减量) 或 OVERRIDE(全量覆盖) |
stock_value | 对应的数值(可为负数) |
安全限制:库存调整强依赖事务,禁止单次将 stock_value 设为超限数值,若检测到异常的超额暴增将被风控系统拒绝。
OpenID 发现端点 (OIDC Discovery)
获取 HopoAuth 身份认证服务标准 OIDC 终结点元数据配置。第三方客户端可通过此接口自动发现鉴权端点和支持的参数。
响应参数说明
{
"issuer": "https://auth.hopostudio.xyz",
"authorization_endpoint": "https://auth.hopostudio.xyz/oidc/authorize",
"token_endpoint": "https://auth.hopostudio.xyz/oidc/token",
"userinfo_endpoint": "https://auth.hopostudio.xyz/oidc/userinfo",
"jwks_uri": "https://auth.hopostudio.xyz/oidc/jwks",
"response_types_supported": ["code"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256"],
"code_challenge_methods_supported": ["S256"]
}
授权码兑换 Token (Code to Token)
通过授权码 Code 换取 Access Token 及 ID Token (RS256 JWT)。
Body 参数 (application/json)
grant_type | 是 | 固定为 authorization_code |
code | 是 | 上一步获取的授权码 |
client_id | 是 | 应用 ID |
redirect_uri | 是 | 必须与获取 code 时一致 |
client_secret | 否 | 服务端应用必填,与 code_verifier 二选一 |
code_verifier | 否 | PKCE 客户端必填,与 client_secret 二选一 |
响应示例
{
"access_token": "HPA_xxx...",
"token_type": "Bearer",
"expires_in": 3600,
"id_token": "eyJhbGciOiJSUzI1NiI..."
}
获取用户基本信息与 AQL 校验位
携带 Bearer Access Token 获取当前登录用户的 Profile 及 AQL 特权密文。
请求 Header
Authorization: Bearer <access_token>
响应字段 (Profile + AQL)
sub | 用户唯一标识 (UID) |
username | Hopo 平台账号 |
nickname | 用户昵称 |
email | 已验证邮箱 (如已绑定) |
is_admin | 布尔值,是否具有全平台管理权限 |
aql_hash | AQL (Admin Query Language) 安全校验哈希 |
统一撤销令牌与全局会话注销
注销全局 SSO 会话 Cookie 并吊销当前发放的授权令牌。可帮助第三方系统实现单点登出 (Single Sign-Out)。
此端点只需发送 POST 请求,如带有客户端 Cookie 即可销毁云端 Session,客户端也可直接丢弃 Access Token。
全局报错状态码字典速查
| HTTP Code | 错误码 (Error) | 释义与解决方案 |
|---|---|---|
400 | invalid_request | 请求参数缺失或格式不正确 |
401 | invalid_signature | HMAC 签名计算错误或已过期 |
403 | forbidden_ip | 发起调用的客户端 IP 不在白名单中 |
404 | order_not_found | 订单号或商户资源不存在 |
500 | server_error | 服务内部异常,请联系技术支持 |
在线 HMAC-SHA256 签名调试计算器
HPDC 官方多语言 SDK 工具包
官方 SDK 深度封装了 HopoAuth 统一认证 (OIDC SSO)、⚡ AQL 管理员特权校验、Shopo 聚合支付 以及 HMAC 异步通知自动验签中间件。
npm install @hopostudio/hpdc-sdkpip install hopo-hpdccom.hopostudio:hpdc-java-sdk:1.2.0go get github.com/hopostudio/hpdc-goNode.js 快速接入示例 (HopoAuth + ⚡ AQL 自动提权)
const { HopoAuthClient } = require('@hopostudio/hpdc-sdk');
const hopo = new HopoAuthClient({
clientId: 'vps_hopo',
clientSecret: 'efa65993b7d6934dd4c123de',
aqlApiKey: 'aql_live_5f273b692244',
aqlSecret: 'sec_aql_c52b50c178a25561351acea0ce3dc30c'
});
// 1. 发起登录
app.get('/login', (req, res) => {
const loginUrl = hopo.getAuthorizationUrl({
redirectUri: 'https://vps.hopostudio.xyz/auth/callback'
});
res.redirect(loginUrl);
});
// 2. 回调处理与 AQL 自动识别
app.get('/auth/callback', async (req, res) => {
const { user, isAdminByAql } = await hopo.handleCallback(req.query.code, 'https://vps.hopostudio.xyz/auth/callback');
req.session.user = user;
req.session.role = isAdminByAql ? 'admin' : 'user';
res.redirect('/dashboard');
});
Shopo 聚合支付与 Webhook 自动验签示例
const { ShopoClient } = require('@hopostudio/hpdc-sdk');
const shopo = new ShopoClient({
apiKey: 'hop_live_981273918237',
apiSecret: 'sec_live_abcdef123456'
});
// 1. 创建支付会话
const session = await shopo.createPaymentSession({
merchantId: 'mer_shopo_8829',
outTradeNo: 'ORDER_20260810_001',
totalAmount: 29900,
notifyUrl: 'https://myshop.com/api/pay/webhook'
});
// 2. Webhook 自动防重放与 HMAC-SHA256 验签中间件
app.post('/api/pay/webhook', shopo.webhookMiddleware(async (event) => {
console.log('⚡ 支付成功回调:', event.out_trade_no);
// 处理业务订单发货...
}));
🎨 Hopo Design System (HDS) 视觉方案与设计规范
基于 Google Material 3 圆矩美学 (Squircle) + Hopo 生态专属 5 大视觉特征 打造的标准 UI 体系,支持其他 AI 与开发者一键复用。
直接复制下方规范发给任何 AI/LLM(如 ChatGPT、Claude、DeepSeek),即可让其直接生成 100% 纯正的 Hopo 风格 UI:
【Hopo Design System (HDS) 前端设计规范】 你现在是 Hopo 生态的前端架构师。编写所有 UI 时必须严格遵守 Hopo 专属设计美学: 1. 视觉基底:采用 Google Material 3 极简白蓝配色。主色使用 Hopo Blue (#1a73e8),背景浅灰 (#f8fafd),边框 (#dadce0)。背景必须叠加 20px 点阵微网格:background-image: radial-gradient(#dadce0 1.2px, transparent 1.2px); background-size: 20px 20px; 2. 超椭圆阶梯圆角 (Squircle Radii):核心卡片 border-radius: 24px 或 20px;输入框 14px;按钮与导航链接采用全胶囊 pill (border-radius: 9999px); 3. 专属特征: - 顶部贯穿 3px 极光流光线:background: linear-gradient(90deg, #1a73e8 0%, #00c6ff 50%, #34a853 100%); - 卡片磨砂玻璃与悬浮蓝光:background: rgba(255,255,255,0.94); backdrop-filter: blur(12px); hover 时 translateY(-3px) 并带有 box-shadow: 0 12px 28px -6px rgba(26,115,232,0.16); - 代码框 IDE 视窗化:采用深色背景 (#1e293b),顶栏左侧必须带有 Mac 经典红黄绿三色小圆点 (● ● ●); - 绝对禁止使用生硬 Emoji,所有图标必须采用 Google Material 风格的高清 inline SVG 图标; - 包含官方蓝底白字 'H' 圆矩 Logo ()。
1. 样式库 CDN 快速引入
<!-- 引入 Hopo 官方字体与 UI 样式库 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://dev.hopostudio.xyz/css/hopo-design.css">
<!-- 为 body 添加 Hopo 专属画布纹理 -->
<body class="hopo-canvas">
<div class="hopo-horizon-bar"></div>
...
</body>
2. Hopo 官方高精矢量 SVG 图标大全
以下为 Hopo 生态认证的官方高清矢量图标,点击任意图标下方的 “复制 SVG” 即可一键获取矢量代码:
3. Hopo 核心组件 HTML/CSS 快速片段
<!-- 1. Hopo 磨砂悬浮大卡片 -->
<div class="hopo-card">
<h3>卡片主标题</h3>
<p>内容说明段落,支持自适应 Google Material 排版。</p>
<div style="margin-top:16px;">
<span class="hopo-badge-sys">🛡️ SYS 生态官方</span>
<span class="hopo-badge-aql">⚡ AQL 已启用</span>
</div>
</div>
<!-- 2. Hopo 胶囊主操作按钮 -->
<button class="hopo-btn-primary">
<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/></svg>
创建新应用
</button>
<button class="hopo-btn-outline">次级操作</button>
<!-- 3. Hopo 终端代码视窗 (带 Mac 三色圆点) -->
<div class="hopo-code-window">
<div class="hopo-code-header">
<div>
<div class="hopo-mac-dots">
<span class="hopo-dot hopo-dot-red"></span>
<span class="hopo-dot hopo-dot-yellow"></span>
<span class="hopo-dot hopo-dot-green"></span>
</div>
<span>terminal.sh</span>
</div>
<span style="color:#94a3b8; font-size:11px;">BASH</span>
</div>
<pre class="code-content">npm install @hopostudio/hpdc-sdk</pre>
</div>