全网整合营销服务商

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

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

微信开发之获取JSAPI TICKET

一、获取流程

1、获取 access_token

2、通过access_token换取 jsapi_ticket

3、签名算法

签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

二、具体实现方式

1、获取access_token

/**
 * [getAccessToken description] 获取access_token
 * @return [type] [description] */private function getAccessToken() {
  $data = $this->getFile($this->accessTokenFile);  if(time() - $data['time'] > 0){
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appsecret}";
    $re = $this->httpGet($url);
    $access_token = $re['access_token'];    
    if(isset($access_token)){
      $data['access_token'] = $access_token;
      $data['time'] = time() + 7200;
      $this->setFile($this->accessTokenFile,json_encode($data));
    }
  }else{
    $access_token = $data['access_token'];
  }  return $access_token;
}

access_token 的有效时间是7200s,故可以采用文件存储的方法进行保存,避免多次请求;

2、获取jsapi_ticket

/**
 * [getJsapiTicket description] 获取jsapi_ticket
 * @return [type] [description] */private function getJsapiTicket() {
  $access_token = $this->getAccessToken();
  $jsapi_ticket = $this->getFile($this->jsapiTicketFile);  if(time() - $jsapi_ticket['time'] > 0) {
    $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=jsapi";
    $re = $this->httpGet($url);
    $this->preArr($re);
    $jsapi_ticket = $re['ticket'];    
    if(isset($jsapi_ticket)){
      $data['jsapi_ticket'] = $jsapi_ticket;
      $data['time'] = time() + 7200;
      $this->setFile($this->jsapiTicketFile, json_encode($data));
    }
  }else{
    $jsapi_ticket = $jsapi_ticket['jsapi_ticket'];
  }  return $jsapi_ticket;
}

通过access_token进行交换,得到jsapi_ticket,有效期也是7200s;

3、生成签名

/**
 * [getSignpackage description] 获取签名
 * @return [type] [description] */public function getSignpackage(){
  $jsapi_ticket = $this->getJsapiTicket();  // 注意 URL 一定要动态获取,不能 hardcode.
  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  $noncestr = $this->createNonceStr();
  $timestamp = time();

  $string1 = "jsapi_ticket={$jsapi_ticket}&noncestr={$noncestr}&timestamp={$timestamp}&url={$url}";
  $signature = sha1($string1);  
  $signPackage = array(    
    'appId'   => $this->appID,    
    'nonceStr' => $noncestr,    
    'timestamp' => $timestamp,    
    'signature' => $signature,
  );  
  return $signPackage;
}


签名算法

使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:

对string1进行sha1签名,得到signature:

注意事项:

1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。

2.签名用的url必须是调用JS接口页面的完整URL。

3.出于安全考虑,开发者必须在服务器端实现签名的逻辑。

 详情参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

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


# 微信  # JSAPI  # TICKET  # 微信封装的调用微信签名包的类库  # 微信JSAPI支付操作需要注意的细节  # 微信支付java版本之JSAPI支付+发送模板消息  # 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法  # Java通过JsApi方式实现微信支付  # 微信JSAPI Ticket接口签名详解  # 键值  # 的是  # 字段名  # 均为  # 需要注意  # 从小到大  # 大家多多  # 不包含  # return  # type  # time  # accessTokenFile  # private  # gt  # getFile  # function  # data  # grant_type  # token  # appID 


相关文章: 建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  建站主机选择指南:服务器配置与SEO优化实战技巧  ,网站推广常用方法?  如何在香港免费服务器上快速搭建网站?  建站之星北京办公室:智能建站系统与小程序生成方案解析  如何快速搭建个人网站并优化SEO?  建站org新手必看:2024最新搭建流程与模板选择技巧  制作销售网站教学视频,销售网站有哪些?  小程序网站制作需要准备什么资料,如何制作小程序?  制作网站的公司有哪些,做一个公司网站要多少钱?  已有域名能否直接搭建网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何在橙子建站上传落地页?操作指南详解  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  南京网站制作费用,南京远驱官方网站?  平台云上自助建站如何快速打造专业网站?  在线制作视频网站免费,都有哪些好的动漫网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何基于云服务器快速搭建个人网站?  网站制作报价单模板图片,小松挖机官方网站报价?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  如何在腾讯云服务器快速搭建个人网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星安装路径如何正确选择及配置?  如何用花生壳三步快速搭建专属网站?  如何高效搭建专业期货交易平台网站?  网站企业制作流程,用什么语言做企业网站比较好?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  建站之星如何快速解决建站难题?  招商网站制作流程,网站招商广告语?  建站之星2.7模板快速切换与批量管理功能操作指南  简单实现Android文件上传  建站之星3.0如何解决常见操作问题?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  大型企业网站制作流程,做网站需要注册公司吗?  建站之星备案流程有哪些注意事项?  Swift开发中switch语句值绑定模式  如何快速生成橙子建站落地页链接?  网站制作企业,网站的banner和导航栏是指什么?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何在建站宝盒中设置产品搜索功能?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  nginx修改上传文件大小限制的方法  如何选择域名并搭建高效网站? 

您的项目需求

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