首创
public class WxConfigUtil {
// 获取access_token的接口地址(GET)public final static String access_token_url = "**********";
// 获取jsapi_ticket的接口地址(GET)
public final static String jsapi_ticket_url = "***********";
// 缓存添加的时间
public static String cacheAddTime = "";
// token,ticket缓存
public static Map<String, Token> TOKEN_TICKET_CACHE = new HashMap<String, Token>();
// token对应的key
private static final String TOKEN = "token";
// ticket对应的key
private static final String TICKET = "ticket";
/**
* 外部获取签名入口类
*
* @param appUrl 应用的url
* @return
*/
public static Map<String, Object> getSignature(String appUrl) {
String appId="********";
String secret="*******";
// 生成签名的随机串
String noncestr = create_nonce_str();
if (appUrl == null || "".equals( appUrl )) {
return null;
}
String signature = null;
//获得Token
Token accessTocken = getToken( appId, secret, System.currentTimeMillis() / 1000 );
Token accessTicket = getTicket( accessTocken.getToken(), System.currentTimeMillis() / 1000 );
signature = signature( accessTicket.getTicket(), cacheAddTime, noncestr, appUrl );
Map<String, Object> map = new HashMap<>();
map.put( "appId", appId );
map.put( "timestamp", cacheAddTime );
map.put( "nonceStr", noncestr );
map.put( "signature", signature );
return map;
}
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
/**
* 签名
*
* @param timestamp
* @return
*/
private static String signature(String jsapi_ticket, String timestamp, String noncestr, String url) {
jsapi_ticket = "jsapi_ticket=" + jsapi_ticket;
timestamp = "timestamp=" + timestamp;
noncestr = "noncestr=" + noncestr;
url = "url=" + url;
String[] arr = new String[]{jsapi_ticket, noncestr, timestamp, url};
Arrays.sort( arr );
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append( arr[i] );
if (i != arr.length - 1) {
content.append( "&" );
}
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance( "SHA-1" );