博主信息
博文 46
粉丝 1
评论 1
访问量 37500
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
微信公众号开发之签名验证、获取access_token--2018年5月31日
笨鸟先飞
原创
1708人浏览过

Weixin.php_controller:


实例

<?php 
namespace app\index\controller;

use think\Controller;


class Weixin extends Controller
{ 
	//构造器
    public function __construct()
	{
		parent::__construct();
		$this->model = model('Weixin');
	}

	//微信推送事件
	public function index()
	{

		// 校验数据来源
		$valid = $this->model->valid();
		if(!$valid){
			exit('signature error');
		}
		exit(input('get.echostr'));
	}

	//获取access_token
	public function get_access_token()
	{
	   echo  $this->model->access_token();
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例




Weixin.php_model:


实例

<?php 
namespace app\index\model;

use think\Model;
use think\facade\Cache;

class Weixin extends Model 
{
	//签名校验
	public function valid()
	{
		$signature = input('get.signature');
		$timestamp = input('get.timestamp');
		$nonce     = input('get.nonce');
		$echostr   = input('gey.echostr');
        $token     = config('app.weixintoken');

        // file_put_contents('filename', $data)第一个参数:保存文件的URL,第二个参数:保存的数据

        $tmpArr = array($timestamp,$nonce,$token);
        sort($tmpArr,SORT_STRING);
        $tmpStr = implode($tmpArr);
        $sign = sha1($tmpStr);

        if($sign != $signature){
        	return falae;
        }
        return true;
	}
    
    //获取access_token
	public function access_token($iscache=true)//参数默认缓存
	{
		$cache_key = 'access_token';
		//如果不缓存就删除
        if(!$iscache){
        	Cache::rm($cache_key);
        }
		$access_token = Cache::get($cache_key);//获取缓存的数据
		if($access_token && $iscache){
			return $access_token;
		}
		$appID = config('app.appID');
		$appsecret  = config('app.appsecret');
		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appID&secret=$appsecret";
		$res = http_Get($url);//获取微信那边的json数据
		$res = json_decode($res,true);//解析微信那边发送过来的json数据
		//如果解析出来没有access_token就返回false
		if(!isset($res['access_token'])){
			return false;
		}
		Cache::set($cache_key,$res['access_token'],$res['expires_in']-300);//缓存 (key , 值,缓存时间)默认是永久
        return $res['access_token'];
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学