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&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value";
String ss = "jsapi_ticket=kgt8ON7yVITDhtdwci0qeVobpUZDYzWPTM3stkoQPWc3AFG-gv46LxoOBqb9JK7cTZYzNDOI9nS-jcW-ppp9yQ&noncestr=sc1b3z71h2fdf3lu&timestamp=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;
}

最新文章

  1. LAMP布署笔记
  2. Eclipse中JAR System library 没有怎么添加?
  3. Step by step 如何创建一个新森林
  4. HDU 1051 Wooden Sticks
  5. LoarRunner11使用异常及解决方案
  6. bootstrap 弹出框点击其他区域时弹出框不消失选项设置
  7. input type=&quot;submit&quot; 和&quot;button&quot;有什么区别?
  8. SQL也能玩递归
  9. hdu1016Prime Ring Problem
  10. AJAX JQuery 调用后台方法返回值(不刷新页面)
  11. 前端资讯周报 2.27 - 3.5: 如何设计一个优秀的HTML接口,深入理解line-height
  12. 关于引入多个jquery冲突的问题(附一个很好用的validate前端验证框架及使用方法)
  13. esp8266 终于装上固件了!半个月了!开始进军简单粗暴的lua语言!!
  14. git 与 ftp 共同工作
  15. python mysql索引 优化神器explain 慢查询
  16. How to cast List&lt;Object&gt; to List&lt;MyClass&gt; Object集合转换成实体集合
  17. Tkinter的下拉列表Combobox
  18. oracle 存储过程给另一个用户的权限问题
  19. Oracle Applications Documentation
  20. POJO与PO、VO的区别

热门文章

  1. winform treeview 绑定文件夹和文件
  2. Setting an appropriate geodatabase spatial domain
  3. android线程及线程池
  4. 10个常用的ps命令总结,参数
  5. GNURADIO简单运用
  6. 【JAVA】StringTokenizer 迭代方式对字符串进行分割
  7. rails generate model/resource/scaffold的区别
  8. valgrind的callgrind工具进行多线程性能分析
  9. annex-b格式
  10. JAVA的IO操作:内存操作流