基于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学习之正则表达式
Apr 17 PHP
php数组的一些常见操作汇总
Jul 17 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php计算函数执行时间的方法
Mar 20 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PHP反射实际应用示例
Apr 03 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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
通过html表格发电子邮件
2006/10/09 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
基于jquery实现左右上下移动效果
2018/05/02 jQuery
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
深入解析Python中的WSGI接口
2015/05/11 Python
带你了解python装饰器
2017/06/15 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
python如何读写csv数据
2018/03/21 Python
python实现网页自动签到功能
2019/01/21 Python
python实现五子棋小程序
2019/06/18 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python 里最强的地图绘制神器
2021/03/01 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
C#基础面试题
2016/10/17 面试题
销售顾问的岗位职责
2013/11/13 职场文书
医药个人求职信范文
2014/01/29 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
大连星海广场导游词
2015/02/10 职场文书
英语导游词
2015/02/13 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
技术入股协议书
2016/03/22 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL