跳转至

微信服务(WeixinServiceController)

提供 KMS 知识管理模块「微信服务域」的能力:获取微信 JSAPI 签名配置(供前端调用微信 JSSDK)。本控制器共 1 个端点,响应非统一 Resource,直接返回 Map<String, Object>,键为 status/message/data

  • 接口类型:REST 资源(@RestController(value="kms-weixin-service-controller"),类级 @Scope(SCOPE_PROTOTYPE),类级 @JsonSerialize(include=NON_NULL)
  • 基址${myapps.context-path.kms:}/weixin/jsapi(类级 @RequestMapping 仅声明单一前缀)
  • Tag:kms 微信服务模块

公共说明

  • 鉴权(据源码 KmsMvcConfig + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*)。本控制器路径 /weixin/jsapi/** 不在 KmsSecurityFilter.isExcludeURI 的豁免名单内。过滤器调用 Security.getUserIdFromToken(request),取不到用户则返回 HTTP 401因此本端点需 accessToken,可通过以下任一方式传递:query 参数 accessToken、query 参数 access_token(移动端)、请求头 accessToken、Cookie accessToken、请求头 Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。
  • 类继承(据源码):本控制器**不**继承 AbstractBaseController,因此不享其 Resource 包装器与全局异常处理器;端点自行 try/catch,将异常吞掉后返回失败结果(status=0)。
  • 执行用户:端点调用 AuthTimeServiceManager.getWebUser(request) 取当前 Web 用户(经鉴权时效校验),并以其 getDomainid() 作为企业域向微信代理请求 JSAPI 配置。
  • 响应结构非统一 Resource。HTTP 200,body 为 Map<String, Object>,由 addActionResult 构造,键为 status(成功 1/失败 0)、message(成功 "ok"/失败 "error")、data(成功时含 JSAPI 配置;@JsonSerialize(NON_NULL) 过滤 null 字段,故失败时无 data 键)。
  • 请求方式(据源码):方法级 @RequestMapping(value="/getJsapiConfig.action") 未指定 HTTP method,按 Spring 默认接受**所有** HTTP 方法(GET/POST 等)。
  • 参数绑定:通过 ParamsTable.convertHTTP(request) 解析 query/form 参数,参数名为 _url_appid

1. 获取 JSAPI 配置

获取微信 JSAPI 签名配置(据 @Operation.summary「获取JSAPI配置」)。底层调用 WeixinServiceProxy.getJsapiConfig(url, appId, domainid),按当前用户企业域返回签名所需的 appIdtimestampnonceStrsignature 等字段。

  • 接口类型:REST 资源
  • 请求方式:任意(方法级 @RequestMapping 未限定 method,GET/POST 均可)
  • 请求路径/getJsapiConfig.action(完整:{kms-context}/weixin/jsapi/getJsapiConfig.action
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms 微信服务模块

请求参数

参数名 位置 类型 必填 说明
_url query string 当前页面 URL(用于签名校验,由前端传入)
_appid query string 微信 appId(多公众号场景下指定,缺省由代理按域解析)

请求示例

GET /weixin/jsapi/getJsapiConfig.action?_url=https%3A%2F%2Fexample.com%2Fkms&accessToken=__TOKEN__ HTTP/1.1

响应

结构非统一 Resource。HTTP 200,body 为 Map<String, Object>,字段如下:

字段 类型 说明
status int 处理结果,成功 1,失败 0
message string 结果消息,成功 "ok",失败 "error"
data object 成功时为微信 JSAPI 配置 Map<String, String>(含 appId/timestamp/nonceStr/signature/jsApiList 等,由 WeixinServiceProxy 决定具体字段);失败时无此键(@JsonSerialize(NON_NULL)

成功示例

{
  "status": 1,
  "message": "ok",
  "data": {
    "appId": "__WXAPPID__",
    "timestamp": "1700000000",
    "nonceStr": "abc123",
    "signature": "__SIGNATURE__"
  }
}

失败示例(内部异常被吞)

{
  "status": 0,
  "message": "error"
}

注:失败时无 data 键(@JsonSerialize(Inclusion.NON_NULL) 过滤 null 值);源码 catch 块仅 e.printStackTrace(),未对外暴露异常消息。