Skip to content

站内消息 ​

登录会员的站内消息列表、未读统计、详情查看、已读标记与删除清空。消息数据范围固定为当前登录会员,删除与清空均为软删除,管理端仍可追溯。

小程序订阅消息完整流程(全流程可配置,无需改代码):

  1. 管理端「消息中心-消息模板」配置各小程序渠道的订阅消息模板ID(miniapp_* JSON 的 template_id)与启用渠道;
  2. 用户端业务/插件通过通用函数 useSubscribeMessage 发起订阅(内部自动调用「获取可订阅模板」接口并调起平台订阅授权),见下方用户端接入;
  3. 用户同意后客户端自动调用「上报订阅结果」接口落库,按「会员+渠道+模板」累加剩余可推送次数(一次性订阅:同意一次可下发一条);
  4. 管理端发送消息时按模板启用的渠道执行推送:推送前先查订阅记录预检,未订阅或次数用尽直接记录失败原因、不再请求平台;推送成功后剩余次数扣减一。

订阅发起不绑定任何页面:订单、支付、活动等业务代码和插件在关键操作前调用通用函数即可,模板增减完全由管理端配置驱动。

获取可订阅模板 ​

接口地址 ​

text
GET /api/auth/message/subscribe_templates

接口说明 ​

返回当前小程序平台可订阅的消息模板ID列表:仅包含启用、当前平台渠道已启用且完成 template_id 配置的模板;平台由 X-Platform-Source 请求头解析,非小程序来源返回业务错误。客户端拿到 template_id 后调用平台订阅授权接口(一次最多 3 条),用户同意后管理端即可向该用户推送对应模板消息。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Query 参数类型必填说明
template_codesstring否模板编码列表,英文逗号分隔,如 order_pay_success,refund_notice;不传返回当前平台全部

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "template_code": "order_pay_success",
      "name": "订单支付成功通知",
      "template_id": "xWX9z..."
    }
  ]
}

响应参数说明 ​

响应字段类型说明
data[].template_codestring模板编码
data[].namestring模板名称
data[].template_idstring当前平台的订阅消息模板ID,用于发起订阅授权

上报订阅结果 ​

接口地址 ​

text
POST /api/auth/message/subscribe

接口说明 ​

用户在小程序订阅授权弹窗中同意后,客户端将接受的模板编码上报落库。服务端按「会员+渠道+模板」唯一记录,每上报一次剩余可推送次数加一;管理端推送成功后扣减一次。无效、未启用或未配置当前平台渠道的模板编码会被跳过,不影响其余模板。subscribe_ids 与 template_codes 按下标对应,仅百度渠道需要(百度要求发送时携带订阅授权时的平台订阅ID)。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Body 参数类型必填说明
template_codesarray<string>是订阅成功的模板编码列表,最多 20 个
subscribe_idsarray<string>否平台订阅ID列表,与模板编码按下标对应,百度渠道必传

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "template_code": "order_pay_success",
      "remain_count": 1
    }
  ]
}

响应参数说明 ​

响应字段类型说明
data[].template_codestring已记录的模板编码
data[].remain_countinteger该会员该模板当前剩余可推送次数

消息列表 ​

接口地址 ​

text
GET /api/auth/message/list

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Query 参数类型必填说明
msg_typestring否消息类型 system 系统通知 / order 订单通知 / marketing 营销消息 / interactive 互动消息 / service 客服消息,不传查询全部
pageinteger否页码,默认 1
page_sizeinteger否每页数量,默认 20,最大 100

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "id": 100,
        "msg_type": "order",
        "title": "您的订单 ORD202610010001 支付成功",
        "content": "订单金额:¥99.00",
        "cover_url": "https://oss.example.com/uploads/2026/09/cover.png",
        "jump_type": 3,
        "jump_url": "/pages/order/detail?id=123456",
        "is_read": 0,
        "read_at": null,
        "biz_type": "order",
        "biz_id": "123456",
        "created_at": "2026-09-25T10:00:00+08:00"
      }
    ],
    "total": 1
  }
}

响应参数说明 ​

响应字段类型说明
listarray消息列表,按发送时间倒序
list[].idinteger消息ID
list[].msg_typestring消息类型 system / order / marketing / interactive / service
list[].titlestring消息标题
list[].contentstring消息内容
list[].cover_urlstring封面图地址(按当前默认存储动态补全),无封面时不返回
list[].jump_typeinteger跳转类型 0不跳转 1站内页 2H5链接 3小程序页面
list[].jump_urlstring跳转地址或小程序页面路径,不跳转时不返回
list[].is_readinteger是否已读 0未读 1已读
list[].read_atstring已读时间,未读为 null
list[].biz_typestring关联业务类型,如 order
list[].biz_idstring关联业务ID,客户端据此跳转对应业务详情
list[].created_atstring发送时间
totalinteger数据总数

未读消息统计 ​

接口地址 ​

text
GET /api/auth/message/unread_count

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "total": 3,
    "items": [
      {
        "msg_type": "system",
        "count": 1
      },
      {
        "msg_type": "order",
        "count": 2
      }
    ]
  }
}

响应参数说明 ​

响应字段类型说明
totalinteger未读消息总数
items[]array按消息类型的未读数量,仅包含存在未读的类型
items[].msg_typestring消息类型 system / order / marketing / interactive / service
items[].countinteger该类型未读数量

