会英商务 · 帮助中心

共 288 篇 · 4 级目录

首页/开放接口文档

开放接口文档

开放平台接口文档

\\\\n

本文说明对外接口(OpenAPI 3.0)的接入方式、签名规则、端点清单与错误码。所有内容均取自本站代码实读(app/middleware/OpenApiAuth.php、app/controller/openapi/Doc.php、route/app.php)。

\\\\n\\\\n

1. 接入地址

\\\\n\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n
项目值
接口基址https://www.huiyingclub.com/openapi/v1
实时契约(YAML)/openapi/v1/doc(免鉴权)
健康检查/openapi/v1/health(免鉴权)
接口版本仅 v1(Api-Version 请求头或 version 参数协商)
\\\\n

已确认:契约 YAML 内 servers.url 当前已指向本站 https://www.huiyingclub.com/openapi/v1(r164 已完成由物业站 web.zhsqzfxt.com 迁移后的地址修正)。

\\\\n\\\\n

2. 鉴权与签名

\\\\n

2.1 公共参数

\\\\n\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n
参数位置说明
appidquery / body应用标识,由平台分配
timestampquery / bodyUnix 秒级时间戳,与服务端偏差不得超过 300 秒
noncequery / body随机串,5 分钟内不可重复(防重放)
sign_typequery / bodyHMAC-SHA256(默认)或 RSA-SHA256
encrypt_typequery / body仅支持 none(AES 预留未实现)
X-Sign请求头签名值。不要放进 URL,避免签名进入 nginx 访问日志
\\\\n\\\\n

2.2 待签串与签名计算

\\\\n
    \\\\n\\\\t
  1. 收集全部请求参数(GET query + POST body);
  2. \\\\n\\\\t
  3. 剔除 sign,并剔除值为空('' / null)的参数;
  4. \\\\n\\\\t
  5. 按参数名升序排序(ksort);
  6. \\\\n\\\\t
  7. 做 http_build_query 得到待签串;
  8. \\\\n\\\\t
  9. 计算签名:\\\\n\\\\t\\\\t
      \\\\n\\\\t\\\\t\\\\t
    • HMAC-SHA256:hash_hmac('sha256', 待签串, appsecret),取小写十六进制;
    • \\\\n\\\\t\\\\t\\\\t
    • RSA-SHA256:对待签串做 SHA256 私钥签名后 base64,服务端用应用公钥 openssl_verify 校验。
    • \\\\n\\\\t\\\\t
    \\\\n\\\\t
  10. \\\\n
\\\\n\\\\n

2.3 安全约束

\\\\n
    \\\\n\\\\t
  • 时间戳窗口:±300 秒(OpenApiAuth::TS_DIFF)
  • \\\\n\\\\t
  • nonce 防重放窗口:300 秒(NONCE_TTL)
  • \\\\n\\\\t
  • 限流:100 次/分钟/应用(RATE_LIMIT)
  • \\\\n\\\\t
  • 支持按应用配置 IP 白名单
  • \\\\n\\\\t
  • 接口异常不会返回 HTTP 500,统一以 HTTP 200 + code 信封返回
  • \\\\n
\\\\n\\\\n

3. 免鉴权端点

\\\\n

以下路径前缀在 OpenApiAuth::PUBLIC_PREFIX 中配置为免签名校验:health、oauth/authorize、oauth/token、oauth/refresh、doc、metrics。

路由开放状态:health 与 doc 已在 route/app.php 显式注册,当前可直接访问;oauth/authorize、oauth/token、oauth/refresh、metrics 已注册路由并对外可达(GET 返回实时计数 rate_limited/auth_fail/exception),OAuth2 其余端点(token/refresh/revoke/authorize)路由亦已打通,详见第 4 节状态列。

\\\\n\\\\n

4. 端点清单

\\\\n\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n
方法路径说明主要参数状态(2026-09-20 复测,数据层已就绪)
GET/health健康检查—已开放(免鉴权)
GET/member/info会员信息mid(必填,会员ID)已开放(需签名)
GET/member/level/list会员等级列表—已开放(需签名)
GET/mall/category/list商城分类列表—已开放(需签名)
GET/oauth/authorize获取授权码(OAuth2 授权码模式)client_id、redirect_uri,可选 scope/state/code_challenge已开放(可达)
POST/oauth/token获取访问令牌client_id、client_secret、grant_type、code 或 refresh_token已开放(可达)
POST/oauth/refresh刷新访问令牌同 /oauth/token已开放(可达)
POST/oauth/revoke吊销令牌(RFC 7009)token 或 access_token 或 Authorization: Bearer已开放(需签名)
GET/metrics运行指标(限流/鉴权失败/异常计数)—已开放(可达)
\\\\n\\\\n

数据层说明:开放平台所需的 5 张数据表(ddwx_openapi_app、ddwx_openapi_oauth_code、ddwx_openapi_oauth_token、ddwx_openapi_fee_order_rel、ddwx_openapi_log)已于 2026-09-20 在生产库创建,并初始化了运营站应用凭证。上方各签名 / OAuth2 端点现已返回真实业务响应(不再因缺表而 500)。联调示例:GET /oauth/authorize → 取 authorization_code → POST /oauth/token(grant_type=authorization_code)换取 access_token / refresh_token。

\\\\n\\\\n

5. OAuth2 Bearer 方式

\\\\n

除签名外,也支持在请求头携带 Authorization: Bearer <access_token>,服务端在 ddwx_openapi_oauth_token 表中校验令牌有效性。

\\\\n\\\\n

6. 错误码

\\\\n\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n\\\\t\\\\n
code含义
0成功(响应信封 code 字段;HTTP 状态恒为 200)
1001缺少签名公共参数 / X-Sign 缺失 / 版本不支持 / 加密方式不支持 / 缺少必填业务参数
1002签名错误,或应用未配置 RSA 公钥 / client_secret 错误
1003时间戳无效或已过期
1004nonce 重复,疑似重放攻击
1005appid 不存在
1006应用已被禁用
1007IP 不在白名单
1009令牌无效或已过期(OAuth2 体系)
2001业务对象不存在(会员 / 地址 / 活动 / 返现明细等,具体见 data.msg)
3001业务处理失败(具体原因见 data.msg)
429请求过于频繁(触发限流)
\\\\n\\\\n

7. 响应结构

\\\\n
{\\\\n  "code": 0,\\\\n  "msg": "success",\\\\n  "data": { }\\\\n}
\\\\n\\n\n
会英商务 · 帮助中心 · 平台运营与商城系统操作手册
内容源自平台官方操作手册,与线上帮助中心同步更新 · 前往线上帮助中心 · 返回首页