微信公众号开发-java版 腾讯课堂

微信测试号申请地址: 微信二维码直接扫描登录

1.新建web项目

2.内网穿透映射公网ip  (免费隧道需要支付宝实名认证)

3.微信接入验证签名 TOKEN自己定义 接入成功微信保存 路径和TOKEN

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

package wxTest;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;/*** Created by Administrator on 2019/3/15/0015.*/
public class wxService {/*** 验证签名* @param TOKEN* @param timestamp* @param nonce* @param signature* @return* 1)将token、timestamp、nonce三个参数进行字典序排序* 2)将三个参数字符串拼接成一个字符串进行sha1加密* 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/public static boolean check(String TOKEN, String timestamp, String nonce, String signature) {//1)将token、timestamp、nonce三个参数进行字典序排序String[] strings = {TOKEN, timestamp, nonce};Arrays.sort(strings);String str =strings[0]+strings[1]+strings[2];// 将三个参数字符串拼接成一个字符串进行sha1加密String mysid =sha1(str);System.err.println(mysid);System.err.println(signature);return mysid.equalsIgnoreCase(signature);}private static String sha1(String str) {//获取加密对象MessageDigest md = null;StringBuffer sb = new StringBuffer();try {md = MessageDigest.getInstance("sha1");byte[] digest = md.digest(str.getBytes());char[] chars={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};for (byte b:digest){sb.append(chars[(b>>4)&15]);sb.append(chars[b&15]);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}
}

package wxTest;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;/*** Created by Administrator on 2019/3/15/0015.*/
@WebServlet("/wx")
public class wxServlet extends HttpServlet {public static  final String TOKEN ="13245";protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {System.err.println("post");}protected void doGet( HttpServletRequest request,  HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {System.err.println("get");/*** 验证消息的确来自微信服务器**signature    微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp    时间戳nonce    随机数echostr    随机字符串*/String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (wxService.check(TOKEN,timestamp,nonce,signature)){System.err.println("接入成功");PrintWriter writer = response.getWriter();writer.print(echostr);writer.flush();writer.close();}else{System.err.println("接入失败");}}
}

转载于:https://www.cnblogs.com/cuinima/p/10534666.html

微信公众号开发-java版 腾讯课堂(开发接入)相关推荐

  1. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

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

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

  3. 微信公众号支付java前后端分离开发

    微信公众号支付java前后端分离开发 微信公众号支付java前后端分离开发 我们开发的是基于河北银行的支付,支付宝微信都做了,这里就介绍一下微信公众号支付,这个公众号支付需要配置的东西太多了,官方文档 ...

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

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

  5. 自己做的微信小程序、微信公众号、H5版日历签到积分源码包

    微信小程序版 自己写的微信小程序日历签到模块;只需修改接口地址和对应返回参数就能动态生成整个模块: 小程序版源码包 微信公众号.H5版 背景图点击签到: 本日已签到.未签到文字提示: 已签到积分文字提 ...

  6. java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO

    1.5.4微信验证的控制方法: /** * 微信验证 * 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证 * 验证服务器地址的有效性 * 开发者提 ...

  7. php实现微信公众号分享,php版微信公众号自定义分享内容实现方法

    搜索热词 PHP版微信公众号自定义分享内容实现方法,希望对您有用.如果有疑问,可以联系我们. PHP版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 自定义分享内容了,下面我们来看 ...

  8. 微信公众号关注/取消关注事件推送开发记录

    一.奉上官方文档 关注/取消关注事件 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/Message_Managem ...

  9. 从零接入微信公众号(Java实现 附源码)

    目录 从零接入微信公众号 一.微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二.测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三.微信公众号网页授权 1 ...

最新文章

  1. 原生ajax+php上传图片的简单实现
  2. 欧盟为无人机立法,对国产厂商是福还是祸?
  3. 近期发现的一些-20190519
  4. Zend Studio使用教程:使用PHPUnit检测代码(四)
  5. 赛思互动:为什么越来越多的企业愿意接受SaaS服务?
  6. 什么是MCU里应尽量遵循的寄存器谨慎赋值法?
  7. 蓝桥杯第六届国赛JAVA真题----切开字符串
  8. linux获取系统启动时间
  9. express获取参数的几种方法
  10. 模拟信号的数字处理方法
  11. Java编程练习题:Demo17-Demo32
  12. Error obtaining UI hierarchy Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncExc
  13. 2016基于百度地图定位
  14. 一个工厂有m条流水线
  15. 一个表情包引发的悬案!
  16. 实战 Java 第10天:商品分页查询
  17. matlab把图片制作成视频
  18. 单目视觉定位测距的两种方式
  19. win10快捷方式变成空白图标怎么办?
  20. 更换网站字体详细教程附字体包

热门文章

  1. 视频播放器:GSYVideoPlayer
  2. nodejs+sequelize实现sqlite3开启密码认证
  3. 一种基于深度学习的方法来检测摩托车头盔的使用
  4. c++面试经验 | 锐捷网络嵌入式委培班 (一)
  5. matlab/simulink 二次调频,风电调频,储能调频,四机两区系统,风机调频,新能源调频,新能源机组替换传统同步机组,风储渗透率25%
  6. 极域电子教室的应用功能有多少-电子教室
  7. 图片处理软件:Corel Paint Shop Pro Photo X3
  8. 从零开发一款相机APP 第九篇: Camera2相机 录像功能实现
  9. 诺基亚E63内存清理法
  10. 免费的JSP服务器-SAE主机