微信服务通知类似短信,但是开发相对简单,在发开前必须搞懂下面的几个参数,因为这几个参数关系到你开发是否成功。
1:参数
这里先说参数的意义,如何获取下面详细讲解。
openid:每个微信唯一的id,服务通知用它的作用是你想要通知谁,谁的openid就给你发送过去,它类似你的电话号码,给你发短信,必须知道你的电话号。
access_token:因为如何实现微信服务通知,底层我们不知道,微信给了接口,想用这个接口必须有access_token参数。因为微信保密做的还相对严格,所以获取就需要各种参数。
form_id:我对这个理解不是很到位,在我看来就是触发这个微信服务通知函数、参数;先这样理解,你知道它必须获取就可以了。
template_id:模板id,这个就是微信公众平台里边,你选用什么格式通知模板,就把对应的template_id粘贴过来。
appid、secret:在微信公众平台里边,这个大家应该都熟悉,我就不多说了。
接下来我讲解一下消息模板的设置:
进入微信公众平台:
(1)点击图片中箭头指向的消息模板:

(2)有很多的消息模板,选择适合你的。

(3)记住你的template_id,在接下来的开发你要用到

2:接下来讲解获取上面参数过程
(1)获取access_token
微信小程序代码

 //获取access_tokenwx.request({url: 'https://www.lined5530.top/lg/wxsendmesController/at',success:function(res){var at=wx.setStorageSync("at", res.data.mes)console.log(res.data.mes)}})

Java后台代码

String accessToken;//因为用到的地方很多,所以我写成全局变量了//获取accessToken@RequestMapping("at")@ResponseBodypublic JSONObject at() {// 微信小程序IDString appid = "你自己的appid";// 微信小程序秘钥String secret = "你自己的秘钥";String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret;// 发送请求,返回Json字符串String str = WeChatUtil.httpRequest(url, "GET", null);// 转成Json对象 获取openidMap<String,String> map=new HashMap<String,String>();//转化成jsonJSONObject fromObject = JSONObject.fromObject(str);//获取ataccessToken = fromObject.getString("access_token");System.out.println("后台获取的"+accessToken);//给小程序端返回atmap.put("mes", accessToken);JSONObject json=JSONObject.fromObject(map);return json;//JSONObject jsonObject = JSONObject.parseObject(str);//System.out.println("access_token---"+jsonObject.toJSONString());// 我们需要的openid,在一个小程序中,openid是唯一的
//        String access_token = jsonObject.get("access_token").toString();
//        return access_token;  }

不出意外你第一个参数成功获取
(2)获取openid
在获取openid的时候,你先要获取code。通过login这个接口就可以获取,比较简单,你看代码应该可以看明白。

  //获取openidwx.login({success: function (res) {var code1 = res.code//获取openid需要codevar appid1 = "自己的aappid"var secret1 = "自己的秘钥"var ul = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid1 + '&secret=' + secret1 + '&js_code=' + code1 + '&grant_type=authorization_code'//获取openidwx.request({url: ul,method: 'GET',success: function (e) {var openid = e.data.openidconsole.log('获取登录身份的唯一openid', openid)wx.setStorageSync('openid', openid)}})}})

