文档章节

java后台接收微信服务号/订阅号消息

o
 osc_y8yehimr
发布于 2019/03/20 16:23
字数 732
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.申请订阅号(适合个人)或者服务号(适合企业)
微信公众平台

2.填写配置

服务器地址: 需要接收消息 的服务端接口地址

令牌:通话识别码,随便写,后端接收时,使用一样的就可以了。

消息加密秘钥 :(目前不用)

提交这些配置信息,就能与后端通讯了,这个项目使用的是SSM框架,springboot项目做的后端接收。
注:

因为项目在本地测试,需要用到内网穿透相关。

这里就不一一叙述了这里有教程,不懂可以问我。QQ:794171011

内网穿透工具 

实现的效果 : 接收到 用户给公众号发送的消息,并处理。

有图有真相

我这里的功能比较简单只是过滤消息中的 链接 

附上代码:

  1 @Controller
  2 @RequestMapping("/wecha")
  3 public class WeChaturlController extends BaseController {
  4 
  5     private final static Logger logger = Logger.getLogger(WeChaturlController.class.getName());
  6 
  7     @Resource
  8     private INewsCommentService newsCommentService;
  9     @Resource
 10     private IReviewNewsService reviewNewsService;
 11     @Resource
 12     protected IWaitParseDao waitParseDao;
 13     
 14     public static String BIND_TOKEN = "CX_TEST";
 15     private static SAXReader saxReader = new SAXReader();
 16 
 17     /**
 18      * 消息接收端
 19      * @param response
 20      * @param request
 21      */
 22     @RequestMapping(value = "/get")
 23     public void msgIn(HttpServletResponse response, HttpServletRequest request) {
 24         if ("GET".equals(request.getMethod())) {
 25             bindMsg(response, request);
 26         } else if ("POST".equals(request.getMethod())) {
 27             if (WxBaseCheck.checkSignature(request, BIND_TOKEN)) {
 28                 handleMsgIn(response, request);
 29             } else {
 30                 logger.warn("消息验证失败,来源不是微信!");
 31             }
 32         }
 33     }
 34 
 35     /**
 36      *  腾讯通过GET请求进行绑定
 37      * @param response
 38      * @param request
 39      */
 40     public void bindMsg(HttpServletResponse response, HttpServletRequest request) {
 41         try {
 42             String echostr = request.getParameter("echostr");
 43             // System.out.println(WxBaseCheck.checkSignature(request,
 44             // BIND_TOKEN));
 45             if (WxBaseCheck.checkSignature(request, BIND_TOKEN)) {
 46                 logger.warn("公众平台与本系统成功绑定!可以开始通信~~~");
 47                 response.getWriter().write(echostr);
 48             } else {
 49                 response.getWriter().write("");
 50             }
 51         } catch (IOException e) {
 52             logger.warn("绑定URL时:" + e.getMessage());
 53             e.printStackTrace();
 54         }
 55     }
 56 
 57     /**
 58      * 处理腾讯服务器发送过来的消息
 59      * @param response
 60      * @param request
 61      */
 62     public void handleMsgIn(HttpServletResponse response, HttpServletRequest request) {
 63         try {
 64             // 使用response的时候必须要设置响应头,不然会乱码~~~
 65             response.setHeader("Content-type", "text/xml;charset=UTF-8");
 66             // 从request中取得输入流
 67             // 读取输入流
 68             Document document = saxReader.read(request.getInputStream());
 69             // 得到xml根元素
 70             Element element = document.getRootElement();
 71             // System.out.println("接口接受xml:"+element.asXML());
 72             // 将解析结果存储在HashMap中
 73             Map<String, String> msgMap = XmlHandler.xmlToMap(element);
 74             String text = msgMap.get("Content");
 75             System.out.println("微信收到消息:" + text);
 76             Pattern pattern = GetUrl.WEB_URL;
 77             Matcher matcher = pattern.matcher(text);
 78             if (matcher.find()) {
 79                 // 取字符串中的链接,链接结尾必须有空格 必须有http 或 https开头
 80 //                System.out.println(matcher.group());
 81                 if (new BrandUrlUtil().isBrandUrl(matcher.group())) {
 82                     // 链接初始化入库
 83                      this.newsCommentService.initNews(matcher.group());
 84                 } else {
 85                     // 链接 未收录
 86 //                    WaitParse waitParse = new WaitParse();
 87 //                    waitParse.setUrl(matcher.group());
 88 //                    waitParse.setInfoType(0);
 89 //                    WaitParse dbWaitParse = this.waitParseDao.getWaitParse(waitParse);
 90 //                    if (dbWaitParse == null) {
 91 //                        waitParse.setCreateTime(new Date());
 92 //                        this.waitParseDao.insertWaitParse(waitParse);
 93 //                    }
 94                     logger.warn("微信公众号收到的链接,系统未收录[" + matcher.group() + "]");
 95                 }
 96             } else {
 97                 // 其他消息 不包含链接
 98             }
 99 
100         } catch (Exception e) {
101             logger.warn("微信收录链接时:" + e.toString());
102         }
103     }
104 
105 }
接收微信消息

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
微信公众平台接入分享

微信公众平台账号分为三类,分别是服务号、订阅号和小程序,不同类型的账号功能和权限不尽相同,详细区别可访问 微信公众平台官方网站查看,本文分享接入微信公众平台服务号和订阅号(两者的...

louieSun
2017/11/20
0
0
微信开放相关问题

1、订阅号与服务号的主要区别是什么? 订阅号每天能群发一条消息,没有自定义菜单及高级接口权限;服务号有自定义菜单微信认证之后有高级接口权限,但每月只能群发一条消息。 2、到底该申请订...

你真很好
2015/05/29
2
0
Java 微信公众号开发_学习笔记

一、课程介绍   本套课程的学习内容,开发语言   微信公众号介绍,申请以及后台设置详解   编辑模式下的消息回复,菜单建立,素材管理等   开发前的环境搭建以及工具准备   开发者...

osc_z1hvg4cu
2018/04/24
4
0
微信公众平台开发教程新手解惑40则

【编者按】由CSDN和《程序员》杂志联合主办的 2014年微信开发者大会 将于8月23日在北京举行,邀请了来自于一线的微信开发商技术负责人或资深工程师从企业应用开发高级篇、智能客服与LBS、微信...

DavidBao
2015/04/29
1.3K
0
微信订阅号自定义菜单java开发

小弟应运营要求要更改公众号菜单,本以为是在公众号官网上进行配置即可,,谁知道 竟然是开发者模式编辑的。无奈,从未接触过公众号开发的我。有开始啃开了微信开发的api,原来的做这个得小伙...

明瞐
2018/11/21
142
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
57分钟前
65
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
8
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
今天
26
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
今天
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部