博主信息
博文 8
粉丝 0
评论 0
访问量 7270
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
写出对接微信服务器时 需要的数字签名程序,即生成signature-2018年5月31日
往昔流逝的博客
原创
1502人浏览过
  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

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学