基于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初学者头痛的十四个问题
Jul 12 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
在PWS上安装PHP4.0正式版
Oct 09 PHP
PHP开发负载均衡指南
Jul 17 PHP
php 数组的指针操作实现代码
Feb 08 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
joomla组件开发入门教程
May 04 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 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 冲泡冲煮
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
php递归实现无限分类的方法
2015/07/28 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
Pycharm 设置默认头的图文教程
2019/01/17 Python
python安装scipy的步骤解析
2019/09/28 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
历史专业学生的自我评价
2014/02/28 职场文书
单位委托书范本
2014/04/04 职场文书
拉歌口号大全
2014/06/13 职场文书
无犯罪记录证明
2014/09/19 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
个人汇报材料范文
2014/12/30 职场文书
投标承诺函范文
2015/01/21 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android