基于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.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
php批量上传的实现代码
Jun 09 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP文件后缀不强制为.php方法
Mar 31 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
php获取表单中多个同名input元素的值
2014/03/20 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
Django 中使用流响应处理视频的方法
2018/07/20 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Python 寻找局部最高点的实现
2019/12/05 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
PHP笔试题
2012/02/22 面试题
Java多态性的定义以及类型
2014/09/16 面试题
高中运动会广播稿
2014/09/16 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
离婚协议书范文2015
2015/01/26 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
python 爬取天气网卫星图片
2021/06/07 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
什么是Python装饰器?如何定义和使用?
2022/04/11 Python