日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java 微信jssdk签名_JAVA生成微信JSSDK接口签名

發布時間:2024/9/19 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 微信jssdk签名_JAVA生成微信JSSDK接口签名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簽名生成規則如下:

參與簽名的字段包括有效的 jsapi_ticket(獲取方式詳見微信 JSSDK 文檔), noncestr (隨機字符串,由開發者隨機生成),timestamp (由開發者生成的當前時間戳), url(當前網頁的URL,不包含#及其后面部分。注意:對于沒有只有域名沒有 path 的 URL ,瀏覽器會自動加上 / 作為 path,如打開 http://qq.com 則獲取到的 URL 為 http://qq.com/)。

對所有待簽名參數按照字段名的 ASCII 碼從小到大排序(字典序)后,使用 URL 鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串 string1。這里需要注意的是所有參數名均為小寫字符。

接下來對 string1 作 sha1 加密,字段名和字段值都采用原始值,不進行 URL 轉義。即 signature=sha1(string1)。

/**

*獲取JSSDK簽名

*url:當前頁面的完整URL,包括參數

**/

public Map getJsApiConfig(String url){

String jsapi_ticket = "獲取jsapi_ticket";

String noncestr = UUID.randomUUID().toString().replace("-", "");

String timestamp = "" + System.currentTimeMillis() / 1000;

Map params = new HashMap();

params.put("jsapi_ticket", jsapi_ticket);

params.put("noncestr", noncestr);

params.put("timestamp", timestamp);

params.put("url", url);

//1.1 對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)

Map sortParams = sortAsc(params);

//1.2 使用URL鍵值對的格式拼接成字符串

String str = mapJoin(sortParams, false);

String signature = new SHA().enc(str);

Map result = new HashMap();

result.put("debug", "false");

result.put("appId", appid);

result.put("nonceStr", noncestr);

result.put("timestamp", timestamp);

result.put("signature", signature);

return result;

}

private HashMap sortAsc(Map map) {

HashMap tempMap = new LinkedHashMap();

List> infoIds = new ArrayList>(map.entrySet());

//排序

Collections.sort(infoIds, new Comparator>() {

@Override

public int compare(Map.Entry o1, Map.Entry o2) {

return o1.getKey().compareTo(o2.getKey());

}

});

for (int i = 0; i < infoIds.size(); i++) {

Map.Entry item = infoIds.get(i);

tempMap.put(item.getKey(), item.getValue());

}

return tempMap;

}

public static String mapJoin(Map map, boolean valueUrlEncode) {

StringBuilder sb = new StringBuilder();

for (String key : map.keySet()) {

if (map.get(key) != null && !"".equals(map.get(key))) {

try {

String temp = (key.endsWith("_") && key.length() > 1) ? key.substring(0, key.length() - 1) : key;

sb.append(temp);

sb.append("=");

//獲取到map的值

String value = map.get(key);

//判斷是否需要url編碼

if (valueUrlEncode) {

value = URLEncoder.encode(map.get(key), "utf-8").replace("+", "%20");

}

sb.append(value);

sb.append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

if (sb.length() > 0) {

sb.deleteCharAt(sb.length() - 1);

}

return sb.toString();

}

jsapi_ticket和access_token一樣,有效時間為2個小時,自己服務器上使用緩存保留一小時,過期后重新獲取

總結

以上是生活随笔為你收集整理的java 微信jssdk签名_JAVA生成微信JSSDK接口签名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。