600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 微信小程序消息推送服务器接入

微信小程序消息推送服务器接入

时间:2021-04-26 00:46:56

相关推荐

微信小程序消息推送服务器接入

1、消息转发地址填写,需要注意的是token和encodingaeskey要和项目中配置一致

2、URL要实现两个路由相同的方法但是一个需要时GET另一个是POST,如下,其中TOKEN参数需要与微信后台配置一致;

@ResponseBody@RequestMapping(method=RequestMethod.GET,produces= "text/plain;charset=utf-8")public void authGet(@RequestParam(name = "signature", required = false) String signature,@RequestParam(name = "timestamp", required = false) String timestamp,@RequestParam(name = "nonce", required = false) String nonce,@RequestParam(name = "echostr", required = false) String echostr,HttpServletResponse response) throws Exception {this.logger.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature, timestamp, nonce, echostr);if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {throw new IllegalArgumentException("请求参数非法,请核实!");}String[] str = { TOKEN, timestamp, nonce };Arrays.sort(str); // 字典序排序String bigStr = str[0] + str[1] + str[2];// SHA1加密SHA1 sha1= new SHA1();String digest =sha1.gen(str);// 确认请求来至微信if (digest.equals(signature)) {response.getWriter().print(echostr);}}

/*** POST请求:* 接收客服消息; * 此处的value值也就是往微信公众平台要配置的请求的地址*/@ResponseBody@RequestMapping(method=RequestMethod.POST)public JSONObject doMessagePost(HttpServletRequest request,HttpServletResponse response) {try {ServletInputStream stream = request.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(stream));StringBuffer buffer = new StringBuffer();String line = new String(""); while((line = reader.readLine()) != null){buffer.append(line);}JSONObject jsonObject = JSONObject.fromObject(buffer.toString());String to=jsonObject.getString("ToUserName");String from=jsonObject.getString("FromUserName");String time=jsonObject.getString("CreateTime");String sessionFrom=jsonObject.getString("SessionFrom");String msgType=jsonObject.getString("MsgType");PrintWriter out=response.getWriter(); String msg="<xml>\r\n" + "<ToUserName><![CDATA["+to+"]]></ToUserName>\r\n" + "<FromUserName><![CDATA["+from+"]]></FromUserName>\r\n" + "<CreateTime>"+time+"</CreateTime>\r\n" + "<MsgType><![CDATA[transfer_customer_service]]></MsgType>\r\n" + " </xml>";out.print(msg);if("event".equals(msgType)&&"follow".equals(sessionFrom)) {pushService.setSendCustomerMsgLink(from);}} catch (Exception e) {e.printStackTrace();}return null;}

第一个方法用于验证,第二个方法用于接收消息转发和其他业务逻辑实现,方法二中也实现了接收到的客服消息转发给客服,关键点在于

<MsgType><![CDATA[transfer_customer_service]]></MsgType>

至此也就全部完成了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。