api_ticket 是用于調(diào)用微信卡券JS API的臨時(shí)票據(jù),有效期為7200 秒,通過(guò)access_token 來(lái)獲取。
開(kāi)發(fā)者注意事項(xiàng):
1.此用于卡券接口簽名的api_ticket與步驟三中通過(guò)config接口注入權(quán)限驗(yàn)證配置使用的jsapi_ticket不同。
2.由于獲取api_ticket 的api 調(diào)用次數(shù)非常有限,頻繁刷新api_ticket 會(huì)導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù),開(kāi)發(fā)者需在自己的服務(wù)存儲(chǔ)與更新api_ticket。
/*獲取api_ticket begin api_ticket 是用于調(diào)用微信卡券JS API的臨時(shí)票據(jù),有效期為7200 秒,通過(guò)access_token 來(lái)獲取。*/ 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 存儲(chǔ)到文件中 $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獲取請(qǐng)求文本內(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); //跳過(guò)證書(shū)驗(yàn)證 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 從證書(shū)中檢查SSL加密算法是否存在 if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); //POST請(qǐng)求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } $data = curl_exec($curl);//執(zhí)行命令 curl_close($curl);//關(guān)閉URL請(qǐng)求 return $data; }