文档章节

微信开发、Java服务器有效性验证

牧歌_MG
 牧歌_MG
发布于 2016/04/30 22:44
字数 300
阅读 296
收藏 12

验证代码:

CheckServiceServlet.java
/**
 * Servlet implementation class CheckService
 * Java微信服务器验证
 */
public class CheckServiceServlet extends HttpServlet {

    private static final long serialVersionUID = 7783989149982325969L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        //获取参数
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        //获取输出对象
        PrintWriter out = response.getWriter();
        //验证
        if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
            out.print(echostr);
        }
    }
}

工具类:

CheckUtil.java
public class CheckUtil {
    private static final String Token = "weixintoken";
    
    /**
     * 1)将token、timestamp、nonce三个参数进行字典序排序
     * 2)将三个参数字符串拼接成一个字符串进行sha1加密
     * 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
     * @param signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
     * @param timestamp 时间戳
     * @param nonce 随机数
     * @return
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        String[] arr = new String[] { Token, timestamp, nonce };
        // 1、排序
        Arrays.sort(arr);
        // 2、生成字符串
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]);
        }
        // sha1加密
        String temp = SHA1.sha1(sb.toString());
        
        return temp.equals(signature);
    }
}

web配置:

web.xml
  <servlet>
    <description></description>
    <display-name>CheckService</display-name>
    <servlet-name>CheckService</servlet-name>
    <servlet-class>com.mg.weixin.servlet.CheckServiceServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CheckService</servlet-name>
    <url-pattern>/check.do</url-pattern>
  </servlet-mapping>

项目结构:

请求URL:

http://api.xxx.com/weixin/check.do

© 著作权归作者所有

牧歌_MG
粉丝 0
博文 22
码字总数 2944
作品 0
成都
私信 提问
微信支付 SDK 惊爆漏洞:黑客可 0 元购买任意商品(转)

今天,国外安全社区 Seclists.Org 里一名白帽子披露了微信支付官方 SDK 存在严重的 XXE 漏洞,可导致商家服务器被入侵,且黑客可避开真实支付通道,用虚假的支付通知来购买任意产品。 值得一...

鉴客
2018/07/04
1K
3
Java微信开发_00_资源汇总贴

1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E......

rayner
2017/08/07
0
0
Scala 比 Java 还快?

通常Scala被认为比Java要慢,特别是用于函数式编程时。本文会解释为什么这个被广泛接受的假设是错误的。 数据验证 编程中一个常见的问题是数据验证。即我们要确保所有得到的数据处于正确的结...

oschina
2014/06/22
25.7K
48
微信订阅号自定义菜单java开发

小弟应运营要求要更改公众号菜单,本以为是在公众号官网上进行配置即可,,谁知道 竟然是开发者模式编辑的。无奈,从未接触过公众号开发的我。有开始啃开了微信开发的api,原来的做这个得小伙...

明瞐
2018/11/21
53
0
Scala实战-通过微信聊天窗口实现应答式点餐 1:连接微信API

当前代码tag: v0.0.1,https://github.com/yangbajing/wechat-meal/tree/v0.0.1 微信公众号提供了详尽的API文档说明,提供了明文和加密两种接入方式。这里,我们选择加密的接入方式微信公众号...

羊八井
2015/08/18
245
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
6
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部