内网穿透工具

https://www.ngrok.cc/user.html 收费。。

1.微信公众号接入服务器

1.1申请微信公众号测试号
公众号首页—设置与开发—基本配置

@GetMapping("/wx")public void tokenVerify(HttpServletRequest request, HttpServletResponse response) throws IOException {String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");boolean isVerify = SignUtil.checkSignature(signature, timestamp, nonce);if (!isVerify) {log.error("消息不是来自微信服务器!");} else {response.getOutputStream().println(echostr);}}

SignUtil接口

public class SignUtil {private static String token = "weixin";public static boolean checkSignature(String signature, String timestamp, String nonce) {boolean result = false;// 对token、timestamp和nonce按字典序排序String[] array = new String[]{token, timestamp, nonce};Arrays.sort(array);// 将三个参数字符拼接成一个字符串String str = array[0].concat(array[1]).concat(array[2]);String sha1Str = null;try {// 对拼接后的字符串进行sha1加密MessageDigest md = MessageDigest.getInstance("SHA-1");byte[] digest = md.digest(str.getBytes());sha1Str = byte2str(digest);}catch(Exception e) {}System.out.println(sha1Str);if(sha1Str != null &&  sha1Str.equals(signature)) {result = true;}return result;}/** 将字节数组转换成字符串*/public static String byte2str(byte[] array) {StringBuffer hexstr = new StringBuffer();String shaHex="";for(int i = 0; i < array.length; i++) {shaHex = Integer.toHexString(array[i] & 0xFF);if(shaHex.length() < 2) {hexstr.append(0);}hexstr.append(shaHex);}return hexstr.toString();}}

Token必须跟代码里面一致,可加入配置文件
提交发送请求,请求成功

2.接收消息_返回消息

接受消息也需要封装,改为安全模式

/*** 微信消息处理* * @throws IOException*/@PostMapping("/tokenVerify")public void getMsg(HttpServletRequest request, HttpServletResponse response) throws IOException {request.setCharacterEncoding("utf8");response.setCharacterEncoding("utf8");Map<String, String> map = XmlUtils.xmlAnalysis(request.getInputStream());String openId = map.get("FromUserName");String msgType = map.get("MsgType");String Conten = topicService.topicList();if ("event".equals(msgType)) {String Event = map.get("Event");if ("subscribe".equals(Event)) {} else if ("unsubscribe".equals(Event)) {}} else if ("text".equals(msgType)) {String Content = map.get("Content");if ("订阅".equals(Content)) {// Conten = topicService.topicList();} else if (CommonUtils.isNumeric(Content)) {}} else {}String xml = "<xml><ToUserName><![CDATA[" + map.get("FromUserName") + "]]></ToUserName><FromUserName><![CDATA["+ map.get("ToUserName") + "]]></FromUserName><CreateTime>" + System.currentTimeMillis() / 1000+ "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + Conten + "]]></Content><MsgId>"+ map.get("MsgId") + "</MsgId></xml>";PrintWriter out = response.getWriter();out.print(xml);out.flush();out.close();}

XmlUtils.xmlAnalysis方法

public static  Map<String,String> xmlAnalysis(InputStream is){//用户发过来的是什么消息SAXReader reader = new SAXReader();Document document = null;try {document = reader.read(is);} catch (DocumentException e) {e.printStackTrace();}Element root = document.getRootElement();List<Element> elements = root.elements();Map<String,String> map = new HashMap<>();for(Element e:elements){map.put(e.getName(), e.getStringValue());}return map;}

3.获取access_token

需要后期加入缓存

public static String REQURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";// 微信公众号private static final String APPID = "";private static final String APPSECRET = "";public static String getToken() throws IOException {String url = REQURL.replace("APPID", APPID);url = url.replace("SECRET", APPSECRET);String respJson = OkHttpUtils.runGet(url);JSONObject respJsonObj = JSONObject.parseObject(respJson);System.out.println(respJsonObj.getString("access_token"));return respJsonObj.getString("access_token");}

微信公众号接入java相关推荐

  1. 微信公众号开发-java版 腾讯课堂(开发接入)

    微信公众号开发-java版 腾讯课堂 微信测试号申请地址: 微信二维码直接扫描登录 1.新建web项目 2.内网穿透映射公网ip  (免费隧道需要支付宝实名认证) 3.微信接入验证签名 TOKEN自己 ...

  2. 微信公众号后台java开发实现自动回复机器人

    1.注册微信公众号.(简单) 2.注册图灵机器人.(自己百度) 1)注册后可以拿到key  (注意  api接入里的钥匙不要打开,否则要加解密,麻烦) 3.配置微信公众号服务器验证. 1)在开发的基本 ...

  3. 微信公众号开发-Java版学习笔记

    微信公众号开发整体不难,主要是熟悉微信公众号常用的一些接口文档,然后会一门后端语言(比如java)即可. 罗召勇老师教程:微信公众号开发-Java版(蓝桥罗召勇) 微信公众号文档:微信公众号官方文档 ...

  4. 微信公众号接入图灵机器人实现自动回复消息

    2019独角兽企业重金招聘Python工程师标准>>> 1.创建图灵机器人 进入图灵机器人网址:http://www.tuling123.com/ 登录/注册,进入机器人管理,然后点 ...

  5. 2014-07-23 .NET实现微信公众号接入

    今天是在吾索实习的第11天.今天我跟我的实习小组的组员们,解决了关于使用ASP.NET进行微信公众号接入的问题.因为我们小组成员也是刚接触微信公众号的二次开发,所以在解决该问题的工程中也走了不少弯路. ...

  6. 微信公众号接入微软小冰

    前言 文章首发于微信公众号:前端指南.本文是一篇有点偏向于运营层面的技术类文章,文章略长,请耐心阅读. 也就是最近这几年,人工智能行业已经变得十分的火热了.不可否认,人工智能是整个互联网行业的一种趋势 ...

  7. 视频教程-微信公众号实战(Java版本,带前后台)-微信开发

    微信公众号实战(Java版本,带前后台) 2018年5月创办 威海科进网络科技有限公司,这里的视频主要是为了做个记录,方便员工提升自己的水平 陈健 ¥29.00 立即订阅 扫码下载「CSDN程序员学院 ...

  8. 从 0 开始最详细的微信公众号接入 AI

    从 0 开始最详细的微信公众号接入 AI 文章目录 从 0 开始最详细的微信公众号接入 AI 写在前面 注册公众号 克隆到服务器 使用过微信机器人项目 未使用过微信机器人项目 更改配置文件 启动项目 ...

  9. 微信公众号接入图灵机器人

    微信公众号接入图灵机器人 1. 申请一个微信公众号 这个步骤和申请一个小程序了类似,首先进入微信公众平台进行注册,关键是注册的时候是选择订阅号,还是服务号,我觉的如果你是自己做着玩的,就搞个订阅号,订 ...

最新文章

  1. ABAP 标准培训教程 BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素
  2. 探地雷达(GPR)的 C-scan (三维图)的绘制
  3. 钉钉作弊,被判5年!
  4. 自学python-python自学起来难不难?python学习路线分享
  5. Apache虚拟机和访问控制
  6. 【观察】SAP HANA+英特尔傲腾:珠联璧合,所向披靡
  7. 2位字母组合的全球国家或地区缩写
  8. 使用python绘制一个太阳花代码_如何绘制多样化的太阳花?
  9. 在训练的时候loss增大怎么办
  10. thinkphp6-学习记录-应用手册
  11. 【报告分享】2021年度小红书高效种草营销手册-标记我的生活-小红书(附下载)
  12. Windows XP SP2上安装.net 4
  13. 超详细快速入门JavaScript详解(一)
  14. centos-linux(64位)安装与配置
  15. 动作识别阅读笔记(三)《Temporal Segment Networks: Towards Good Practices for Deep Action Recognition》
  16. 余士维讲座中的十八个故事[转载]
  17. 医院在线问诊源码 医院视频问诊源码 医院小程序源码
  18. DVDRW光驱无法读DVD刻录盘
  19. 正方形面积(JAVA)
  20. 新手必看的MT4外汇交易软件知识

热门文章

  1. 正则表达式的模式匹配
  2. android平板手,诺基亚7.9寸Android平板真机上手 或售1499元
  3. 充电好快!小米20000mAh移动电源评测
  4. SecureCRT的常用命令
  5. Vue3毫秒倒计时(Countdown)
  6. Handler之实现倒计时功能
  7. 自己组装的电脑没有系统怎么使用U盘安装
  8. 从茄子网看,一项改进能够带来网络相册的全新世界
  9. 3555: [Ctsc2014]企鹅QQ
  10. Windows 2003 Server远程代码执行漏洞集合