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;
}
