Example #1
0
 public function __construct($appid = NULL, $appsecret = NULL)
 {
     if ($appid) {
         $this->appid = $appid;
     }
     if ($appsecret) {
         $this->appsecret = $appsecret;
     }
     //这里的Token刷的太快,会出现超过微信设置的每天API刷新的上限问题
     //解决了Token的心病问题:官方程序使用定时器+共享中控服务器的方式,咱们这里完全采用数据库+用户业务逻辑触发,一样可靠
     //原则上,同一个Appid/Appsecrete的逻辑功能,包括不同Subscriber的操作,都
     $wxDbObj = new class_mysql_db();
     $result = $wxDbObj->db_AccessTokenInfo_inqury($appid, $appsecret);
     //2小时=7200秒为最长限度,考虑到余量,少放点
     if ($result == "NOTEXIST" || time() > $result["lasttime"] + 6500) {
         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->appsecret;
         $res = $this->https_request($url);
         $result = json_decode($res, true);
         //下一步存在当前临时变量和数据库中
         $this->lasttime = time();
         $this->access_token = $result["access_token"];
         $wxDbObj->db_AccessTokenInfo_save($appid, $appsecret, $this->lasttime, $this->access_token);
     } else {
         $this->lasttime = $result["lasttime"];
         $this->access_token = $result["access_token"];
     }
 }