消息详情 ​

接口地址 ​

text
GET /api/auth/message/detail

接口说明 ​

查看未读消息时自动标记为已读并返回已读时间;只能查看当前登录会员自己的消息。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Query 参数类型必填说明
idinteger是消息ID

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "id": 100,
    "msg_type": "order",
    "title": "您的订单 ORD202610010001 支付成功",
    "content": "订单金额:¥99.00",
    "cover_url": "https://oss.example.com/uploads/2026/09/cover.png",
    "jump_type": 3,
    "jump_url": "/pages/order/detail?id=123456",
    "is_read": 1,
    "read_at": "2026-09-25T10:05:00+08:00",
    "biz_type": "order",
    "biz_id": "123456",
    "created_at": "2026-09-25T10:00:00+08:00"
  }
}

响应参数说明 ​

响应字段与「消息列表」中的单个消息结构一致。

标记消息已读 ​

接口地址 ​

text
POST /api/auth/message/read

接口说明 ​

只能标记当前登录会员自己的消息;重复调用幂等。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Body 参数类型必填说明
idinteger是消息ID

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": null
}

响应参数说明 ​

成功时 data 为 null。

全部已读 ​

接口地址 ​

text
POST /api/auth/message/read_all

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Body 参数类型必填说明
msg_typestring否消息类型 system / order / marketing / interactive / service,不传标记全部

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": null
}

响应参数说明 ​

成功时 data 为 null。

删除消息 ​

接口地址 ​

text
POST /api/auth/message/delete

接口说明 ​

软删除单条消息,只能删除当前登录会员自己的消息。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Body 参数类型必填说明
idinteger是消息ID

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": null
}

响应参数说明 ​

成功时 data 为 null。

清空消息 ​

接口地址 ​

text
POST /api/auth/message/clear

接口说明 ​

软删除当前登录会员的全部消息,可按消息类型限定。

接口参数说明 ​

Header 参数类型必填说明
X-Platform-Sourceinteger是平台来源 1微信小程序 2微信公众号 3iOS 4Android 5H5 6支付宝小程序 7百度小程序 8抖音小程序 9QQ小程序 10快手小程序
X-App-Versionstring否客户端版本号,服务端仅透传记录
Body 参数类型必填说明
msg_typestring否消息类型 system / order / marketing / interactive / service,不传清空全部

响应示例 ​

json
{
  "code": 0,
  "msg": "success",
  "data": null
}

响应参数说明 ​

成功时 data 为 null。

用户端接入指南 ​

本节面向后续业务模块与插件开发:发起订阅、读写站内消息时,直接复用用户端已封装的 API 与通用函数,禁止绕过封装直接调用 uni.request。

接口封装 ​

消息相关接口统一封装在 user_client/src/api/message.ts,均已携带登录态与平台请求头:

函数对应接口说明
getMessageList(params?)GET /api/auth/message/list消息列表,支持 msg_type 筛选与分页
getUnreadCount()GET /api/auth/message/unread_count未读总数与按类型统计
getMessageDetail(id)GET /api/auth/message/detail消息详情,未读自动标记已读
markMessageRead(id)POST /api/auth/message/read标记单条已读,幂等
markAllMessagesRead(msgType?)POST /api/auth/message/read_all全部已读,可按类型
deleteMessage(id)POST /api/auth/message/delete删除单条(软删除)
clearMessages(msgType?)POST /api/auth/message/clear清空消息,可按类型
getMessageSubscribeTemplates(templateCodes?)GET /api/auth/message/subscribe_templates当前平台可订阅模板ID,一般不直接调用
reportMessageSubscriptions(templateCodes, subscribeIds?)POST /api/auth/message/subscribe上报订阅授权结果,useSubscribeMessage 内部已自动调用

发起订阅:useSubscribeMessage ​

订阅消息的通用调用函数位于 user_client/src/composables/useSubscribeMessage.ts,业务与插件在关键操作(下单、支付、提醒设置等)前调用即可:

ts
import { useSubscribeMessage } from '@/composables/useSubscribeMessage'

const { requestMessageSubscribe } = useSubscribeMessage()

// 订阅当前平台全部已配置模板
const subscribed = await requestMessageSubscribe()

// 只订阅指定模板(传管理端配置的模板编码)
const ok = await requestMessageSubscribe(['order_pay_success', 'refund_notice'])

行为说明:

  • 内部流程:getMessageSubscribeTemplates 拉取当前平台模板ID → uni.requestSubscribeMessage 调起授权(单次最多 3 条,超出自动截断)→ 把用户同意的模板自动调用 reportMessageSubscriptions 上报服务端累加可推送次数 → 按结果给出统一反馈,返回是否至少完成一个模板的订阅上报;
  • 平台支持:微信、QQ、百度、抖音、快手小程序;H5、App 与支付宝小程序(订阅接口参数形态不同)暂不支持,调用时直接提示并返回 false,不会抛错;
  • 可用 supportsSubscribeMessage() 判断当前环境是否支持,用于控制订阅入口的显隐;
  • 模板增减、启用停用完全由管理端「消息中心-消息模板」配置驱动,业务代码无需感知具体模板ID。