微信公众号开发-java版 腾讯课堂(开发接入)
微信公众号开发-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版 腾讯课堂(开发接入)相关推荐
- Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...
- 视频教程-微信公众号实战(Java版本,带前后台)-微信开发
微信公众号实战(Java版本,带前后台) 2018年5月创办 威海科进网络科技有限公司,这里的视频主要是为了做个记录,方便员工提升自己的水平 陈健 ¥29.00 立即订阅 扫码下载「CSDN程序员学院 ...
- 微信公众号支付java前后端分离开发
微信公众号支付java前后端分离开发 微信公众号支付java前后端分离开发 我们开发的是基于河北银行的支付,支付宝微信都做了,这里就介绍一下微信公众号支付,这个公众号支付需要配置的东西太多了,官方文档 ...
- 微信公众号后台java开发实现自动回复机器人
1.注册微信公众号.(简单) 2.注册图灵机器人.(自己百度) 1)注册后可以拿到key (注意 api接入里的钥匙不要打开,否则要加解密,麻烦) 3.配置微信公众号服务器验证. 1)在开发的基本 ...
- 自己做的微信小程序、微信公众号、H5版日历签到积分源码包
微信小程序版 自己写的微信小程序日历签到模块;只需修改接口地址和对应返回参数就能动态生成整个模块: 小程序版源码包 微信公众号.H5版 背景图点击签到: 本日已签到.未签到文字提示: 已签到积分文字提 ...
- java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO
1.5.4微信验证的控制方法: /** * 微信验证 * 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证 * 验证服务器地址的有效性 * 开发者提 ...
- php实现微信公众号分享,php版微信公众号自定义分享内容实现方法
搜索热词 PHP版微信公众号自定义分享内容实现方法,希望对您有用.如果有疑问,可以联系我们. PHP版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 自定义分享内容了,下面我们来看 ...
- 微信公众号关注/取消关注事件推送开发记录
一.奉上官方文档 关注/取消关注事件 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/Message_Managem ...
- 从零接入微信公众号(Java实现 附源码)
目录 从零接入微信公众号 一.微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二.测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三.微信公众号网页授权 1 ...
最新文章
- 原生ajax+php上传图片的简单实现
- 欧盟为无人机立法,对国产厂商是福还是祸?
- 近期发现的一些-20190519
- Zend Studio使用教程:使用PHPUnit检测代码(四)
- 赛思互动:为什么越来越多的企业愿意接受SaaS服务?
- 什么是MCU里应尽量遵循的寄存器谨慎赋值法?
- 蓝桥杯第六届国赛JAVA真题----切开字符串
- linux获取系统启动时间
- express获取参数的几种方法
- 模拟信号的数字处理方法
- Java编程练习题:Demo17-Demo32
- Error obtaining UI hierarchy Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncExc
- 2016基于百度地图定位
- 一个工厂有m条流水线
- 一个表情包引发的悬案!
- 实战 Java 第10天:商品分页查询
- matlab把图片制作成视频
- 单目视觉定位测距的两种方式
- win10快捷方式变成空白图标怎么办?
- 更换网站字体详细教程附字体包
热门文章
- 视频播放器:GSYVideoPlayer
- nodejs+sequelize实现sqlite3开启密码认证
- 一种基于深度学习的方法来检测摩托车头盔的使用
- c++面试经验 | 锐捷网络嵌入式委培班 (一)
- matlab/simulink 二次调频,风电调频,储能调频,四机两区系统,风机调频,新能源调频,新能源机组替换传统同步机组,风储渗透率25%
- 极域电子教室的应用功能有多少-电子教室
- 图片处理软件:Corel Paint Shop Pro Photo X3
- 从零开发一款相机APP 第九篇: Camera2相机 录像功能实现
- 诺基亚E63内存清理法
- 免费的JSP服务器-SAE主机