字段
类型
注释
id
int
主键
template_id
varchar
模版id
openid
varchar
用户的标识,对当前公众号唯一
url
varchar
跳转url
miniprogram
varchar
跳转小程序
data
varchar
发送内容json字符串
add_time
double
添加时间戳
send_time
double
发送时间戳
send_status
varchar
发送结果
wx_config_id
double
对应配置的微信号id
uuid
varchar
本次发送的uuid,业务系统可通过uuid查询模版消息推送结果
处理微信推送消息
文件目录
/src/controller/index.js
文件内容
module.exports = class extends think.Controller { /* * 入口:验证开发者服务器 * 验证开发者服务器,这里只是演示,所以没做签名校验,实际上应该要根据微信要求进行签名校验 */ async indexAction() { let that = this; if (that.method != 'REPLY') { return that.json({code: 1, msg: '非法请求', data: null}) } const {echostr} = that.get(); return that.end(echostr); } /* * 文字 * 用于处理微信推过来的文字消息 */ async textAction() { let that = this; let {id, signature, timestamp, nonce, openid} = that.get(); let {ToUserName, FromUserName, CreateTime, MsgType, Content, MsgId} = that.post(); ..... that.success('') } /* * 事件 * 用于处理微信推过来的事件消息,例如点击菜单等 */ async eventAction() { let that = this; let {id, signature, timestamp, nonce, openid} = that.get(); let {ToUserName, FromUserName, CreateTime, MsgType, Event, EventKey, Ticket, Latitude, Longitude, Precision} = that.post(); switch (Event) { case 'subscribe': // 关注公众号 ... break; case 'unsubscribe': // 取消关注公众号 ... break; case 'SCAN': // 已关注扫码 ... break; case 'LOCATION': // 地理位置 ... break; case 'CLICK': // 自定义菜菜单 ... break; case 'VIEW': // 跳转 ... break; case 'TEMPLATESENDJOBFINISH':// 模版消息发送完毕 ... break; } that.success('') } }
注:支持的action包括: textAction 、 imageAction 、 voiceAction 、 videoAction 、 shortvideoAction 、 locationAction 、 linkAction 、 eventAction 、 deviceTextAction 、 deviceEventAction 。
公众号后台配置
注:后面跟的id参数是为了区分是哪个公众号推过来的消息,在上面的接口参数中也有体现
微信相关API的编写
目录结构