基于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 相关文章推荐
我的论坛源代码(九)
Oct 09 PHP
PHP中,文件上传
Dec 06 PHP
php 购物车实例(申精)
May 11 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
php中设置多级目录session的问题
Aug 08 PHP
10个实用的PHP代码片段
Sep 02 PHP
php实现encode64编码类实例
Mar 24 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
php实现简易计算器
Aug 28 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/05 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript arguments使用示例
2014/12/16 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
js实现微博发布小功能
2017/01/12 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
七年级音乐教学反思
2014/01/26 职场文书
数字化校园建设方案
2014/05/03 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
法律意见书范本
2015/06/04 职场文书
阿凡达观后感
2015/06/10 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
详解PyTorch模型保存与加载
2022/04/28 Python