Blogger Information
Blog 64
fans 2
comment 3
visits 75748
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
微信公众号号开放之服务器配置—2018年6月2日16:09:58
清雨的博客
Original
1265 people have browsed it

因无认证公众号,过程采用微信公众号测试号进行,服务器采用阿里云服务器。

框架为thinkPHP 5.1.4

因在讲解服务器配置时有事没有听课,故而两天时间看视频研究代码。;来进行调试代码,在整个过程中,非常的崎岖,

问题一、因一直在本地环境进行测试,没有区分过大小写,在本地中测试没有问题,上传在linux服务多方报错,并查找原因,最后发现,在控制器文件名及模式的文件名全部小写。导致一直无法访问。

问题二、因用多个编辑器打开,导致文件被家务BOOT,在打开app_debug  提示

控制器Namespace declaration statement has to be the very first statement in the script  

并在多次查看文件都是在第一行,最后更换字符集报错解决。

附代码

controller/Weixin.php

实例

<?php
namespace app\index\controller;
use think\Collection;
use think\facade\Cache;

class Weixin extends Collection
{
    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'));
    }
}

运行实例 »

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

model/Weixin.php

实例

<?php
namespace app\index\model;
use think\Model;
use think\facade\Cache;
use think\Db;

class Weixin extends Model{
    // 签名校验
    public function valid(){
        $signature = input('get.signature');
        $timestamp = input('get.timestamp');
        $nonce     = input('get.nonce');
        $token     = config('app.token');
        $tmpArr    = array($timestamp,$nonce,$token);
        sort($tmpArr, SORT_STRING);
        $str       = implode($tmpArr);
        if(sha1($str) != $signature){
            return false;
        }
        return true;
    }
	public function access_token($iscache = true){
		$key       = 'access_token';
        if(!$iscache){
            Cache::rm($key);
        }
		$data      = Cache::get($key);
		if($data && $iscache){
			return $data;
		}
		$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);
    	$res       = json_decode($res,true);
    	if(!isset($res['access_token'])){
    		return false;
    	}
    	Cache::set($key,$res['access_token'],($res['expires_in']-100));
    	return $res['access_token'];
	}
}

运行实例 »

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

感受:

在整个写的过程中可以说是很崎岖,因为我在之前也看过很多的教程来讲微信开发,但是始终为一头雾水,原因:所讲视频内容比较早,使用其方法,微信已经抛弃。在学的时候根本无法进行调通,虽然这只是一个简单的服务器配置。但是给了很大的动力、

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post