日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

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

發(fā)布時(shí)間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 java后台接收微信服务号/订阅号消息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.申請(qǐng)訂閱號(hào)(適合個(gè)人)或者服務(wù)號(hào)(適合企業(yè))
微信公眾平臺(tái)

2.填寫配置

服務(wù)器地址: 需要接收消息 的服務(wù)端接口地址

令牌:通話識(shí)別碼,隨便寫,后端接收時(shí),使用一樣的就可以了。

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

提交這些配置信息,就能與后端通訊了,這個(gè)項(xiàng)目使用的是SSM框架,springboot項(xiàng)目做的后端接收。
注:

因?yàn)轫?xiàng)目在本地測試,需要用到內(nèi)網(wǎng)穿透相關(guān)。

這里就不一一敘述了這里有教程,不懂可以問我。QQ:794171011

內(nèi)網(wǎng)穿透工具

實(shí)現(xiàn)的效果 : 接收到 用戶給公眾號(hào)發(fā)送的消息,并處理。

有圖有真相

我這里的功能比較簡單只是過濾消息中的 鏈接

附上代碼:

  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("消息驗(yàn)證失敗,來源不是微信!");
 31             }
 32         }
 33     }
 34 
 35     /**
 36      *  騰訊通過GET請(qǐng)求進(jìn)行綁定
 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("公眾平臺(tái)與本系統(tǒng)成功綁定!可以開始通信~~~");
 47                 response.getWriter().write(echostr);
 48             } else {
 49                 response.getWriter().write("");
 50             }
 51         } catch (IOException e) {
 52             logger.warn("綁定URL時(shí):" + e.getMessage());
 53             e.printStackTrace();
 54         }
 55     }
 56 
 57     /**
 58      * 處理騰訊服務(wù)器發(fā)送過來的消息
 59      * @param response
 60      * @param request
 61      */
 62     public void handleMsgIn(HttpServletResponse response, HttpServletRequest request) {
 63         try {
 64             // 使用response的時(shí)候必須要設(shè)置響應(yīng)頭,不然會(huì)亂碼~~~
 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             // 將解析結(jié)果存儲(chǔ)在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                 // 取字符串中的鏈接,鏈接結(jié)尾必須有空格 必須有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("微信公眾號(hào)收到的鏈接,系統(tǒng)未收錄[" + matcher.group() + "]");
 95                 }
 96             } else {
 97                 // 其他消息 不包含鏈接
 98             }
 99 
100         } catch (Exception e) {
101             logger.warn("微信收錄鏈接時(shí):" + e.toString());
102         }
103     }
104 
105 }

接收微信消息

總結(jié)

以上是生活随笔為你收集整理的java后台接收微信服务号/订阅号消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。