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

这篇文章主要介绍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 = "";//url是你请求的一个action或者controller地址,并且方法直接跳转到使用jsapi的jsp界面         Map<String, String> ret = sign(jsapi_ticket, url);         for (Map.Entry entry : ret.entrySet()) {             System.out.println(entry.getKey() + ", " + entry.getValue());         }     };   public static Map<String, String> sign(String jsapi_ticket, String url) {         Map<String, String> ret = new HashMap<String, String>();         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工具类代码:


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。