接入必须的参数
URL服务器地址用于接受微信消息和事件(http://…….aliapp.com/servlet/MyServlet
servlet/MyServlet为web.xml中你配置的url-pattern)

<servlet><servlet-name>MyServlet</servlet-name><servlet-class>servlet.MyServlet</servlet-class></servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/servlet/MyServlet</url-pattern></servlet-mapping>

Token开发者任意填写,与服务器中设置的Token一致
EncodingAESKey 43位随机数可手动填写或随机生成用户消息的加密解密

服务器我用的阿里云ACE,免费的有百度和新浪BAE、SAE不过要实名认证不然很坑!

服务器代码
servlet.java代码
接入微信端时,微信端发送GET请求

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {logger.error("doget--接入微信校验------->:");// 微信加密签名String signature = request.getParameter("signature");// 时间戮String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");// 随机字符串String echostr = request.getParameter("echostr");PrintWriter out = response.getWriter();// 通过检验 signature 对请求进行校验,若校验成功则原样返回 echostr,表示接入成功,否则接入失败if (SignUtil.checkSignature(signature, timestamp, nonce)) {out.print(echostr);}out.close();out = null;}

SignUtil.java

/*** 接入微信时的校验* * @author admin* */
public class SignUtil {/*** 与接口配置信息中的 token 要一致,这里赋予什么值,在接口配置信息中的Token就要填写什么值,* 两边保持一致即可,建议用项目名称、公司名称缩写等,我在这里用的是项目名称weixinface*/private static String token = "weixin";/*** 验证签名* * @param signature* @param timestamp* @param nonce* @return*/public static boolean checkSignature(String signature, String timestamp, String nonce) {String[] arr = new String[] { token, timestamp, nonce };// 将 token, timestamp, nonce 三个参数进行字典排序Arrays.sort(arr);StringBuilder content = new StringBuilder();for (int i = 0; i < arr.length; i++) {content.append(arr[i]);}MessageDigest md = null;String tmpStr = null;try {md = MessageDigest.getInstance("SHA-1");// 将三个参数字符串拼接成一个字符串进行 shal 加密byte[] digest = md.digest(content.toString().getBytes());tmpStr = byteToStr(digest);} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}content = null;// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;}/*** 将字节数组转换为十六进制字符串* * @param digest* @return*/private static String byteToStr(byte[] digest) {String strDigest = "";for (int i = 0; i < digest.length; i++) {strDigest += byteToHexStr(digest[i]);}return strDigest;}/*** 将字节转换为十六进制字符串* * @param b* @return*/private static String byteToHexStr(byte b) {char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };char[] tempArr = new char[2];tempArr[0] = Digit[(b >>> 4) & 0X0F];tempArr[1] = Digit[b & 0X0F];String s = new String(tempArr);return s;}
}

做完这些就配置成功啦
需注意微信接入的token和服务器代码中的token需一致

微信公众平台开发者模式(1)JAVA版接入相关推荐

  1. 微信公众号开发者自动回复php,微信公众平台开发者模式的启用并自动回复

    这篇文章介绍的内容是关于微信公众平台开发者模式的启用并自动回复,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 首先,什么是开发者模式? 开发者模式,就是先验证你的服务器地址,验证完成之 ...

  2. MVC下c#对接微信公众平台开发者模式

    在ashx文件中进行HttpContext的处理: using System; using System.Collections.Generic; using System.Linq; using S ...

  3. 微信公众平台开发入门教程[2019版]

    关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...

  4. 微信公众平台开发入门教程[2020版]

    在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见左侧 ...

  5. 微信公众平台开发者配置

    目录 第一部分 启用开发者配置 (1) 登录微信公众平台 (2)配置IP 白名单 (3)启用开发者配置 (4)具体的代码调用部分 第二部分 接收事件推送 (1)接口 (2) 业务逻辑类 (3)Mess ...

  6. java 模板接口开发_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  7. 微信公众号基本设置服务器设置教程,最新最全的微信公众号开发者模式配置

    微信公众号的开发分为编辑模式和开发者模式,那么最新最全的微信公众号开发者模式配置是什么呢,下面是学习啦小编收集整理的最新最全的微信公众号开发者模式配置,希望对大家有帮助~~ 最新最全的微信公众号开发者 ...

  8. 微信开发者模式php,php 开启微信公众号开发者模式

    php 开启微信公众号开发者模式 /** * wechat php test */ header('Content-type:text'); //define your token //定义TOKEN ...

  9. 微信信息回复 java,微信公众平台开发中使用Java如何实现一个消息回复功能

    微信公众平台开发中使用Java如何实现一个消息回复功能 发布时间:2020-11-17 16:11:11 来源:亿速云 阅读:82 作者:Leah 本篇文章给大家分享的是有关微信公众平台开发中使用Ja ...

最新文章

  1. 基于CAP模型设计企业级真正高可用的分布式锁
  2. ios时间相差多少天_IOS计算某个日期和当前时间的天数差
  3. 【学习笔记】ABAP OOD设计模式 - 单例模式
  4. python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)
  5. 如何添加自动更新Play Framework 2.X项目的版本号
  6. 怎么解决机械革命笔记本蓝屏问题
  7. UML--类之间的五种关系
  8. ffplay 源码 option 部分阅读ing
  9. Blend4精选案例图解教程(二):找张图片玩特效
  10. python字典返回键值对_从Python字典对象中提取键值对的子集?
  11. Spark大数据平台
  12. 方根法公式_Excel怎么对一个数开n次方根 Excel开方方法汇总
  13. jieba分词的基本用法和词性标注
  14. mysql dual表用法_详解Oracle数据库中DUAL表的使用
  15. html加载完成 产生动作,页面加载功能设计总结
  16. 给大家分享下做短视频运营的干货
  17. jQuery根据ID删除元素
  18. C#完美实现打开笔记本电脑摄像头
  19. 老卫带你学---CMake Error: CMake was unable to find a build program corresponding to MinGW Makefiles. CM
  20. William Xiong's Blog is starting...

热门文章

  1. 海康威视错误代码说明
  2. 【愚公系列】华为云系列之DevCloud+ECS+MySQL搭建超级冷笑话网站【开发者专属集市】
  3. graylog+kafka+zookeeper(单机测试及源码),graylog设置URL报警方式(五)
  4. python绘制人际关系图_干货!利用Python绘制精美网络关系图
  5. Robotstudio 获取机器人D-H参数
  6. ubuntu16.04通过网络访问windows共享文件夹(samba)
  7. FPGA|通过AS下载固化
  8. python —— 使用sympy模块求解数学方程
  9. 如何构稳健的商品期cry组合
  10. 如何删除word中表格后面的空白页