api_ticket 是用于調(diào)用微信卡券JS API的臨時票據(jù),有效期為7200 秒,通過access_token 來獲取。
開發(fā)者注意事項:
1.此用于卡券接口簽名的api_ticket與步驟三中通過config接口注入權(quán)限驗證配置使用的jsapi_ticket不同。
2.由于獲取api_ticket 的api 調(diào)用次數(shù)非常有限,頻繁刷新api_ticket 會導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù),開發(fā)者需在自己的服務(wù)存儲與更新api_ticket。
/*獲取api_ticket begin api_ticket 是用于調(diào)用微信卡券JS API的臨時票據(jù),有效期為7200 秒,通過access_token 來獲取。*/ public function make_api_ticket(){ $access_token = $this->get_access_token(); // echo $access_token; $url = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket
?access_token=%s&type=wx_card", $access_token); $res = json_decode($this -> get_curl_contents($url), true); if($res && isset($res["errmsg"])){ //將獲得的 ticket 存儲到文件中 $file_path = ROOT_PATH."/up/wx/wx_api_ticket.php"; $myfile = fopen($file_path, "w") or die("不能寫入文件"); $expire_time = time() + $res['expires_in']; $txt = "<?php\n"; $txt .= " return array(\n"; $txt .= " 'wx_api_ticket'=>'".$res['ticket']."',\n" ; $txt .= " 'expire_time'=>'".$expire_time."',\n" ; $txt .= " );\n"; $txt .= "?>\n"; fwrite($myfile, $txt); fclose($myfile); return $res['ticket']; } else{ $this->make_api_ticket(); } } //獲取api_ticket end //curl獲取請求文本內(nèi)容 public function get_curl_contents($url, $data = null) { $curl = curl_init(); //初始化 curl_setopt($curl, CURLOPT_URL, $url);//設(shè)置抓取的url 為 $requesturl curl_setopt($curl, CURLOPT_HEADER, 0);//設(shè)置頭文件的信息作為數(shù)據(jù)流輸出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設(shè)置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //跳過證書驗證 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 從證書中檢查SSL加密算法是否存在 if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); //POST請求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } $data = curl_exec($curl);//執(zhí)行命令 curl_close($curl);//關(guān)閉URL請求 return $data; }