コード例 #1
0
 /**
  * 获取ticket
  * @param unknown $appIndex
  * @return unknown
  */
 public function getJsApiTicket($appIndex = 10)
 {
     $whArr = array('mpid' => $appIndex);
     $rowArr = $this->where($whArr)->find();
     //参数 判别token是否有效,true-有效;false-无效;
     $TokenFlag = true;
     //对数据中的缓存token处理
     //数据库不存在accesstoken
     if ($this->where($whArr)->count() <= 0) {
         $TokenFlag = false;
     } else {
         $expiresDate = $rowArr['expired'] == null ? null : strtotime($rowArr['expired']);
         if ($expiresDate == null || $rowArr['jsapi_ticket'] == null) {
             $TokenFlag = false;
         } else {
             $nowtime = time();
             //与当前时间差是否超过2小时-分钟计算;
             $minteDif = $nowtime - $expiresDate;
             if ($minteDif >= 0) {
                 $TokenFlag = false;
             }
         }
     }
     if (!$TokenFlag) {
         //获取当前应用ID等信息
         $AppKey = Platform::$AppArr[$appIndex];
         $wechat = new WeChat($AppKey['AppID'], $AppKey['AppSecret']);
         $assesstoken = D('WxAccessToken')->getAccessToken($appIndex);
         $newRow = $wechat->getJsApiTicket($assesstoken);
         if ($newRow == null || $newRow['jsapi_ticket'] == null) {
             $newRow = $wechat->getJsApiTicket();
             if ($newRow == null || $newRow['jsapi_ticket'] == null) {
                 echo "获取不到jsapiticket";
                 exit;
             }
         }
         //保存数据库中
         $ok = $this->where($whArr)->delete();
         $newAdd['jsapi_ticket'] = $newRow['jsapi_ticket'];
         $newAdd['mpid'] = $appIndex;
         $newAdd['expired'] = date('Y-m-d H:i:s', $newRow['expire_time']);
         $this->add($newAdd);
         return $newAdd['jsapi_ticket'];
     } else {
         return $rowArr['jsapi_ticket'];
     }
 }