文档章节

微信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
weixin-java-tools 1.1.0 发布,重大更新版本

weixin-java-tools 1.1.0 发布(重大更新) issue #23 添加日志输出 issue #66 微信消息去重 issue #69 添加Session支持 issue #71 用xstream替换了jaxb issue #72 企业号成员的avatar和sta...

jarchan
2015/01/23
3.8K
3
WxJava 3.3.0 正式版本发布,微信开发 Java SDK

微信开发 Java SDK(Weixin Java Tools) 更名为 WxJava,并发布最新的3.3.0正式版本。本次版本更新没有太大变动,主要是增加了少量的接口,修复了一些bug和以往版本中一些不合理的接口格式,...

班纳睿
2018/12/23
0
0
【项目管理】软件项目经理须知的 Java 8 安全知识

【译者按】作为软件研发项目的项目经理,只懂项目管理知识是不够的,需要对软件技术本身有基本的了解。Java 是一种主流的系统开发语言,其安全设计对于构建安全的信息系统有至关重要的意义。...

军雷
2017/06/08
0
0
微信中页面二次分享小图标丢失问题

每天踩点坑,每天成长一点点,这样工作才会变得有趣。微信JSSDK踩坑记录。 在我们有房APP1.1的版本中增加了房产资讯的功能,昨天晚上有同事在群里反馈从APP中分享的资讯到微信中,然后再次分...

尹吉欢
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义线程池

自定义线程工厂: public class CustomThreadFactory implements ThreadFactory { private static final Logger LOGGER = LoggerFactory.getLogger(CustomThreadFactory.class); pu......

hensemlee
15分钟前
1
0
【剑指offer纪念版】-- 面试题目录

2.实现Singleton模式 3.二维数组中的查找 4.替换空格 5.从尾到头打印链表 6.重建二叉树 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列 10.二进制中1的个数 11.数值的整数次方 12...

细节探索者
27分钟前
1
0
记一次oom内核优化记录:vm.lower_zone_protection

情景 最近gitlab服务会偶发性500,当前机器部署了gitlab、nfs等服务,经过排查发现是nfsd引发oom,导致系统运行不畅。处理过程如下: 事故现场 开发在使用gitlab的时候发现,偶发性的出现500...

阿dai
今天
4
0
Spring Batch JSON 支持

Spring Batch 4.1 开始能够支持 JSON 格式了。这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [  {    "isin": "123",    ...

honeymose
今天
0
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部