gzh_app_id = $_REQUEST['gzh_app_id']; parent::__construct($this->gzh_app_id); } /** * 本平台作为第三方授权 * 授权完后传openid到目标站点设置(cookie不能跨域) * */ public function oauth_callback(Request $request) { v('oauth_callback_start'); $user = array(); try{ if(env('DEVELOP_MODE') == 'local'){ $user['openid'] = 'oKXfNs_4SvNpMZWOzNdJklWFEn8Y'; }else{ // 获取 OAuth 授权结果用户信息 v('oauth_callback_get_user'); $user = $this->app->oauth->setRequest($request)->user(); v('simple_user_data:');v($user); $user = $user->original; $data = array(); $data['appid'] =$this->gzh_app_id; $data['distribution_channel_id'] = isset($this->official_account['distribution_channel_id'])?$this->official_account['distribution_channel_id']:null; $data['openid'] = $user['openid']; // 如果unionid没有取到,则自定义1个 $my_unionid = $data['openid']; v('my_unionid:'.$my_unionid); $user['unionid'] = $data['unionid'] = isset($user['unionid'])?$user['unionid']:$my_unionid; // 去重在后台判断,支付号不需要保存用户 if(isset($this->official_account['official_account_type']) && $this->official_account['official_account_type'] =='third_platform_pay'){ v('oauth_third_platform_pay:'.$data['openid']); }else{ // 性能考虑,在h5那边保存用户 v('to_save_data');v($data); // $this->WechatApi->save_login_wx_user($data); } } } catch(\Exception $e){ v('oauth_callback_ept:'.$e->getMessage()); } $redirect_url = $request->get('redirect_url'); v('oauth_callback_direct_url0:'.$redirect_url); $openid = isset($user['openid'])?$user['openid']:''; $unionid = isset($user['unionid'])?$user['unionid']:''; if(strpos($redirect_url,'zsypay') > -1){ // v('has zsypay'); }else{ $redirect_url = urldecode($redirect_url); } if(strpos($redirect_url,'?') > -1){ $redirect_url = $redirect_url.'&openid='.$openid.'&unionid='.$unionid; }else{ $redirect_url = $redirect_url.'?openid='.$openid.'&unionid='.$unionid; } v('oauth_callback_direct_url:'.$redirect_url); return redirect($redirect_url); } /** * ydy.wangluogudu.com/user_oauth?gzh_app_id=wx6916de1267c67d50&redirect_url=http%3a%2f%2fydy.wangluogudu.com%2foauth%2fshow_openid%3fgzh_app_id%3dwx6916de1267c67d50 * 获取用户信息 */ public function user_oauth(Request $request) { v('third_check_user_auth_start'); $params = array(); $params['gzh_app_id'] = $request->get("gzh_app_id"); $params['redirect_url'] = $request->get("redirect_url"); $this->options['oauth']['callback'] .= '?'.http_build_query($params); // options改变了,这个app对象必须重新赋值 $this->app = WechatOP::app($this->options); v($this->options['oauth']['callback']); return $this->app->oauth->setRequest($request)->redirect(); } public function show_openid(Request $request) { echo '您的openid:'.$request->get('openid'); die(); } }