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

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

浏览量:1860 时间: 来源:程序员安爷

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("接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", 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" + "     <ToUserName><![CDATA["+to+"]]></ToUserName>r" + "     <FromUserName><![CDATA["+from+"]]></FromUserName>r" + "     <CreateTime>"+time+"</CreateTime>r" + "     <MsgType><![CDATA[transfer_customer_service]]></MsgType>r" + " </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>
至此也就全部完成了。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