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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中nonce_java如何获取微信timestamp,nonceStr,signature参数

發布時間:2024/9/27 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中nonce_java如何获取微信timestamp,nonceStr,signature参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java如何獲取微信timestamp,nonceStr,signature參數

發布時間:2021-01-18 11:46:12

來源:億速云

閱讀:57

作者:小新

這篇文章主要介紹java如何獲取微信timestamp,nonceStr,signature參數,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

用java代碼來實現獲取timestamp,nonceStr,signature這三個參數

Sign代碼:package?com.test.util;

import?java.util.UUID;

import?java.util.Map;

import?java.util.HashMap;

import?java.util.Formatter;

import?java.security.MessageDigest;

import?java.security.NoSuchAlgorithmException;

import?java.io.UnsupportedEncodingException;

public?class?Sign?{

public?static?void?main(String[]?args)?{

String?jsapi_ticket?=JsapiTicketUtil.getJSApiTicket();;

//?注意?URL?一定要動態獲取,不能?hardcode

String?url?=?"http://www.vxzsk.com/xx/x.do";//url是你請求的一個action或者controller地址,并且方法直接跳轉到使用jsapi的jsp界面

Map?ret?=?sign(jsapi_ticket,?url);

for?(Map.Entry?entry?:?ret.entrySet())?{

System.out.println(entry.getKey()?+?",?"?+?entry.getValue());

}

};

public?static?Map?sign(String?jsapi_ticket,?String?url)?{

Map?ret?=?new?HashMap();

String?nonce_str?=?create_nonce_str();

String?timestamp?=?create_timestamp();

String?string1;

String?signature?=?"";

//注意這里參數名必須全部小寫,且必須有序

string1?=?"jsapi_ticket="?+?jsapi_ticket?+

"&noncestr="?+?nonce_str?+

"&timestamp="?+?timestamp?+

"&url="?+?url;

System.out.println(string1);

try

{

MessageDigest?crypt?=?MessageDigest.getInstance("SHA-1");

crypt.reset();

crypt.update(string1.getBytes("UTF-8"));

signature?=?byteToHex(crypt.digest());

}

catch?(NoSuchAlgorithmException?e)

{

e.printStackTrace();

}

catch?(UnsupportedEncodingException?e)

{

e.printStackTrace();

}

ret.put("url",?url);

ret.put("jsapi_ticket",?jsapi_ticket);

ret.put("nonceStr",?nonce_str);

ret.put("timestamp",?timestamp);

ret.put("signature",?signature);

return?ret;

}

private?static?String?byteToHex(final?byte[]?hash)?{

Formatter?formatter?=?new?Formatter();

for?(byte?b?:?hash)

{

formatter.format("%02x",?b);

}

String?result?=?formatter.toString();

formatter.close();

return?result;

}

private?static?String?create_nonce_str()?{

return?UUID.randomUUID().toString();

}

private?static?String?create_timestamp()?{

return?Long.toString(System.currentTimeMillis()?/?1000);

}

}

第16行main方法中的一個變量url就是你請求的一個action或者controller地址,并且方法直接跳轉到使用jsapi的jsp界面

獲取jsapi_ticket工具類代碼:package?com.test.util;

import?java.io.BufferedReader;

import?java.io.IOException;

import?java.io.InputStreamReader;

import?java.net.MalformedURLException;

import?java.net.URL;

import?java.net.URLConnection;

import?net.sf.json.JSONObject;

import?com.test.weixin.TestAcessToken;

/***

*?@author?V型知識庫??www.vxzsk.com

*

*/

public?class?JsapiTicketUtil?{

/***

*?模擬get請求

*?@param?url

*?@param?charset

*?@param?timeout

*?@return

*/

public?static?String?sendGet(String?url,?String?charset,?int?timeout)

{

String?result?=?"";

try

{

URL?u?=?new?URL(url);

try

{

URLConnection?conn?=?u.openConnection();

conn.connect();

conn.setConnectTimeout(timeout);

BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(conn.getInputStream(),?charset));

String?line="";

while?((line?=?in.readLine())?!=?null)

{

result?=?result?+?line;

}

in.close();

}?catch?(IOException?e)?{

return?result;

}

}

catch?(MalformedURLException?e)

{

return?result;

}

return?result;

}

public?static?String?getAccessToken(){

String?appid="你公眾號基本設置里的應用id";//應用ID

String?appSecret="你公眾號基本設置里的應用密鑰";//(應用密鑰)

String?url?="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";

String?backData=TestAcessToken.sendGet(url,?"utf-8",?10000);

String?accessToken?=?(String)?JSONObject.fromObject(backData).get("access_token");

return?accessToken;

}

public?static?String?getJSApiTicket(){

//獲取token

String?acess_token=?JsapiTicketUtil.getAccessToken();

String?urlStr?=?"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+acess_token+"&type=jsapi";

String?backData=TestAcessToken.sendGet(urlStr,?"utf-8",?10000);

String?ticket?=?(String)?JSONObject.fromObject(backData).get("ticket");

return??ticket;

}

public?static?void?main(String[]?args)?{

String?jsapiTicket?=?JsapiTicketUtil.getJSApiTicket();

System.out.println("調用微信jsapi的憑證票為:"+jsapiTicket);

}

}

讀者可直接把代碼復制到myeclipse或者Eclipse中運行main方法即可,但是在這里提示讀者JsapiTicketUtil中獲取acces_token方法中需要讀者自行填寫自己的appid和appsecret。

以上是“java如何獲取微信timestamp,nonceStr,signature參數”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

總結

以上是生活随笔為你收集整理的java中nonce_java如何获取微信timestamp,nonceStr,signature参数的全部內容,希望文章能夠幫你解決所遇到的問題。

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