Blogger Information
Blog 8
fans 0
comment 0
visits 5795
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
写出对接微信服务器时 需要的数字签名程序,即生成signature-2018年5月31日
往昔流逝的博客
Original
1216 people have browsed it
  1. 首先使用ngrok:

    在本地项目 目录下输入:

    把ngrok.exe放在项目根目录下,然后:
    1.ngrok authtoken 验证码(如果你关闭了ngrok,这个验证码就会变)
    2.ngrok http 80

  2. 然后在项目里写入连接代码:

    在模型里的代码:

    <?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.weixintoken');

           $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'];
      }
    }

    在控制器中的代码:

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

    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'));
       }
    }

  3. 然后再微信里进行配置:

    先在基本配置里进行配置:

    捕获.PNG

    然后在开发者工具里选择公众平台测试账号里配置:

    捕获1.PNG

Correction status:qualified

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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!