微信小程序发送消息推送

这篇具有很好参考价值的文章主要介绍了微信小程序发送消息推送。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在小程序开发中,如果想实现:用户发给小程序的消息以及开发者需要的事件推送,在小程序项目中,我们想要实现这样一个功能,

比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序后台的设置,开发设置中,消息推送功能:

微信小程序主动推送,java,开发语言

点击开启消息推送功能,认证成功进入到消息推送配置界面:

微信小程序主动推送,java,开发语言

这里配置几个参数注意一下:

URL(服务器地址):这里要填我们要认证token的接口地址,并且是在线上的接口,才能认证成功

比如我的消息推送认证接口的地址是:http://xxxxxxx/xxxxxx/getProcessRequest.do,下面会编写这个接口认证的代码

Token(令牌):这个是用户自己添加,不过在小程序后台添加的Token必须与认证接口中的是一致的,这个才能认证成功

下面是Spring mvc 编写的接口代码:

因为这个接口是GET认证,POST是发送信息所以才会这么编写:

/** * GET:验证token * OST:发送数据 * @param request 作用域 * @param response 作用域 * @return String */ @RequestMapping(value= {“/getProcessRequest”},method= {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String getProcessRequest(HttpServletRequest request,HttpServletResponse response) { boolean isGet=request.getMethod().toLowerCase().equals(“get”); LOGGER.info(isGet+”—————“); System.out.println(isGet); System.out.println(“方法是——-“+isGet); if(isGet){//首次验证token // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 String signature = request.getParameter(“signature”); // 时间戳 String timestamp = request.getParameter(“timestamp”); // 随机数 String nonce = request.getParameter(“nonce”); // 随机字符串 String echostr = request.getParameter(“echostr”);

PrintWriter out = null; try { out = response.getWriter(); // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败 if (DateUtil.checkSignature(signature, timestamp, nonce)) { System.out.println(“成功”); out.print(echostr); out.flush(); //必须刷新 } System.out.println(“失败”); } catch (IOException e) { e.printStackTrace(); } finally { out.close(); out = null; } }else{// 进入POST聊天处理 System.out.println(“进入了聊天界面”); LOGGER.info(“进入了聊天界面”); // 接收消息并返回消息 try { System.out.println(“进入这个方法中了:”); acceptMessage(request,response); } catch (Exception e) { e.printStackTrace(); } } return null;

}

acceptMessage方法: 这个方法是认证成功后也就是POST方法操作能够接收到小程序发来的信息,也可以回信息:

这里根据小程序信息的格式可以去看小程序API文档,文档地址:

https://developers.weixin.qq.com/miniprogram/dev/api/custommsg/receive.html#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF

acceptMessage:

/** * 聊天处理方法 发送数据 * @param request 作用域 * @param response 作用域 * @see Exception */ public void acceptMessage(HttpServletRequest request,HttpServletResponse response) throws Exception{ BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), “UTF-8”)); StringBuilder responseStrBuilder = new StringBuilder(); String inputStr; while ((inputStr = streamReader.readLine()) != null) responseStrBuilder.append(inputStr); /*BufferedReader readers = new BufferedReader(new InputStreamReader(request.getInputStream()));*/ JSONObject jsonObject = JSONObject.fromObject(responseStrBuilder.toString()); String param= jsonObject.toString(); System.out.println(“转出来的数据:”+param); String attribute = jsonObject.get(“FromUserName”).toString();//发送的openid // String ToUserName = jsonObject.get(“ToUserName”).toString();//小程序原始id String MsgType = jsonObject.get(“MsgType”).toString(); //用户发送客服信息的类型 System.out.println(“发送数据的类型:”+MsgType); System.out.println(MsgType); if(MsgType.equals(“event”)) { Map<String,Object> text = new HashMap<String, Object>(); Feedbacktxt feedbacktxt = new Feedbacktxt(); feedbacktxt.setTouser(attribute); feedbacktxt.setMsgtype(“text”); text.put(“content”, “你好,欢迎来到这里”); feedbacktxt.setText(text); String token = feedbackService.access_token(); //这里是获取接口凭证的接口 String url=”https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=”+token; JSONObject jsonStrs = JSONObject.fromObject(feedbacktxt); HttpUtils.httpPost(url, jsonStrs.toString());

获取access_token,接口凭证的api接口文档:微信开放文档

DateUtil.java:

/** * 验证签名 * @param signature 验证签名的数据 * @param timestamp 参数 * @param nonce 参数 * @return boolean */ public static boolean checkSignature(String signature, String timestamp, String nonce) { //TOKEN //与token 比较 String[] arr = new String[] { qurenneng1796789910, timestamp, nonce }; // 将token、timestamp、nonce三个参数进行字典排序 Arrays.sort(arr); StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } MessageDigest md = null; String tmpStr = null; try { md = MessageDigest.getInstance(“SHA-1”); // 将三个参数字符串拼接成一个字符串进行sha1加密 byte[] digest = md.digest(content.toString().getBytes()); tmpStr = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } content = null; // 将sha1加密后的字符串可与signature对比 return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; } /** * 将字节数组转换为十六进制字符串 * * @param byteArray * @return String */ private static String byteToStr(byte[] byteArray) { String strDigest = “”; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; }

/** * 将字节转换为十六进制字符串 * * @param mByte * @return String */ private static String byteToHexStr(byte mByte) { char[] Digit = { ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’ }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; }

这样就可以实现动态的去发送客服信息,也可以去用代码去实现想要实现的功能,好了微信小程序接口认证就到这里了文章来源地址https://www.toymoban.com/news/detail-705328.html

到了这里,关于微信小程序发送消息推送的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序订阅消息推送(附带后台java代码)

    官方文档: 小程序前端:点击进入 小程序服务端:点击进入 一,代码实现(后端) ①定义实体类 ②定义HttpUtil类(Get请求) ③验证token过期时间 ④小程序发送消息 AuthUtil工具类

    2024年02月14日
    浏览(45)
  • 微信小程序云开发通过服务号给用户推送模板消息

    主要参考下面两个文章 1、云函数接收公众号消息推送 | 微信开放社区 ​​​​​​2、微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(一,获取推送前所需信息)_微信小程序推送服务通知_庆登登登的博客-CSDN博客  一些基本的概念就不讲了,这里主要讲下步骤和我

    2024年02月09日
    浏览(53)
  • uniapp+微信小程序获取openId,获取access_token,订阅消息模板,java后台发送消息

    1.前期准备 2.用户订阅消息 3.获取openId(uniapp) 4.获取access_token 5.发送消息 6.请求的代码Springboot(自己写有发送请求方法的可以不用看) 在微信公众号申请订阅消息 在公共模板这里选用模板, 模板种类跟小程序设置的类目有关,只有特殊的类目有长期订阅模板 类目可以在设

    2024年02月03日
    浏览(47)
  • 微信小程序模板消息推送

    时序图 ​​​​​​​   首先,我们需要知道一件事情,小程序的模板推送分为“一次性订阅”和“长期订阅” 一次性订阅:用户订阅小程序后,程序只能对指定OpenId进行一次推送模板消息,无法多次推送 长期订阅:用户长期订阅,能够多次推送模板消息(长期订阅模板需

    2024年02月11日
    浏览(46)
  • 微信小程序订阅模板消息推送

    背景 在实际的小程序开发过程中往往需要用到给用户发送订阅消息,比如:我们在店里扫码点餐时在付款时往往弹出一个授权窗口(比如‘取餐通知’)这个时候我们就需要对接微信小程序的模板消息。 [https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscrib

    2024年02月11日
    浏览(47)
  • 微信小程序之订阅消息推送

    目录 1、开通订阅消息 2、请求用户授权 2.1、wx.requestSubscribeMessage(Object object) 2.2、wx.requestSubscribeDeviceMessage(Object object) 3、发送订阅信息 3.1、调用方式 3.2、云调用接口方法 3.3、请求参数 3.4、返回值 3.5、代码示例 登录小程序之后点击功能下的 订阅消息 , 点击开通 选择公共模

    2024年02月09日
    浏览(57)
  • 微信小程序服务通知(订阅消息)定时推送消息功能

    首先先说项目需求:向预约参观的用户提前一天晚上8点推送消息。小程序端主要用到的 API 是我是小程序用到的API。以及服务端用到的 API :我是服务端用到的API。 1. 开通订阅消息功能 (1)、 首先需要在小程序管理后台开通订阅消息功能。没开通前如下图所示: (2)、开通之

    2024年02月08日
    浏览(80)
  • 微信小程序向公众号推送消息模板

    由于微信小程序长期订阅的消息模板全部失效以后,对于小程序的消息推送可以改成往公众号推。 这里将介绍如何使用小程序向公众号推送消息,并且消息可以跳转到小程序 1、微信公众平台注册 服务号 (订阅号是不可以推送的)与小程序,两者都需要认证并且 认证主体是

    2024年02月06日
    浏览(56)
  • 微信小程序实现订阅消息推送的实现步骤

    1、准备工作   准备小程序账号、开发环境,我小程序是基于uniapp开发,后台代码基于SpringBoot开发。同时先阅读官方文档,了解小程序订阅消息和后端如何发送订阅消息等相关知识,官方文档地址如下: 《小程序订阅消息》 《发送订阅消息》 2、实现步骤 2.1、启用并配置

    2024年02月15日
    浏览(47)
  • 微信小程序向公众号推送消息超详细教程

    官方教程 官方教程 开通一下服务号公众号 超级管理员登录服务号公众号后台 登录地址 开通模板消息 申请一个模板消息,获取模板ID 注意此处的参数,后续接口需要使用 绑定公众号与小程序 官方教程 1.登录微信公众号后台 2.点击小程序管理 3.关联小程序 获取微信公众号

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包