JSAPITicket是微信公眾平臺用于網頁開發的基礎,保證了網頁授權后可以通過jssdk調用微信API,獲取用戶信息、分享、支付等微信功能。
JSAPITicket是一個有時效性的憑證,需要通過php代碼來定期獲取和刷新。
expire_time< time()) { $accessToken = getAccessToken(); $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$accessToken; $res = json_decode(httpGet($url)); $ticket = $res->ticket; if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $fp = fopen($ticketFile, "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $ticket = $data->jsapi_ticket; } ?>
在php代碼中,我們可以看到一個獲取JSAPITicket的函數getJsApiTicket()。如果從文件中讀取到的JSAPITicket過期或不存在,就去獲取AccessToken,并調用微信API獲取JSAPITicket,然后將JSAPITicket和過期時間存在文件中。否則從文件中讀取JSAPITicket并返回。
那么,怎樣獲取AccessToken呢?可以使用下面的代碼段:
expire_time< time()) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; $res = json_decode(httpGet($url)); $access_token = $res->access_token; if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $fp = fopen($accessTokenFile, "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $access_token = $data->access_token; } function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT,500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } ?>
這段代碼也類似地判斷了AccessToken是否過期,如果過期則使用$appid和$appsecret調用微信API獲取AccessToken。 其中,curl_setopt()函數用于設置curl參數,CURLOPT_RETURNTRANSFER表示將curl_exec()函數返回的值存儲在變量中,CURLOPT_TIMEOUT表示設置curl請求的超時時間(單位為毫秒),CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST表示不驗證SSL證書。最后使用curl_exec()函數發送http請求獲取返回的內容。
總的來說,JSAPITicket的獲取是建立在AccessToken的基礎之上的,而AccessToken的獲取又有兩種方法:一種是從緩存文件中讀?。ū容^容易實現),另一種是調用微信API實時獲取,但需要首先獲得微信開發者賬戶。