api_ticket 是用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token 来获取。
开发者注意事项:
1.此用于卡券接口签名的api_ticket与步骤三中通过config接口注入权限验证配置使用的jsapi_ticket不同。
2.由于获取api_ticket 的api 调用次数非常有限,频繁刷新api_ticket 会导致api调用受限,影响自身业务,开发者需在自己的服务存储与更新api_ticket。
/*获取api_ticket begin
api_ticket 是用于调用微信卡券JS API的临时票据,有效期为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获取请求文本内容
public function get_curl_contents($url, $data = null) {
$curl = curl_init(); //初始化
curl_setopt($curl, CURLOPT_URL, $url);//设置抓取的url 为 $requesturl
curl_setopt($curl, CURLOPT_HEADER, 0);//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
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);//执行命令
curl_close($curl);//关闭URL请求
return $data;
}
