zoukankan      html  css  js  c++  java
  • 微信请求参数生成SHA1签名

    package com.dhht.wechat.util;

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;

    import java.util.HashMap;
    import java.util.Map;
    import java.util.SortedMap;
    import java.util.TreeMap;

    /**
    * @Author: sh
    * @Description: WechatUtil
    * @Date: 17:46 2019/10/15
    */
    public class WechatUtil {

    final static String KEY_S = "SIGNKEY-";

    public static String getSignKey(String url){
    return KEY_S+url;
    }

    /**
    * 获取access_token
    *
    * @param appId
    * @param secret
    * @return
    */
    public static String getAccessToken(String appId, String secret) {
    String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret;
    JSONObject jsonObject = SendMsgUtil.httpRequest(url, "GET", "{}");// 获取openid
    String access_token = jsonObject.getString("access_token");
    return access_token;
    }

    /**
    * 获取ticket
    *
    * @param accessToken
    * @return
    */
    public static String getJsapiTicket(String accessToken) {
    String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
    JSONObject jsonObject = SendMsgUtil.httpRequest(url, "GET", "{}");
    String ticket = jsonObject.getString("ticket");
    return ticket;
    }

    public static String geneJSSDKSign(String jsapiTicket, String url) {
    Map<String, String> configMap = new HashMap<>(8);
    String nonceStr = DateUtil.get32UUIDMilli();
    String timestamp = Long.toString(System.currentTimeMillis() / 1000);
    configMap.put("noncestr", nonceStr);
    configMap.put("jsapi_ticket", jsapiTicket);
    configMap.put("timestamp", timestamp);
    configMap.put("url", url);
    String sign = gengeSign(configMap);//SignUtils.createSign(configMap, "sha1", mechKey, null);
    configMap.put("signature",sign);
    configMap.remove("noncestr");
    configMap.put("nonceStr",nonceStr);
    Map result = new HashMap();
    result.put("code",1);
    result.put("message","OK");
    result.put("data",configMap);
    return JSON.toJSONString(result);
    }

    public static String gengeSign(Map<String, String> params) {
    SortedMap<String, String> sortedMap = new TreeMap<>(params);
    StringBuilder toSign = new StringBuilder();
    for (String key : sortedMap.keySet()) {
    String value = params.get(key);
    toSign.append(key).append("=").append(value).append("&");
    }
    String val = toSign.toString();
    val = val.substring(0,val.lastIndexOf("&"));
    System.out.println(val);
    String digest = SignatureUtil.sha1Encrypt(val);
    return digest;
    }

    public static void main(String[] args) {
    String time = Long.toString(System.currentTimeMillis() / 1000);
    System.out.println(time);
    System.out.println(geneJSSDKSign("sdfdsfds", "fdfdfd@@8"));
    }
    }
  • 相关阅读:
    从分布式系统的角度看REST
    修改python系统默认编码的一种方法
    Base PyQt4, Simple Web APP Framwork
    用python写的测试网页和文件编码的小程序
    Python学习笔记(二):标准流与重定向
    How to escape (percentencode) a URL with Python « SaltyCrane Blog
    python操作Excel读写使用xlrd
    Quickstart — Requests 0.10.7 documentation
    irb的子会话 相思雨 博客园
    基于python的汉字转GBK码
  • 原文地址:https://www.cnblogs.com/sung1024/p/11700655.html
Copyright © 2011-2022 走看看