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