基于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
我的论坛源代码(九)
Oct 09 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php使用json_encode对变量json编码
Apr 07 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
php实现微信支付之现金红包
2018/05/30 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
对比分析json及XML
2014/11/28 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
Python 递归函数详解及实例
2016/12/27 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
大学生自我鉴定范文
2013/12/28 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
2015年商场工作总结
2015/04/27 职场文书
李强为自己工作观后感
2015/06/11 职场文书
高中运动会前导词
2015/07/20 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
小程序实现侧滑删除功能
2022/06/25 Javascript
python manim实现排序算法动画示例
2022/08/14 Python