Home >Web Front-end >JS Tutorial >Share specific code implementation examples of WeChat JS interface signature

Share specific code implementation examples of WeChat JS interface signature

零下一度
零下一度Original
2018-05-25 10:02:302726browse

This article mainly introduces the WeChat JSAPI Ticket interface signature in detail, which has a certain reference value. Interested friends can refer to it

The examples in this article are shared with everyone. The specific code of WeChat JS interface signature is provided for your reference. The specific content is as follows

1. WeChat JS interface signature verification tool

2. Specific development

2.1 Obtain access_token, and then jsapi_ticket

/**
  * 获取access_token,然后jsapi_ticket
  */
 private String getAccessToken_ticket(String path) {
  String access_token = null; // access_token
  String atime = null;// 获取时间
  String a_expires_in = null;// 有效时间(s)
  String ticket = null;// jsapi_ticket
  String ttime = null;// 得到时间
  String t_expires_in = null;// 有效时间(s)
  String access_tokenStr = TUtils.getAccessToken(APPID,
    API_KEY);
  if (access_tokenStr != null
    && access_tokenStr.indexOf("access_token") != -1) {
   try {
    JSONObject jsonObject = new JSONObject(access_tokenStr);
    access_token = jsonObject.getString("access_token");
    a_expires_in = jsonObject.getString("expires_in");
    atime = getCurrentDateStr();
   } catch (JSONException e) {
    // e.printStackTrace();
   }
  }
  if (access_token != null && !access_token.equals("")) {
   String ticketStr = TicketUtils.getJSAPITicket(access_token);
   // System.out.println("ticketStr:" + ticketStr);
   if (ticketStr != null && ticketStr.indexOf("ticket") != -1) {
    try {
     JSONObject jsonObject = new JSONObject(ticketStr);
     ticket = jsonObject.getString("ticket");
     t_expires_in = jsonObject.getString("expires_in");
     ttime = getCurrentDateStr();
    } catch (JSONException e) {
     // e.printStackTrace();
    }
   }
  }
  String result = null;
  if (ticket != null && !ticket.equals("")) {
   result = "{\"access_token\":\"" + access_token
     + "\",\"a_expires_in\":\"" + a_expires_in
     + "\",\"atime\":\"" + atime + "\",\"ticket\":\"" + ticket
     + "\",\"t_expires_in\":\"" + t_expires_in
     + "\",\"ttime\":\"" + ttime + "\"}";
   if (MyFileUtils.writeIntoText(path, result)) {
    // System.out.println("写入文件成功");
    // System.out.println(result);
   } else {
    System.out.println("写入微信签名文件失败");
   }
  }
  return result;
 }
public static String getAccessToken(String APPID, String APPSECRET) {

String url = "https://api.weixin.qq.com/cgi-bin/token";
  String params = "grant_type=client_credential&appid=" + APPID
    + "&secret=" + APPSECRET;
String resultStr = HttpRequest.sendGet(url, params);
// sendGet:用get方法获取数据 ,具体请参考之间的关于微信的文章 http://www.cnblogs.com/jiduoduo/p/5749363.html

return resultStr;

}


/**
  * 根据access_token获取ticket { "errcode":0, "errmsg":"ok", "ticket":
  * "bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA"
  * , "expires_in":7200 }
  * 
  * @param access_token
  * @return
  */
 public static String getJSAPITicket(String access_token) {
  String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";
  String params = "type=jsapi&access_token=" + access_token;
  String resultStr = HttpRequest.sendGet(url, params);

  return resultStr;
 }

2.2 Specifically generate signature signature

public String Wx_Signature() {
  String path = ServletActionContext.getServletContext().getRealPath(
    "/wx/");
  // System.out.println(path);
  try {
   String tokenJSON = MyFileUtils.readText(path);
   // String access_token = null; // access_token
   String atime = null;// 获取时间
   String a_expires_in = null;// 有效时间(s)
   String ticket = null;// jsapi_ticket
   // String ttime = null;// 得到时间
   // String t_expires_in = null;// 有效时间(s)
   String result = tokenJSON;
   if (result == null || result.equals("")) {
    tokenJSON = getAccessToken_ticket(path);
   }
   // System.out.println(result);
   if (tokenJSON != null && !tokenJSON.equals("")
     && tokenJSON.indexOf("access_token") != -1) {
    try {
     JSONObject jsonObject = new JSONObject(tokenJSON);
     // access_token = jsonObject.getString("access_token");//
     // access_token
     atime = jsonObject.getString("atime");// 开始时间
     a_expires_in = jsonObject.getString("a_expires_in");// 有效时间
     ticket = jsonObject.getString("ticket");// jsapi_ticket
     // System.out.println(ticket);
     // ttime = jsonObject.getString("ttime");// 开始时间
     // t_expires_in = jsonObject.getString("t_expires_in");//
     // 有效时间
     String t1 = getCurrentDateStr();
     String t2 = atime;
     // System.out.println(atime);
     // System.out.println(a_expires_in);
     // System.out.println(TimeInterval.getInterval(t2, t1));
     long end_time = Long.parseLong(a_expires_in) - 60;
     if (TimeInterval.getInterval(t2, t1) > end_time) {
      ticket = getAccessToken_ticket(path);
     }
    } catch (JSONException e) {
     msg = e.getMessage();
    }
   } else {

   }
   // System.out.println(ticket);
   String url = getParameter("url");
   String noncestr = TUtils.getRandomString(16);
   String timestamp = System.currentTimeMillis() + "";
   timestamp = timestamp.substring(0, 10);
   String data = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr
     + "&timestamp=" + timestamp + "&url=" + url;
   String digest = new SHA1().getDigestOfString(data.getBytes());
   String signature = digest.toLowerCase();// signature
   result = "{\"noncestr\":\"" + noncestr + "\",\"timestamp\":\""
     + timestamp + "\",\"url\":\"" + url + "\",\"signature\":\""
     + signature + "\" ,\"ticket\":\"" + ticket + "\"}";
        msg = result;
  } catch (IOException e) {
   msg = e.getMessage();
  }
  return msg 
 }

Description: The signature has the number of calls , it needs to be cached in the server's file.

The above is the detailed content of Share specific code implementation examples of WeChat JS interface signature. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn