首先需要把 formId 收集起来存到数据库,那么就需要检查每个请求,看 header 中有没有携带 formId,如果有就存到数据库中,注意要和用户对应起来,某个用户点击产生的 formId 只能用于给这个用户推送消息。
因为要将 formId 和用户绑定起来,因此我是在身份认证过滤器中进行的 formId 处理,身份认证成功后,处理 formId。代码如下:
/** * Description: 从请求头中获取formIdList,并插入数据库 * * @param request 请求头 * @return void * @author fanxb * @date 2019/5/6 16:39 */ private void checkFormId(HttpServletRequest request) { String str = request.getHeader(Constant.HEADER_FORM_ID); if (StringUtil.isEmpty(str)) { return; } List<FormKey> formKeyList = JSON.parseArray(str, FormKey.class); //UserContextHolder用户将当前线程和用户绑定起来,方便后面获取用户信息 int userId = UserContextHolder.get().getUser().getUserId(); formKeyList.forEach(item -> item.setUserId(userId)); this.formKeyDao.insertMany(formKeyList); }
发送微信提醒
通过官方文档可以知道发送消息的流程如下:
1 获取 accessToken,调用微信的大多数接口都需要这个东西,这个通过 appId 和 secret 来获取。详情参见: https://developers.weixin.qq.com/miniprogram/dev/api-backend/auth.getAccessToken.html
2 调用微信发送服务通知的接口.这个接口文档在: 点击跳转
最终发送的 http 请求是这样的:
url: =上面获取的accessToken
method: post
请求体格式为:application/json; charset=utf-8
body:{ "touser": "用户的openId", "template_id": "模板id", "page": "点击跳转的小程序url路径", "form_id": "收集到的formId", "data": { "keyword1": { "value": "您有一个信息的提示消息" }, "keyword2": { "value": "这是消息内容" } }, "emphasis_keyword": "keyword1.DATA" }
data 中的数据的按照顺序 keyword1,keyword2 对应于模板中字段的顺序。
结束
工程全部源码在这里:github
总结
以上所述是小编给大家介绍的在小程序中推送模板消息的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章: