基于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面向对象编程快速入门
Dec 14 PHP
PHP重定向的3种方式
Mar 07 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
PHP多进程简单实例小结
Nov 09 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 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
德生1994机评
2021/03/02 无线电
用PHP和ACCESS写聊天室(九)
2006/10/09 PHP
php escape URL编码
2008/12/10 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
JavaScript中的this实例分析
2011/04/28 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
vue实现评价星星功能
2020/06/30 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python 多线程串行和并行的实例
2019/02/22 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
财务会计专业推荐信
2013/11/30 职场文书
关于工资低的辞职信
2014/01/14 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
小小商店教学反思
2014/04/27 职场文书
医学求职信
2014/05/28 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python