全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信JSAPI Ticket接口签名详解

本文实例为大家分享了微信JS接口签名的具体代码,供大家参考,具体内容如下

1、微信 JS 接口签名校验工具

2、具体开发

2.1 获取access_token,然后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具体生成签名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 
 }

说明:签名是有调用次数,需要将其cache到服务器的文件中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 微信  # JS  # 签名  # 微信封装的调用微信签名包的类库  # 微信开发之获取JSAPI TICKET  # 微信JSAPI支付操作需要注意的细节  # 微信支付java版本之JSAPI支付+发送模板消息  # 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法  # Java通过JsApi方式实现微信支付  # 是有  # 将其  # 大家分享  # 具体内容  # 请参考  # 大家多多  # equals  # printStackTrace  # JSONException  # ticketStr  # System  # getJSAPITicket  # TicketUtils  # catch  # JSONObject  # indexOf  # amp 


相关文章: 专业网站建设制作报价,网页设计制作要考什么证?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何基于云服务器快速搭建网站及云盘系统?  广德云建站网站建设方案与建站流程优化指南  如何在阿里云通过域名搭建网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  建站之星后台密码如何安全设置与找回?  如何快速搭建高效香港服务器网站?  黑客如何通过漏洞一步步攻陷网站服务器?  nginx修改上传文件大小限制的方法  如何快速生成专业多端适配建站电话?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  在线制作视频网站免费,都有哪些好的动漫网站?  山东网站制作公司有哪些,山东大源集团官网?  网站制作公司,橙子建站是合法的吗?  建站之星如何一键生成手机站?  如何实现建站之星域名转发设置?  如何快速生成ASP一键建站模板并优化安全性?  如何在腾讯云服务器上快速搭建个人网站?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何快速搭建高效WAP手机网站吸引移动用户?  个人网站制作流程图片大全,个人网站如何注销?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  已有域名和空间如何快速搭建网站?  如何快速搭建高效可靠的建站解决方案?  教程网站设计制作软件,怎么创建自己的一个网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  linux top下的 minerd 木马清除方法  如何快速登录WAP自助建站平台?  如何选购建站域名与空间?自助平台全解析  如何有效防御Web建站篡改攻击?  长沙做网站要多少钱,长沙国安网络怎么样?  如何制作网站标识牌,动态网站如何制作(教程)?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  太平洋网站制作公司,网络用语太平洋是什么意思?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  简单实现Android验证码  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站主机如何安装配置?新手必看操作指南  建站之星IIS配置教程:代码生成技巧与站点搭建指南  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星如何快速生成多端适配网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  临沂网站制作公司有哪些,临沂第四中学官网?  如何在宝塔面板中创建新站点?  建站之星代理如何获取技术支持?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。