1.开发准备

网穿透

我用的花生壳

填入你的域名 (花生壳默认送你一个) 和你现在内网的ip 192.168.x.x

然后测试一下

通过域名访问你的项目

2.公众号配置

Token(令牌): 随意(我这里弄的是token);

EncodingAESKey :随机生成就可以

url填写为自己服务器的域名 如:http://www.xxxx.com/weixin/verify

/weixin/chat  是下面chatController ,推送的链接。

提交服务器配置微信返回

signature , timestamp ,  nonce ,  echostr 4个参数

/*** 接入微信服务 (验证服务只使用一次)* @param request* @param response*/@RequestMapping(value="/verify",method= RequestMethod.GET)public void index(HttpServletRequest request,HttpServletResponse response){log.info("微信接入服务器");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String token = "token";String echostr = request.getParameter("echostr");if (weChatServiceImpl.verifyInfo(signature, timestamp, nonce, token)) {log.info("echostr为:{}"+echostr);if (echostr != null) {try {response.getWriter().write(echostr);log.info("微信接入服务器成功");} catch (IOException e) {e.printStackTrace();}}} else {log.info("微信接入服务器失败");log.info("signature为:{}"+signature);log.info("timestamp为:{}"+timestamp);log.info("nonce为:{}"+nonce);log.info("token为:{}"+token);}}

将token(就是你上面填写的)、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比查看是否正确

最后将echostr 字符串返回给微信

 //微信服务验证public Boolean verifyInfo(String signature, String timestamp, String nonce,String token) {TreeSet<String> set = new TreeSet<String>();set.add(token); set.add(timestamp);set.add(nonce);StringBuilder sBuilder = new StringBuilder();for (String item : set) {sBuilder.append(item);}String sign = DigestUtils.sha1Hex(sBuilder.toString());return signature.equalsIgnoreCase(sign);}

提交后显示配置成功 表示微信通过此接口进行交互

获取所有用户在公众号的操作  进一步处理将返回操作和消息进行自动回复等操作

  /***       微信动作推送* @param request* @param response* @throws Exception*/@RequestMapping(value = "/verify", method = RequestMethod.POST)@ResponseBodypublic void verifyPost(HttpServletRequest request, HttpServletResponse response) throws Exception {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();try {msg = weChatService.weixinPost(request);out.write(msg);log.info("The request completed successfully--请求成功");log.info("to weixin server "+"\n"+msg);} catch (Exception e) {log.error("返回微信服务消息为"+msg+",不能发送到公众号");log.error("Failed to convert the message from weixin!");}finally{out.close();}}

取得微信消息  分类然后回复 或者不做处理(文档中有具体类型)

