sha1加密算法
public static void main(String[] args) throws UnsupportedEncodingException {
/*
* 获取jsapi_ticket
*
*/
//获取access_token
String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
accessTokenUrl = accessTokenUrl.replace("APPID", Configure.appID);
accessTokenUrl = accessTokenUrl.replace("APPSECRET", Configure.appsecret);
JSONObject jsonObject = NetTools.httpsRequest(accessTokenUrl, "GET", null);
// System.out.println("jsonObject---"+jsonObject);
String accessToken = (String) jsonObject.get("access_token");
// System.out.println("accessToken---"+accessToken);
//获取jsapi_ticket
String jsapiTicketUrl ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
jsapiTicketUrl = jsapiTicketUrl.replace("ACCESS_TOKEN", accessToken);
JSONObject jsapiObject = NetTools.httpsRequest(jsapiTicketUrl, "GET", null);
Integer errCode = (Integer) jsapiObject.get("errcode");
// System.out.println("errCode---"+errCode);
String ticket = (String) jsapiObject.get("ticket");
WxPaySendData data = new WxPaySendData();
data.setAppId(Configure.appID);
System.out.println("time--"+Calendar.getInstance().getTimeInMillis()+"".length());
String timeStr = Calendar.getInstance().getTimeInMillis()+"";
timeStr = timeStr.substring(0, 9);
data.setTimeStamp(timeStr);
data.setNonceStr(RandomStringGenerator.getRandomStringByLength(16));
data.setJspUrl("http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92");
data.setJsapiTicket(ticket);
// String signature = UnifiedorderService.jsapiSign(data);
System.out.println("ticket---"+ticket);
System.out.println("nonceStr----"+data.getNonceStr());
System.out.println("timestamp----"+data.getTimeStamp());
// System.out.println("signature---"+signature);
//字典序排序
HashMap<String,Object> map=new HashMap<String,Object>();
map.put("jsapi_ticket", data.getJsapiTicket());
map.put("noncestr", data.getNonceStr());
map.put("timestamp", data.getTimeStamp());
map.put("url", data.getJspUrl());
Collection<String> keyset= map.keySet();
List<String> list=new ArrayList<String>(keyset);
Collections.sort(list);
//这种打印出的字符串顺序和微信官网提供的字典序顺序是一致的
String detail = "";
for(int i=0;i<list.size();i++){
if(i == 0 ){
detail = list.get(i)+"="+map.get(list.get(i));
}else{
detail += "&"+list.get(i)+"="+map.get(list.get(i));
}
System.err.println(list.get(i)+"="+map.get(list.get(i)));
}
System.err.println("detail--"+detail);
String s = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value";
String ss = "jsapi_ticket=kgt8ON7yVITDhtdwci0qeVobpUZDYzWPTM3stkoQPWc3AFG-gv46LxoOBqb9JK7cTZYzNDOI9nS-jcW-ppp9yQ&noncestr=sc1b3z71h2fdf3lu×tamp=1504253434&url=http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92";
System.out.println("detail--"+s);
System.out.println("s--+"+getSha1(detail));
}
public static String getSha1(String str){
if (null == str || 0 == str.length()){
return null;
}
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));
byte[] md = mdTemp.digest();
int j = md.length;
char[] buf = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
最新文章
- LAMP布署笔记
- Eclipse中JAR System library 没有怎么添加?
- Step by step 如何创建一个新森林
- HDU 1051 Wooden Sticks
- LoarRunner11使用异常及解决方案
- bootstrap 弹出框点击其他区域时弹出框不消失选项设置
- input type=";submit"; 和";button";有什么区别?
- SQL也能玩递归
- hdu1016Prime Ring Problem
- AJAX JQuery 调用后台方法返回值(不刷新页面)
- 前端资讯周报 2.27 - 3.5: 如何设计一个优秀的HTML接口,深入理解line-height
- 关于引入多个jquery冲突的问题(附一个很好用的validate前端验证框架及使用方法)
- esp8266 终于装上固件了!半个月了!开始进军简单粗暴的lua语言!!
- git 与 ftp 共同工作
- python mysql索引 优化神器explain 慢查询
- How to cast List<;Object>; to List<;MyClass>; Object集合转换成实体集合
- Tkinter的下拉列表Combobox
- oracle 存储过程给另一个用户的权限问题
- Oracle Applications Documentation
- POJO与PO、VO的区别