批改状态:未批改
老师批语:
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'];
}
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号