public String weixinPost(HttpServletRequest request) throws Exception {String respMessage = null;// 1.将xml转换成Map格式Map<String, String> resultMap = WeChatUtil.parseXmlToMap(request);log.info("###收到微信消息####resultMap:" + resultMap.toString());// 2.判断消息类型String msgType = resultMap.get("MsgType");// 开发者微信公众号String toUserName = resultMap.get("ToUserName");// 消息来自公众号 取得openIdString fromUserName = resultMap.get("FromUserName");// 消息内容String content = resultMap.get("Content");Map<String, Object> userInfo = WeChatUtil.getUserInformationByOpenid(fromUserName);log.info("openId: " + fromUserName + ", 开发者微信公众号: " + toUserName + ", 消息类型: " + msgType + ", 消息内容: " + content);// 文本消息if (RESP_MESSAGE_TYPE.TEXT.name.equals(msgType)) {//关键字if (content.equals("测试")) {ReplyTextMsg text = new ReplyTextMsg();text.setContent("微信jsapi支付测试:http://kikock.iok.la/mtmall/wxPay/jsapiPay");text.setToUserName(fromUserName);text.setFromUserName(toUserName);text.setCreateTime();text.setMsgType(RESP_MESSAGE_TYPE.TEXT.name);respMessage = text.Msg2Xml();} else if (content.equals("缓存")) {ReplyTextMsg text = new ReplyTextMsg();text.setContent("debugx5.qq.com");text.setToUserName(fromUserName);text.setFromUserName(toUserName);text.setCreateTime();text.setMsgType(RESP_MESSAGE_TYPE.TEXT.name);respMessage = text.Msg2Xml();}//地理位置} else if (RESP_MESSAGE_TYPE.LOCATION.name.equals(msgType)) {// 事件推送} else if (RESP_MESSAGE_TYPE.EVENT.name.equals(msgType)) {// 事件类型String eventType = resultMap.get("Event");//关注事件if (RESP_MESSAGE_TYPE.SUBSCRIBE.name.equals(eventType)) {ReplyTextMsg text = new ReplyTextMsg();text.setContent("欢迎关注,kikock的公众号");text.setToUserName(fromUserName);text.setFromUserName(toUserName);text.setCreateTime();text.setMsgType(RESP_MESSAGE_TYPE.TEXT.name );respMessage= text.Msg2Xml();}}return respMessage;}

微信公众号开发 ----微信服务的接入(1)相关推荐

  1. 微信公众号开发教程(一) 验证接入

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 微信公众号开发教程(一)验证接入 本篇文章主要介绍了微信公众号开发接入详细流程,希望对刚接触公众号开发的同学有所帮助,有兴趣的同学可多多关注 ...

  2. Java微信公众号开发(一:接入平台,验证token)

    Java微信公众号开发(一:接入平台,验证token) 开发环境: 环境:JDK1.8 框架:springBoot 首先,在我们接入微信公众平台之前,我们需要注册微信公众号的开发者账号,获取开发者ID ...

  3. 视频教程-SpringBoot微信公众号开发-微信开发

    SpringBoot微信公众号开发 就职于国内知名在线互联网旅游公司,10+互联网开发经验,精通前后端开发 刘志强 ¥149.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免 ...

  4. 视频教程-微信公众号开发-微信开发

    微信公众号开发 云知梦创始人,国际架构师,11年互联网培训和开发经验,曾在港电讯盈科.北大青鸟集团.远大教育.北京易第优教育等公司任职曾获得美国红帽RHCA构架师和RHCDS数据中心讲师,在国内排名第 ...

  5. 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友

    之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客 微信公众号开发–微信JS-SDK扫一扫功能 在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤 还详细介绍了通过config接口注 ...

  6. 微信公众号开发之服务器验证接入

    微信公众号开发需要将项目运行在带有独立ip地址的主机上,可以选择内网穿透或者云服务器,我用的阿里云的服务器.微信验证接入过程就是微信给你的服务器发送一个get请求,请求中携带signature.tim ...

  7. 公众号 多服务器配置_微信公众号开发之配置和接入(二)

    从今天开始我们就正式开始微信公众号开发了,首先进入微信官网https://mp.weixin.qq.com/,注册或者登陆(如果已经注册了)你的微信公众号,登陆后需要管理员用个人微信扫码验证通过才行, ...

  8. 微信公众号开发---微信开发学习路线(及供参考)

    目录(?)[-] 1.       热门学习 1.        微信支付之H5页面WAP端接入 2.        微信支付开发系统开发流程及完整Demo展示 3.        微信公共服务平台开 ...

  9. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  10. 玩一玩微信公众号开发(一) 接入系统

    一开始我准备学一学微信开发.后来看了一下文档,需要自己搭服务器进行接口对调.有点麻烦所以就没继续学下去.现在学习过了Kotlin.Spring Boot很多东西,感觉可以比较方便的进行开发了.今天就来 ...

最新文章

  1. SGU 224.Little Queens
  2. 关系型数据库和mysql教材_关系型数据库(MySQL)
  3. java排队买票_【排队买票】 (Java代码)
  4. 【算法竞赛学习】学术前沿趋势-论文代码统计
  5. opencv32-基于距离变换和分水岭的图像分割
  6. 使用 Skeleton Screen 提升用户感知体验
  7. linux SPI分析
  8. 蚌埠学院计算机科学技术校区,蚌埠学院计算机科学与关键技术(6页)-原创力文档...
  9. mysql测试什么鬼,where 1=1 是什么鬼?SQL中有这玩意?
  10. Linux 脚本开机自启的几种方法
  11. 【rmzt】小清新美女win7主题_7.14
  12. 20款知名PHP集成环境推荐与优缺点分析、php环境大全推荐(PHP环境搭建包)
  13. java运行环境搭建_java的运行环境
  14. 11、C++各大有名库的介绍——综合
  15. Spring运行时值注入分析
  16. vue-cli打包后,找不到css、js文件问题的解决
  17. 私域运营第五讲:实体店私域流量拉新实体餐饮店如何通过搭建私域流量实现营收增长
  18. codeforces 711C Coloring Trees(DP)
  19. 盲盒商城源码系统附源码
  20. 种植韭黄时如何保障韭黄口感?资产监测设备可以帮助你!

热门文章

  1. 10 个迅速提升你 Git 水平的提示
  2. 在Android Studio中使用Method trace,查看某进程的所有线程trace的方法
  3. webpack配置信息说明
  4. ps6—如何安装笔刷
  5. ORA-01075: you are currently logged on
  6. Linux shell脚本基础学习(上)
  7. 给模型自动赋予贴图代码
  8. 11月26日struts项目练习
  9. 2.卷2(进程间通信)---Posix IPC
  10. 4.nslookup