Java微信开发之JS-SDK,Ticket签名
第一次微信开发之js-sdk
第一次写博客
直接记录代码
WeiXinJsApiTicketUtil.java 工具类
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import com.wx.wxEntity.JsApiTicket;
import net.sf.json.JSONObject;
/**
* 获取jsapi_ticket的工具类
* @author 18300
*
*/
public class WeiXinJsApiTicketUtil {
/**
* public 获取jsapi_ticket的值
*
* @return jsapi_ticket
* @throws IOException
*/
public static String getWeixinJsapiTicket() throws IOException {
// 读取保存ticket的properties文件
String ticketPropertiesName = "WeiXinJsapiTicket.properties";
Properties properties = new Properties();
// 获取文件流
InputStream is = WeiXinJsApiTicketUtil.class.getClassLoader().getResourceAsStream(ticketPropertiesName);
try {
properties.load(is);
// 判断是否ticket过期
long currentTime = System.currentTimeMillis();
long saveTime = Long.parseLong(properties.getProperty("save_maxtime"));
is.close();
// 如果当前的时间大于token最大的有效时间,则进行重新获取
if (currentTime > saveTime) {
return getJsapiTicketWriteProperties();
} else {
// 返回保存的token内容
return properties.getProperty("save_jsapi_ticket");
}
} catch (IOException e) {
throw new IOException("保存jsapi_ticket的properties文件不存在");
}
}
/**
* 获取jsapi_ticket的值,并且将该值写入根目录下面的WeiXinJsapiTicket.properties文件中
*
* @return jsapi_ticket
*/
private static String getJsapiTicketWriteProperties() {
// 1:调用获取jsapi_ticket的工具方法
JsApiTicket jsapi_ticket = getJsapiTicket();
// 2:将获取到的内容保存到properties文件中
Properties properties = new Properties();
// 存入ticket值
properties.setProperty("save_jsapi_ticket", jsapi_ticket.getTicket());
// 存入有效时间段(单位:秒)
properties.setProperty("save_expiretime", String.valueOf(jsapi_ticket.getExpireIn()));
// 存入获取的时间(单位格式:yyyy-MM-dd HH:mm:ss)
Date nowTime = new Date(System.currentTimeMillis());
SimpleDateFormat sdFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String retStrFormatNowDate = sdFormatter.format(nowTime)