基于thinkPHP3.2实现微信接入及查询token值的方法


Posted in PHP onApril 18, 2017

本文实例讲述了基于thinkPHP3.2实现微信接入及查询token值的方法。分享给大家供大家参考,具体如下:

1.在con.fig文件里面配置TOKEN,APPID,APPSECRET值

2.控制器WeixinController代码:

<?php
/**
 * 微信父类控制器
 * @author Songle
 *
 */
namespace Weixin\Controller;
use Think\Controller;
class WeixinController extends Controller {
  private $last_time=null;
  private $appid=null;
  private $appsecret=null;
  function __construct(){
    parent::__construct();
    $token=C('TOKEN');
    $this->appid=C('APPID');
    $this->appsecret=C('APPSECRET');
    //获取微信服务器GET请求的4个参数
    $signature = I('signature');
    $timestamp = I('timestamp');
    $nonce = I('nonce');
    $echostr = I('echostr');
    if (! empty ( $echostr) && ! empty ( $signature ) && ! empty ($nonce )) {
      //定义一个数组,存储其中3个参数,分别是timestamp,nonce和token
      $tempArr = array($nonce,$timestamp,$token);
      //进行排序
      sort($tempArr,SORT_STRING);
      //将数组转换成字符串
      $tmpStr = implode($tempArr);
      //进行sha1加密算法
      $tmpStr = sha1($tmpStr);
      //判断请求是否来自微信服务器,对比$tmpStr和$signature
      if($tmpStr == $signature)
      {
        echo $echostr;
      }
      exit();
    }
  }
  /**
   * 获取tooken值
   */
  public function getTooken(){
    $this->last_time = 1448012924;
    $access_token = "填写上一次的token值"; //需要替换成自己的
    if(time() > ($this->last_time + 7200))
    {
      //GET请求的地址
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
      $access_token_Arr = $this->https_request($url);
      $this->last_time = time();
      return $access_token_Arr['access_token'];
    }
    return $access_token;
  }
  //https请求(支持GET和POST)
  public function https_request($url,$data = null)
  {
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    if(!empty($data))
    {
      curl_setopt($ch,CURLOPT_POST,1); //模拟POST
      curl_setopt($ch,CURLOPT_POSTFIELDS,$data); //POST内容
    }
    $outopt = curl_exec($ch);
    curl_close($ch);
    $outopt = json_decode($outopt,true);
    return $outopt;
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
PHP include_path设置技巧分享
Jul 03 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
php-msf源码详解
Dec 25 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PHP递归删除多维数组中的某个值
Apr 17 #PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 #PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 #PHP
PHP中快速生成随机密码的几种方式
Apr 17 #PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
PHP无限极分类函数的实现方法详解
Apr 15 #PHP
You might like
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python打包可执行文件的方法详解
2016/09/19 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
浅析PEP572: 海象运算符
2019/10/15 Python
用python计算文件的MD5值
2020/12/23 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
交通安全寄语大全
2014/04/08 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
学生违反校规检讨书
2014/10/28 职场文书
开场白怎么写
2015/06/01 职场文书
入团介绍人意见范文
2015/06/04 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers