基于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连接access数据库方法
Nov 11 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
简单的php新闻发布系统教程
May 09 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
php中的常用魔术方法汇总
Feb 14 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP attributes()函数讲解
Feb 03 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木马攻击防御之道
2008/03/24 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
Python创建日历实例
2014/08/21 Python
Python入门篇之文件
2014/10/20 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
在C#中如何实现多态
2014/07/02 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
大学生军训广播稿
2014/01/24 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis