HPDC 平台快速入门

欢迎来到 HPDC 开发者中心,了解 Hopo 生态一站式支付、电商与身份认证服务。

HPDC (HopoDevelopClub) 是 Hopo 生态专为开发者打造的开放技术互联平台,支持 Shopo 三方聚合支付、Shopo 开放电商网关 以及 HopoAuth 统一身份认证 (OIDC SSO)。
Shopo 三方聚合支付
提供秒级创建收银台、订单状态查询、退款及带 HMAC 签名的 Webhook 异步回调能力。
Shopo 商家开放 API
商品发布与批量检索、商户订单处理及多仓库存毫秒级同步联动。
HopoAuth 统一认证 (SSO)
基于国际标准 OIDC / OAuth 2.0 PKCE 架构,实现全生态跨子域单点登录与 AQL 校验。
AQL 管理员特权校验平台
在线申请专属 AQL 密钥凭证,实现登录即自动授予目标站点原生最高 Admin 权限。

接入标准四步流程

  1. 获取凭证:在 HopoAuth & AQL 凭证申请中心 申请获得 Client ID、Client Secret 与 AQL Key / Secret。
  2. 环境准备:根据业务语言下载对应的 HPDC SDK 工具包(支持 Node.js、Python、Java 等)。
  3. 沙盒测试:使用测试端点与 HMAC-SHA256 在线签名工具完成接口连通与数据校验。
  4. 上线发布:将生产 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 权限。

核心判别特征:不管用户是谁,只要在 HopoAuth 中的角色为管理员 (`is_admin === 1`),返回的动态密文在第 7 位 (index 6) 为 'a' 且第 15 位 (index 14) 为 '8',站点端即可完成识别与角色提权。
HopoSys 前后端门禁与鉴权代码 (Node.js / Express)
// 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)
计算签名示例 (JavaScript)
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');
}
POST https://dev.hopostudio.xyz/api/v1/payments/checkout_sessions

创建支付收银台会话

调用此接口生成带有唯一 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:// 开头)
响应结果示例 (HTTP 200 OK)
{
  "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"
  }
}
GET https://dev.hopostudio.xyz/api/v1/payments/orders/{out_trade_no}

查询支付订单状态

根据商户订单号 out_trade_no 主动向网关查询支付单的最新实时交易状态。

响应结果示例 (HTTP 200 OK)
{
  "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"
  }
}
POST https://dev.hopostudio.xyz/api/v1/payments/refunds

申请订单退款

针对已成功支付的订单发起全额或部分退款,资金将原路返回给买家。

请求体示例 (JSON)
{
  "out_trade_no": "ORDER_20260804_0091",
  "out_refund_no": "REFUND_20260810_001",
  "refund_amount": 29900,
  "refund_reason": "用户申请商品退货"
}
POST https://dev.hopostudio.xyz/api/v1/payments/cancel

关闭 / 撤销支付单

对于未支付或超时的支付会话执行主动关闭,防止用户重复付款。

{ "out_trade_no": "ORDER_20260804_0091", "reason": "订单已超时关闭" }
HOOK 商户自定义 Notify URL (https://your-domain.com/webhook/payment)

Webhook 异步通知与验签规范

当用户完成支付后,网关会通过 POST 请求向商户提供的 notify_url 发送异步回调。

重要:商户接收到通知后,必须计算并对比 X-Shopo-Signature 确保报文未被篡改,处理成功后需返回 HTTP 200 及 {"code":"SUCCESS"}。
GET https://dev.hopostudio.xyz/api/v1/merchant/products

商品列表分页查询

查询商户店铺下的在线商品库及库存规格。

鉴权 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)和敏感销量数据不对外透出。

POST https://dev.hopostudio.xyz/api/v1/merchant/products

发布与更新商品

创建新商品(不传 product_id)或更新现有商品(传入 product_id)。

请求参数 Body (JSON)

product_id更新时必填,新建时不传
name商品名称 (必填)
price商品价格(分) (必填)
stock初始库存 (必填)
description商品详情描述

安全限制:不可通过此接口提交 sales_count(销量)、is_verified(审核状态) 等只读及系统级属性,否则请求将被安全网关拦截并返回 403。

POST https://dev.hopostudio.xyz/api/v1/merchant/orders

创建商户电商订单

在 Shopo 电商中控创建订单并锁定对应商品库存。创建完成后可通过 pay-create 接口拉起收银台。

