【笔记——微信】微信公众号开发之微信验证

以上是整个流程

所需配置包括:

1、在微信公共号设置页面填写自己服务器的地址,具体到接收请求的地址。

2、在接受请求的地址进行验证。

具体实现:(Tomcat 作为服务器,jsp技术实现)

微信会要求对填写的地址进行验证,很简单,他会发送一个get请求到填写的地址,获取他,并按照官方说明进行返回,这一步骤也是为了自己的服务器安全,可以区别改请求是否来自微信官方服务器。

 1     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
 2             IOException {
 3         //获取参数
 4         String signature = req.getParameter("signature");
 5         //自己生成的signature
 6         String localSignature = "";
 7
 8         //生成signature
 9         localSignature = WeiXinUtils.createLocalSignature(req);
10
11         //配置输出
12         PrintStream out = new PrintStream(resp.getOutputStream());
13
14         //如果自己算出的signature与微信提供的一样,证明这是由微信发送过来的消息
15         if(signature.equals(localSignature)){
16             String echostr = req.getParameter("echostr");
17             //把从微信服务器获取的echostr返回给微信服务器
18             out.print(echostr);
19         }else{
20             //这里是另外加上去的,与验证无关,只是自己用来提示验证出错
21             out.print("验证出错");
22         }
23     }

一下是本地生成signature方法,大概步骤是先对获取的微信数据进行字典排序,然后尽心sha-1算法加密得到的结果就是本地signature

 1     public static String createLocalSignature(HttpServletRequest req){
 2         String timestamp = req.getParameter("timestamp");
 3         String nonce = req.getParameter("nonce");
 4         // create local key
 5         String localsignature = "";
 6         // 进行字典排序
 7         String[] so = new String[] { token, timestamp, nonce };
 8         Arrays.sort(so);
 9
10         // 把字符串进行链接
11         String value = "";
12         for (String str : so) {
13             value = value + str;
14         }
15
16         try {
17             //进行sha-1加密
18             MessageDigest md = MessageDigest.getInstance("SHA-1");
19             byte[] by = md.digest(value.getBytes());
20             localsignature = StringUtil.byteToString(by); //得到结果字符
21         } catch (NoSuchAlgorithmException e) {
22             e.printStackTrace();
23         }
24
25         return localsignature;
26     }

附上byteToString(byte[] b)方法

 1     public static String byteToString(byte[] b)
 2     {
 3         String hs = "";
 4         String stmp = "";
 5
 6         for (int n = 0; n < b.length; n++) {
 7             stmp = (Integer.toHexString(b[n] & 0Xff));
 8             if (stmp.length() == 1) {
 9                 hs = hs + "0" + stmp;
10             } else {
11                 hs = hs + stmp;
12             }
13         }
14         return hs.toLowerCase();
15     }

以上就是微信验证的全部内容

时间: 2024-11-09 15:59:15

【笔记——微信】微信公众号开发之微信验证的相关文章

atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制

atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制 1. token机制and  session保持状态机制 1 2. access token是什么?? 1 3. 为什么需要access token 2 4. 需不需要保存access_token,如何保存??? 2 5. access_token在何时被创建 2 6. 为什么不直接使用appid保持状态 2 7. access_token的过期问题 3 8.

微信公众号开发 (微信网页开发)

微信支付搞完之后,也开始了微信其他功能,不得不说,微信写得接口都比较齐全和标准,附上微信公众号开发文档链接,仔细阅读,必须严格按照其规则,才能调用微信的接口. 最近做了一个手机端调用微信接口打开摄像头进行扫描二维码功能和调用上传下载图片的接口,注意,在微信公众号配置要注意,[开发]-[接口权限] 查看对应的接口权限是开通了没有?最主要的是,还要在[公众号设置]-[功能设置]-[JS接口安全域名]配置,切记,一定是备案过的,一级二级都可以. 附上图片: 配置完此项之后,还有个地方需要配置的,需要特

.NET微信公众号开发-初始微信公众号

一.前言 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字.图片.语音.视频的全方位沟通.互动 .形成了一种主流的线上线下微信互动营销方式. 二.开发准备 在开发以前,公司给你把一些资料准备好,这时候你只需要登录微信公众平台https://mp.weixin.qq.com.启动我们的开发者模式 这些工作都准备好了就可以开始我们的编码工作了. 三.开始编码 第一步:我们要做的就是创建菜单.菜单分为一级菜单,二级菜单,官

微信公众号开发之微信支付

前几天因为公司项目需求,要做一个用微信在线充值的功能,就是在微信的浏览器里面点击一个网页调起微信支付,现在大致来说一下微信支付之公众号支付的开发流程: 首先你的公众号必须是认证服务号,要开通了微信支付的权限:在开发写代码之前我们要把支付相关的一些信息设置做好,以利于后续操作,开通之后微信那边就会给你发一封邮件,里面包含了你公众号商户平台的后台登陆相关的一些信息,登陆商户平台之后在->账户设置->API安全里面设置密钥,这个在后面会用到: 账户参数说明 邮件中参数 API参数名 详细说明 APP

微信公众号开发,微信手机端一直提示该公众号暂时无法提供服务,请稍候再试

遇到这个问题,一直在找原因,百度了很多,排除了防火墙,以及策略的问题,还有微信服务器屏蔽了IP. 之前的项目都是相同的代码,但是这次是另外一个项目,部署到客户那边,微信的消息管理,无法接收消息.(即微信服务器无法POST到配置好的URL上) 后面发现在客户的服务器上面,用域名和外网的IP无法访问,而在外网却可以用域名访问,而外网IP的也不能访问,当时一脸懵逼,好在经过公司的小伙伴一眼就看出了可能是代理服务器的问题.用cmd命令查看了下,发现是经过多层才能访问得到. 运行cmd,输入tracert

微信公众号开发教程 微信小程序

PHP微信公众平台开发高级篇 http://www.imooc.com/u/197650/courses?sort=publish 微信小程序教程 .链接:http://pan.baidu.com/s/1slmAwDf 密码:ciry

微信公众号开发系列-微信企业号开发相关参数

微信企业号出来之后,本人也抱着前面开发订阅号和服务号的经验来探究了一番,这里整理了下再开发企业号时候碰到的一些接口参数.企业号开发文档详见http://qydev.weixin.qq.com/wiki/index.php?title=首页 1.创建自定义菜单参数解释: 菜单管理的创建操作,官方定义如下所示. 请求说明 Https请求方式: POST https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&

微信公众号开发系列-微信企业号开发相关參数

微信企业号出来之后,本人也抱着前面开发订阅号和服务号的经验来探究了一番,这里整理了下再开发企业号时候碰到的一些接口參数.企业号开发文档详见http://qydev.weixin.qq.com/wiki/index.php?title=首页 1.创建自己定义菜单參数解释: 菜单管理的创建操作.官方定义例如以下所看到的. 请求说明 Https请求方式: POST https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_T

java微信公众号开发,token验证

import java.io.IOException; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.binjoo.utils.SH