Tp5 微信公众号 获取用户信息 EasyWeChat使用

时间:2021-03-17 14:38:03   收藏:0   阅读:0

安装用composer 安装 EasyWeChat,这个就不说了!

安装后直接use使用;

以下代码是Fastadmin 框架里面写的   如果没用框架 就不用继承第5行

直接访问

test_send_template这个方法的地址即可实现授权微信登录然后发送模版消息(模版id等参数自行修改)

代码如下

  1 <?php
  2 
  3 namespace app\index\controller;
  4 
  5 use app\common\controller\Frontend;
  6 use EasyWeChat\Factory;
  7 use think\Config;
  8 use think\Db;
  9 use think\Session;
 10 
 11 class Index extends Frontend
 12 {
 13 
 14     protected $noNeedLogin = ‘*‘;
 15     protected $noNeedRight = ‘*‘;
 16     protected $layout = ‘‘;
 17 
 18     public function index()
 19     {
 20         return $this->view->fetch();
 21     }
 22 
 23     /**
 24      * 获取微信公众号
 25      *
 26      * @return void
 27      */
 28     public function get_wx_gzh_app()
 29     {
 30          $config = [
 31              ‘app_id‘ => Config(‘site.wx_app_id‘),//微信公众号的appid
 32              ‘secret‘ => Config(‘site.wx_secret‘),//微信公众号的密钥
 33          
 34              // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
 35              ‘response_type‘ => ‘array‘,
 36          
 37              //...
 38          ];
 39          
 40          //微信公众号的方法
 41          $app = Factory::officialAccount($config);
 42 
 43          return $app;
 44     }
 45 
 46     /**
 47      * 获取用户信息,没有授权的自动授权,类似登录
 48      * 
 49      * @return void
 50      */
 51     public function get_user()
 52     {
 53         
 54    
 55         $app = $this->get_wx_gzh_app();
 56         $oauth = $app->oauth;
 57 
 58         // 未登录或没openid数据的
 59         if (empty(Session::get(‘wechat_user‘))) {
 60 
 61             
 62             $url = $this->request->domain().‘/index/index/code‘;//改成当前类的 访问路径,可以写成封装方法,怕一些用户看不懂
 63             $oauth->scopes([‘snsapi_userinfo‘])->redirect($url);//获取用户信息跳转
 64             //非Tp框架的可能要return
 65 
 66             // 这里不一定是return,如果你的框架action不是返回内容的话你就得使用
 67             $oauth->redirect()->send();
 68         }
 69             
 70         $user = Session::get(‘wechat_user‘);
 71         
 72 
 73         
 74         // if(empty($user)){
 75         //     $url = $this->request->domain().‘/index/index/code‘;
 76           
 77         //     $oauth->scopes([‘snsapi_userinfo‘])->redirect($url);
 78         //     $oauth->redirect()->send();
 79         //     // $oauth->redirect()->send();
 80         // }
 81         // 已经登录过 QQ496631085
 82         // halt($user);
 83         return $user;
 84     }
 85 
 86 
 87 
 88     
 89     /* 
 90     * @Description: 公众号测试登录可以直接用获取用户信息来(get_user方法已实现此方法)
 91     * @return: 
 92     */     
 93     public function login()
 94     {
 95         $url = $this->request->domain().‘/index/index/code‘;
 96         $app = $this->get_wx_gzh_app();
 97         $app->oauth->scopes([‘snsapi_userinfo‘])->redirect($url);
 98 
 99         //这里不一定是return,如果你的框架action不是返回内容的话你就得使用
100         $oauth->redirect()->send();
101 
102     }
103 
104     /* 
105     * @Description: 公众号获取code
106     * @return: 
107     */   
108     public function code()
109     {
110         $app = $this->get_wx_gzh_app();
111         $oauth = $app->oauth;
112         $user = $oauth->user();
113         // halt($user);//可以自己打印看下
114         Session::set(‘wechat_user‘,$user->original);//获取到用户信息 自己可以存储
115         // var_dump($user->original);
116     }
117 
118 
119     /**
120      * 测试发送模版消息
121      *
122      * @param string $com_openid 微信公众号的openid
123      * @param string $keyword1 参数1
124      * @param [type] $keyword2 参数2
125      * @param string $path 跳转小程序路径
126      * @return void
127      */
128     public function test_send_template($com_openid=‘ooB8g6Hu3fa5P0oeMSpURFPVZRS4‘,$keyword1="测试订单消息",$keyword2=null,$path=‘/pages/u_xjdS/u_xjdS‘)
129     {
130 
131         $user = $this->get_user();
132 
133         $com_openid = $user[‘openid‘];
134         if(!$keyword2){
135             $keyword2 = date(‘Y-m-d H:i:d‘);
136         }
137         $app = $this->get_wx_gzh_app();    
138         $data = $app->template_message->send([
139             ‘touser‘ => $com_openid,//微信openid,
140             ‘template_id‘ => ‘_es-MdHZUO-voldjdevPADHj28JQ_t9bPzxowh_M8LM‘,
141             ‘url‘ => ‘https://he4966.cn/‘,
142             ‘miniprogram‘ => [
143                     ‘appid‘ => Config(‘site.app_id‘),
144                     ‘pagepath‘ => $path,
145             ],
146             ‘data‘ => [
147                 ‘first‘ =>[‘您好,测试发送订单信息,成功!‘,‘#173177‘],
148                 ‘keyword1‘ =>[$keyword1,‘#223177‘],//订单编号
149                 ‘keyword2‘ =>[$keyword2,‘#333177‘],//订单时间
150                 // ‘keyword3‘ =>[$service,‘#173177‘],
151                 ‘remark‘ =>[‘请忽略本条测试信息‘,‘#173199‘],
152 
153             ],
154         ]);
155         if($data[‘errmsg‘]==‘ok‘){
156             $this->success(‘发送成功!,可正常收到微信模版消息‘,‘/‘);
157         }else{
158             $this->error(‘发送失败‘.$data[‘errmsg‘]);
159         }
160         // return $data;
161     }
162 
163 }

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!