很多人可能看到别人在后台获取openid,其实没必要,在js中直接可以获取,不出意外,第二个重要的参数你也获取成功了。
(3)获取form_id
这个获取在小程序直接完成就可以
微信小程序的wxml代码

 <form bind:submit="sendMessage" report-submit="true"><button formType="submit">发送模板消息</button></form>```

获取fromid就要出发发给微信发送通知的代码了
js代码

 sendMessage: function (e) {var today = new Date();var year = today.getFullYear();var m1 = today.getMonth();var month = m1 + 1var day = today.getDate();var h = today.getHours();var m = today.getMinutes();var etime = year + "-" + month + "-" + day var time=h+":"+mconsole.log("formId");console.log(e);//对应通知服务的格式,你在选取模板的时候,用到几个参数,就设置几个参数let _jsonData ={"touser": "对应给谁发送就写谁的openid","weapp_template_msg": {"template_id": "公众平台里边模板id",//服务通知中进入小程序的入口"page": "pages/index/index","form_id": e.detail.formId,"data": {"keyword1": {"value": wx.getStorageSync("name")},"keyword2": {"value": etime},"keyword3": {"value": time},"keyword4": {"value": "内蒙古师范大学大数据楼316"}},"emphasis_keyword": "keyword1.DATA"}}// wx.showModal({//   title: 'formdID',//   content: e.detail.formId,// })//向后台请求,把刚才设置好的参数发送到后台wx.request({url: 'https://www.lined5530.top/lg/wxsendmesController/sendMsg',data:_jsonData,//直接发送的json数据格式method: 'POST',header: {'content-type': 'application/json' // 默认值},success: function (res) {console.log("res")console.log(res)}})console.log("faxiaox")},

对应后台的代码

//发送消息@RequestMapping("addsenddata")@ResponseBodypublic void sendMessage(@RequestBody String _jsonData){System.out.println("sendMesg传入参数"+_jsonData);// 微信小程序IDString appid = "自己appid";// 微信小程序秘钥String secret = "自己的秘钥";String ACCESS_TOKEN=accessToken;// 根据小程序穿过来的code想这个url发送请求String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="+ACCESS_TOKEN;// 发送请求,返回Json字符串String str = WeChatUtil.httpRequest(url, "POST", _jsonData);// 转成Json对象 获取openidJSONObject fromObject = JSONObject.fromObject(str);//JSONObject jsonObject = JSONObject.parseObject(str);System.out.println("jsonObject____"+fromObject.toString());// 我们需要的openid,在一个小程序中,openid是唯一的}

最后你可能用到WeChatUtil这个方法

public class WeChatUtil {public static String httpRequest(String requestUrl,String requestMethod,String output){try{URL url = new URL(requestUrl);HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();connection.setDoOutput(true);connection.setDoInput(true);connection.setUseCaches(false);if(null != output){OutputStream outputStream = connection.getOutputStream();outputStream.write(output.getBytes("utf-8"));outputStream.close();}// 从输入流读取返回内容InputStream inputStream = connection.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;StringBuffer buffer = new StringBuffer();while ((str = bufferedReader.readLine()) != null){buffer.append(str);}bufferedReader.close();inputStreamReader.close();inputStream.close();inputStream = null;connection.disconnect();return buffer.toString();}catch(Exception e){e.printStackTrace();}return "";}
}

最后的效果如下

以上是我学习的整个过程,研究一下午搞好的,希望可以帮助大家。

微信小程序服务通知开发相关推荐

  1. 微信小程序消息通知开发

    微信小程序消息通知开发及注意点 大致流程图: #mermaid-svg-kKvz8B789cmQ7zco {font-family:"trebuchet ms",verdana,a ...

  2. 微信小程序服务端开发遇到的一些坑

    微信小程序服务端开发遇到的一些坑 开发环境 问题集合 小程序不支持基于进入客服事件推送消息 小程序不支持永久素材 RestTemplate无法解析上传图片素材的返回 tips 其他小问题 开发环境 基 ...

  3. 微信小程序——服务通知,发送订阅消息

    一.什么是消息推送 二.整体效果 三.实现步骤 1 小程序开通订阅消息 2 postApi测试效果 三.uniapp配置 这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下 因为 ...

  4. 腾讯位置服务--微信小程序JSSDK地图开发

    腾讯位置服务–微信小程序JSSDK地图开发 1.腾讯位置服务 文档传送门:https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview [ ...

  5. 微信小程序蓝牙BLE开发实战——案例(二)

    微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...

  6. 微信小程序——账号及开发工具

    1. 注册微信小程序账号 点击我进入微信公众平台 进入后点击立即注册 注册成功且登录后进入小程序管理后台 2. 安装开发者工具 点击进入开发文档 进入安装开发工具(稳定版本) 一路默认下一步进行安装 ...

  7. 区分微信小程序版本(开发工具中、开发版、体验版、正式版)的方法?

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  8. 3.1【微信小程序全栈开发课程】在本地搭建后端开发环境

    第二章将前端页面的框架基本搭建好了,第三章,我们来做登录功能,登录功能需要在后端获取到用户信息,返回到前端.所以先来搭建后端开发环境 1.后端开发环境介绍 我们的项目用的是前后端分离开发 前端可以理解 ...

  9. 微信小程序公众号开发

    微信小程序&公众号开发 一.什么是微信开发 二.微信开放平台 三.微信公众平台 四.小程序与公众号的区别 1. 用途不同 2. 运营方式不同 3. 操作方法不同 4. 用户体验不同(公众号操作 ...

  10. 微信小程序入门级实战开发指南

    微信小程序入门级实战开发指南 概述 微信小程序,简称小程序,英文名Mini Program,是一种"不需要下载安装"即可使用的应用(实际上是需要下载安装的,只是整个过程被简化到可以 ...

最新文章

  1. 【OpenCV 4开发详解】轮廓发现与绘制
  2. K12,再好的愿景遇到商业都会慢慢失去真正的目标
  3. java对象--内部类
  4. Spring Boot常见企业开发场景应用、自动配置原理结构分析
  5. jsp mysql中文乱码,jsp中文乱码 jsp mysql 乱码的解决方法
  6. Java 中 PO 与 VO 的区别
  7. php和python写爬虫-为什么选择用python做爬虫
  8. 用telnet 测试Http协议
  9. vue调用手机相机相册_详解Vue调用手机相机和相册以及上传
  10. java命令行参数_一个 java 命令行参数顺序的坑
  11. 批量处理文件,正则表达式处理文件
  12. html静态网页制作天天生鲜,天天生鲜 前后台资源
  13. iOS小技能:常用预处理指令(移除程序中的identifier、发布模式关闭NSLog、导出和隐藏符号)
  14. Geek生活--netHack
  15. win10虚拟机连接服务器失败怎么办,Win10虚拟机无法连接网络的解决方法教程
  16. 程序员如何增加收入?
  17. java 上传csv/xslx文件,预览,导入到数据库中
  18. git 强制同步远端仓库
  19. TMS570学习【2】pwm输出
  20. Linux 分区、格式化4T大容量存储分区

热门文章

  1. 无源滤波器讲解和典型DCDC稳压芯片外围电路的设计
  2. 一篇文章看懂自然语言处理——word表示技术的变迁(从bool模型到BERT)
  3. lqr算法 c语言,LQR最优控制原理介绍
  4. python编写小程序、模拟实现自动按下键盘_Python 实现键盘鼠标按键模拟
  5. FFmpeg常用指令记录sdp中提取sps/pps信息sps/pps(STAP-A解析)
  6. smb协议只能在同一网段吗_基于SMB协议的共享文件读写 博客分类: Java
  7. TCP、UDP、CoAP、LwM2M、MQTT简单对比
  8. nanomsg 高性能通信库_zeromq与nanomsg比较
  9. 抖音无水印视频批量下载助手
  10. 支付宝支付模块-社区分享-接口样例-常见问题帖