基于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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
php 一元分词算法
Nov 30 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
PHP循环结构实例讲解
Feb 10 PHP
php数组去重复数据示例
Feb 25 PHP
php获取域名的google收录示例
Mar 24 PHP
php去除html标记的原生函数详解
Jan 27 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
Mac系统下安装PHP Xdebug
Mar 30 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实现的短网址算法分享
2014/06/20 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
JS触摸事件、手势事件详解
2017/05/04 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python文件读写保存操作的示例代码
2018/09/14 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
Django实现基于类的分页功能
2019/10/31 Python
python输出pdf文档的实例
2020/02/13 Python
Python tornado上传文件的功能
2020/03/26 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
2013届毕业生求职信范文
2013/11/20 职场文书
数控专业应届生求职信
2013/11/27 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
2013的个人自我评价
2013/12/26 职场文书
出国留学担保书
2014/05/20 职场文书
新闻报道策划方案
2014/06/11 职场文书
优秀党员事迹材料
2014/12/18 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python