基于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 工厂模式使用方法
May 18 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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
基于mysql的bbs设计(三)
2006/10/09 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php验证码生成器
2017/05/24 PHP
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
Python读取word文本操作详解
2018/01/22 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python os.fork() 循环输出方法
2019/08/08 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
python怎么自定义捕获错误
2020/06/29 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
行政工作个人的自我评价
2014/02/13 职场文书
公司合作协议书范本
2014/04/18 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
学生检讨书怎么写
2014/10/09 职场文书
员工工作及收入证明
2014/10/28 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS