获取微信的Token

admin8个月前Laravel353

 public function Token()
   {

       $this->path = __DIR__ . '/';
       // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
       $msg = json_decode($this->get_php_file($this->path . "access_token.php"));
       if ($msg->expire_time < time()) {
           $url = 'https://open.douyin.com/oauth/client_token/';
           $data = array(
               'client_key' => $this->client_key,
               'client_secret' => $this->client_secret,
               'grant_type' => 'client_credential',
           );
           $res = json_decode($this->curlPost($url, $data), true);
           if ($res['message'] == 'success') {
               $access_token = $res['data']['access_token'];
               if ($access_token) {
                   $msg->expire_time = time() + 7000;
                   $msg->access_token = $access_token;
                   $this->set_php_file($this->path . "access_token.php", json_encode($msg));
               }
           }
       } else {
           $access_token = $msg->access_token;
       }
       return $access_token;
   }




   public function httpGet($url)
   {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($curl, CURLOPT_TIMEOUT, 500);
       // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
       // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
//        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
//        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
       curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
       curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
       curl_setopt($curl, CURLOPT_URL, $url);
       $res = curl_exec($curl);
       curl_close($curl);
       return $res;
   }

   public function get_php_file($filename)
   {
       return trim(substr(file_get_contents($filename), 15));
   }

   public function set_php_file($filename, $content)
   {
       $fp = fopen($filename, "w");
       fwrite($fp, "<?php exit();?>" . $content);
       fclose($fp);
   }


   protected function curlPost($url, $data)
   {
       $ch = curl_init();
       $params[CURLOPT_URL] = $url;    //请求url地址
       $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
       $params[CURLOPT_SSL_VERIFYPEER] = false;
       $params[CURLOPT_SSL_VERIFYHOST] = false;
       $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
       $params[CURLOPT_POST] = true;
       $params[CURLOPT_POSTFIELDS] = $data;
       curl_setopt_array($ch, $params); //传入curl参数
       $content = curl_exec($ch); //执行
       curl_close($ch); //关闭连接
       return $content;
   }


   //把请求发送到微信服务器换取二维码
   public function httpRequest($url, $data = '', $method = 'GET')
   {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_URL, $url);
       curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
       curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
       curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
       curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
       curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
       if ($method == 'POST') {
           curl_setopt($curl, CURLOPT_POST, 1);
           if ($data != '') {
               curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
           }
       }
       curl_setopt($curl, CURLOPT_TIMEOUT, 30);
       curl_setopt($curl, CURLOPT_HEADER, 0);
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
       $result = curl_exec($curl);
       curl_close($curl);
       return $result;
   }

返回列表

上一篇:获取域名

下一篇:接口返回处理

相关文章

忘记密码

publicfunction forget(){    $phone = request()->input('phone');    $c...

过滤违禁词

/** * 内容验证 */public function check($content){    $count = 0; //违规词的个数    $list =...

按照距离远近排序

   $distance = "ACOS(SIN(( $lat * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS((...

微信支付V2

   public static function unifiedorder($openid, $out_trade_no, $total_fee, $notify)...

解密微信绑定的手机号

public function mobile() { $code = request()->input('code'); if (!$code) { return $this-&...

抖音小程序码

public function dyqrcode($uid){    $url = "https://open.douyin.com/api/apps/v1/qrcode...