微信服务(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+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*)。本控制器路径/weixin/jsapi/**不在KmsSecurityFilter.isExcludeURI的豁免名单内。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401。因此本端点需 accessToken,可通过以下任一方式传递:query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头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),按当前用户企业域返回签名所需的 appId、timestamp、nonceStr、signature 等字段。
- 接口类型: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__"
}
}
失败示例(内部异常被吞):
注:失败时无
data键(@JsonSerialize(Inclusion.NON_NULL)过滤null值);源码catch块仅e.printStackTrace(),未对外暴露异常消息。