微信中控方法(getAccessToken、getJsapiTicket)。可繼續優化,redis作為中間層,入庫同時加入redis,要使用時先查詢redis。
阿新 • • 發佈:2018-05-02
IE 數據 names str namespace extend family ext nts
<?php
/**
* 微信父類控制器
* @author Songle
*
*/
namespace Home\Controller;
use Think\Controller;
class Wechat2Controller extends Controller { private $last_time = null; private $appid = null; private $appsecret = null; public function __construct() { parent::__construct();
} /** * 添加微信分享接口 * 第一步:access token */ public function getAccessToken() { $appid = ‘wx55f7980035ddbc37‘; //獲取用戶唯一憑證 $secret = ‘b3a96346c6a10b97dfdc134d5f0dd506‘; //用戶唯一憑證密鑰 $time = time() + 7000; //當前時間+2小時等於過期時間
// 如果有未過期token $map[‘expires‘] = array(‘gt‘, time());
$token = D(‘access_token‘)->order(‘id desc‘)->where($map)->getField(‘access_token‘);
if ($token) {
return $token;
} else {
$res = file_get_contents(‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=‘ . $appid . ‘&secret=‘ . $secret);
$res = json_decode($res, true);
$token = $res[‘access_token‘];
$model = D(‘access_token‘); //把獲取的token存儲到數據庫中
if ($token) {
$data = array(
‘access_token‘ => $token,
‘expires_time‘ => $time,
);
$data = $model->add($data); //把獲得的token存儲到數據庫中
}
return $token; }
} /** * 添加微信分享接口 * 第二步:用第一步拿到的access_token 采用http GET方式請求獲得jsapi_ticket */ public function getJsapiTicket() { $time = time() + 7000; //當前時間+2小時等於過期時間 $map[‘ticket_expires_time‘] = array(‘gt‘, time()); // 庫裏如果有未過期的 ticket $res = D(‘access_token‘)->where($map)->field(‘ticket‘)->find(); if ($res) { $ticket = $res[‘ticket‘]; $result[‘result‘] = $ticket; return $result; } else { $token = $this->getAccessToken(); $res = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $token . "&type=jsapi"); $res = json_decode($res, true); $ticket = $res[‘ticket‘]; // ticket不能頻繁的訪問接口來獲取,在每次獲取後,我們把它保存到數據庫中。 $model = D(‘access_token‘); //把獲取的ticket存儲到數據庫中 if ($ticket) { $data = array( ‘access_token‘ => $token, ‘expires_time‘ => $time, ‘ticket‘ => $ticket, ‘ticket_expires_time‘ => $time, ); $data = $model->where(array(‘access_token‘=>$token))->save($data); //把獲得的token存儲到數據庫中 } $result[‘result‘] = $ticket; //沒查詢到符合條件的 return $result; } }
}
use Think\Controller;
class Wechat2Controller extends Controller { private $last_time = null; private $appid = null; private $appsecret = null; public function __construct() { parent::__construct();
} /** * 添加微信分享接口 * 第一步:access token */ public function getAccessToken() { $appid = ‘wx55f7980035ddbc37‘; //獲取用戶唯一憑證 $secret = ‘b3a96346c6a10b97dfdc134d5f0dd506‘; //用戶唯一憑證密鑰 $time = time() + 7000; //當前時間+2小時等於過期時間
// 如果有未過期token $map[‘expires‘] = array(‘gt‘, time());
$res = file_get_contents(‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=‘ . $appid . ‘&secret=‘ . $secret);
return $token; }
} /** * 添加微信分享接口 * 第二步:用第一步拿到的access_token 采用http GET方式請求獲得jsapi_ticket */ public function getJsapiTicket() { $time = time() + 7000; //當前時間+2小時等於過期時間 $map[‘ticket_expires_time‘] = array(‘gt‘, time()); // 庫裏如果有未過期的 ticket $res = D(‘access_token‘)->where($map)->field(‘ticket‘)->find(); if ($res) { $ticket = $res[‘ticket‘]; $result[‘result‘] = $ticket; return $result; } else { $token = $this->getAccessToken(); $res = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $token . "&type=jsapi"); $res = json_decode($res, true); $ticket = $res[‘ticket‘]; // ticket不能頻繁的訪問接口來獲取,在每次獲取後,我們把它保存到數據庫中。 $model = D(‘access_token‘); //把獲取的ticket存儲到數據庫中 if ($ticket) { $data = array( ‘access_token‘ => $token, ‘expires_time‘ => $time, ‘ticket‘ => $ticket, ‘ticket_expires_time‘ => $time, ); $data = $model->where(array(‘access_token‘=>$token))->save($data); //把獲得的token存儲到數據庫中 } $result[‘result‘] = $ticket; //沒查詢到符合條件的 return $result; } }
}
微信中控方法(getAccessToken、getJsapiTicket)。可繼續優化,redis作為中間層,入庫同時加入redis,要使用時先查詢redis。