请求参数 Body (JSON)

out_trade_no商户系统内部订单号 (必填)
items包含 product_id 和 quantity 的数组 (必填)
buyer_id买家唯一标识 (UID)

安全限制:此接口仅负责生成未支付(UNPAID)的业务单及库存锁定。不可在此接口直接提交 payment_status=PAID,支付状态只能由 Shopo 支付网关 Webhook 回调驱动流转。

PUT https://dev.hopostudio.xyz/api/v1/merchant/inventory

库存联动同步接口

支持多仓 ERP 实时增量或全量同步 SKU 库存数量。建议配合并发锁使用以保证最终一致性。

请求参数 Body (JSON)

product_id商品唯一标识 (必填)
sync_mode可选 INCREMENT(增减量) 或 OVERRIDE(全量覆盖)
stock_value对应的数值(可为负数)

安全限制:库存调整强依赖事务,禁止单次将 stock_value 设为超限数值,若检测到异常的超额暴增将被风控系统拒绝。

GET https://auth.hopostudio.xyz/.well-known/openid-configuration

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"]
}
GET https://auth.hopostudio.xyz/oidc/authorize

发起 OAuth 2.0 / OIDC 统一授权流

引导用户浏览器重定向至 HopoAuth 统一登录收银台,完成后将携带授权码 code 重定向回你的 redirect_uri。

Query 参数

参数 必填 说明
client_id 是 已注册的应用 Client ID
redirect_uri 是 回调地址,必须与控制台注册的地址完全匹配
response_type 是 固定传 code
scope 否 请求的权限范围,例如 openid profile email
state 否 透传参数,防 CSRF 攻击
code_challenge 否 PKCE 安全参数
prompt 否 可选 login 强制重新登录
POST https://auth.hopostudio.xyz/oidc/token

授权码兑换 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..."
}
GET https://auth.hopostudio.xyz/oidc/userinfo

获取用户基本信息与 AQL 校验位

携带 Bearer Access Token 获取当前登录用户的 Profile 及 AQL 特权密文。

请求 Header

Authorization: Bearer <access_token>

响应字段 (Profile + AQL)

sub用户唯一标识 (UID)
usernameHopo 平台账号
nickname用户昵称
email已验证邮箱 (如已绑定)
is_admin布尔值,是否具有全平台管理权限
aql_hashAQL (Admin Query Language) 安全校验哈希
POST https://auth.hopostudio.xyz/api/auth/logout

统一撤销令牌与全局会话注销

注销全局 SSO 会话 Cookie 并吊销当前发放的授权令牌。可帮助第三方系统实现单点登出 (Single Sign-Out)。

此端点只需发送 POST 请求,如带有客户端 Cookie 即可销毁云端 Session,客户端也可直接丢弃 Access Token。

全局报错状态码字典速查

HTTP Code 错误码 (Error) 释义与解决方案
400invalid_request请求参数缺失或格式不正确
401invalid_signatureHMAC 签名计算错误或已过期
403forbidden_ip发起调用的客户端 IP 不在白名单中
404order_not_found订单号或商户资源不存在
500server_error服务内部异常,请联系技术支持

在线 HMAC-SHA256 签名调试计算器

HPDC 官方多语言 SDK 工具包

官方 SDK 深度封装了 HopoAuth 统一认证 (OIDC SSO)、⚡ AQL 管理员特权校验、Shopo 聚合支付 以及 HMAC 异步通知自动验签中间件。

Node.js SDK
npm install @hopostudio/hpdc-sdk
Python SDK
pip install hopo-hpdc
Java SDK
com.hopostudio:hpdc-java-sdk:1.2.0
Go SDK
go get github.com/hopostudio/hpdc-go

Node.js 快速接入示例 (HopoAuth + ⚡ AQL 自动提权)

auth-example.js
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 自动验签示例

payment-example.js
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 一键复用 System Prompt 提示词规范

直接复制下方规范发给任何 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 快速引入

HTML Header 引入
<!-- 引入 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” 即可一键获取矢量代码:

Hopo "H" 官方商标
Key 密钥凭证
⚡ AQL 闪电特权
🛡️ SYS 安全盾牌
Shopo 聚合支付
Shopo 商家电商
SDK 工具箱
Lock 权限锁

3. Hopo 核心组件 HTML/CSS 快速片段

components-snippets.html
<!-- 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>