文档章节

微信jsapi签名算法-java

秦学强
 秦学强
发布于 2017/07/09 22:03
字数 212
阅读 0
收藏 0
@RequestMapping("/wechatCheck")
    public void wechatCheck(HttpServletRequest request,HttpServletResponse response) throws Exception{
        String url = request.getParameter("url");
        Properties properties = PropertiesFileUtil.getApplicationProperties();
        String appid = properties.getProperty("weixin.appid");
        String appsecret = properties.getProperty("weixin.appsecret");
        String jsapi_ticket = "";

        String res = HttpRequestUtil.httpsGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret );
        String access_token = JSONObject.fromObject(res).getString("access_token");
        res = HttpRequestUtil.httpsGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi");
        jsapi_ticket = JSONObject.fromObject(res).getString("ticket");
        String timestamp = String.valueOf(CommonUtil.getCurrTimes());
        String noncestr = CommonUtil.createNonceStr();
        SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();
        parameters.put("jsapi_ticket", jsapi_ticket);
        parameters.put("timestamp", timestamp);
        parameters.put("noncestr", noncestr);
        parameters.put("url", url);
        parameters.put("signature", createSign(parameters));
        parameters.put("appid",appid);
        JSONObject jsonObject = JSONObject.fromObject(parameters);
        String respStr = jsonObject.toString();
        System.out.println("wechatCheck返回的数据:" + respStr);
        response.getWriter().write(respStr);
    }

    /**
     * 微信jsapi签名算法sign
     * @param parameters
     * @return
     */
    public static String createSign(SortedMap<Object,Object> parameters){
        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
        Iterator it = es.iterator();
        while(it.hasNext()) {
            Map.Entry entry = (Map.Entry)it.next();
            String k = (String)entry.getKey();
            Object v = entry.getValue();
            if(null != v && !"".equals(v)
                    && !"sign".equals(k) && !"key".equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }
//        key = "192006250b4c09247ec02edce69f6a2d";//debugTest
//        sb.append("key=" + key);
        sb.deleteCharAt(sb.length() - 1);
        logger.debug(sb);
        String sign = CommonUtil.SHA1(sb.toString());
        return sign;
    }

 

本文转载自:http://blog.csdn.net/u014481096/article/details/56009040

共有 人打赏支持
秦学强

秦学强

粉丝 0
博文 69
码字总数 0
作品 0
海淀
程序员
微信Js分享朋友接口invalid signature解决方法

导致这个错误是因为签名算法错误 签名需要 noncestr timestamp(因为变量长度限制,不能直接使用毫秒时间戳,要除以1000) jsapi_ticket url 根据微信的文档说明做的话 最容易出错的地方是url...

在途
2015/04/27
0
3
使用java技术实现IBM VIAVOICE 语音朗读技术

Java Speech API :http://java.sun.com/products/java-media/speech/ Java Speech API 允许开发人员将语音技术整合到 Java applet 和应用程序的用户界面中。这种 API 规定一个跨平台的接口来...

junwong
2012/03/09
0
0
《成神之路-基础篇》JVM——垃圾回收(已完结)

Java内存模型,Java内存管理,Java堆和栈,垃圾回收 本文是[《成神之路系列文章》][1]的第一篇,主要是关于JVM的一些介绍。 持续更新中 Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收 ...

05/05
0
0
Java结合keytool实现非对称加密和解密

原文出处:王洁 参考:Java结合keytool实现非对称签名与验证 那一篇讲签名,这一篇将加密解密。在Java安全体系中,签名属于JAAS模块,加解密属于JCE模块。 keytool的使用 keytool是JDK自带的...

王洁
08/08
0
0
Android外部文件加解密及应用实践

有这样的应用场景,当我们把一些重要文件放到asset文件夹中时,把.apk解压是可以直接拿到这个文件的,一些涉及到重要信息的文件我们并不想被反编译拿去,这个时候需要先对文件进行加密,然后...

C6C
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一步步编写自己的PHP爬取代理IP项目(二)

这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。 这里就是一个个免费的IP地址以及各自...

NateHuang
28分钟前
1
0
11-利用思维导图梳理JavaSE-Java的反射机制

11-利用思维导图梳理JavaSE-Java的反射机制 主要内容 1.反射与Class类 1.1.反射概念 1.2.Class类 1.3.实例化Class类 1.4.反射的作用 1.5.Class对象的作用 2.反射的深入应用 2.1.调用无参的成...

飞鱼说编程
34分钟前
1
0
How to serve the world from home computer?

最近在开发web应用,很想知道,通过公网来访问,效果会不会好。今天在做家务的时候,突然想到,如果我自己写一个ip转发的工具,不就可以实现了吗?但是转过头一想,这么大众的想法,怎么会没...

pearma
50分钟前
1
0
今天在码云遇到一个很有意思的人 for Per.js

今天在码云遇到一个很有意思的人,他在我的Per.js项目下面评论了一句,大意为“你试试这句代码,看看速度到底是你快还是Vue快”【当然,这个评论被我手残不小心删掉了...】。 然后我就试了,...

Skyogo
今天
50
0
Java -------- 首字母相关排序总结

Java 字符串数组首字母排序 字符串数组按首字母排序:(区分大小写) String[] strings = new String[]{"ba","aa","CC","Ba","DD","ee","dd"}; Arrays.sort(strings); for (int i ...

切切歆语
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部