文档章节

微信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
【项目管理】软件项目经理须知的 Java 8 安全知识

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

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

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

尹吉欢
05/08
0
0
Java结合keytool实现非对称签名与验证

原文出处:王洁 参考”Oracle–The Java Tutorials: Generate Keys” 还有姊妹篇:Java结合keytool实现非对称加密和解密 keytool的使用 keytool 是 JDK 自带的一个密钥库管理工具。这里只用到...

王洁
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
2
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
6
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
8
0
GPON网络故障处理手册

导读 为了方便广大网络工作者工作需要,特搜集以下GPON网络处理流程供大家学习参考。开始—初步定为故障—检查光纤状况—检查ONU状态--检查设备运行状态—检查设备数据配置—检查上层设备状态...

问题终结者
昨天
6
0
MariaDB、Apache安装

11月12日任务 11.6 MariaDB安装 11.7/11.8/11.9 Apache安装 1.MariaDB安装 cd /usr/local/src wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/......

hhpuppy
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部